redux는 SinglePageApplication framework와 함께 사용 가능하다.
redux는 복잡성, 많은 패키지와 보일러플레이트 코드로 인해 redux-toolkit으로 대체되고 있다.
공식 홈페이지에선,
Redux Toolkit은 Redux 코어 뿐 아니라 저희가 Redux 앱을 만들 때 필수적이라고 느낀 패키지들을 포함 (Redux Thunk나 Reselect 등)한다고 한다.
실은, react를 배울때 멋진 팀원덕에 처음부터 redux-toolkit을 써서 redux의 불편함을 잘 알진 못한다.(이에 자세히 알고 싶다면 참고 링크를 보길 바랍니다.)
그래서 왜 redux-toolkit을 썼나요?
라는 질문에 대답을 못했다.
찾아보던중 middleware에 대한 개념을 잘 못잡고 있는 나를 발견했고, 이거라도.. 타파하고자 한다.
1. 미들웨어란 무엇일까 ?
우선 미들웨어란 용어는 광범위하다는걸 이해해야 미들웨어를 더는 쳐다보지 않을 수 있을듯하다.
필자는 프론트에서 쓰는 미들웨어랑 일반 CS에서 쓰는 미들웨어가 헷갈렸다.
결론적으론 둘다 그냥 미들웨어라고 부르는거 뿐.
'미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어'이다.
예를 들어 Windows 프런트엔드 애플리케이션은 Linux 백엔드 서버에서 데이터를 송수신하지만, 애플리케이션 사용자는 그 차이를 인식하지 못합니다.
좀 더 자세하게는 밑에 두 링크에서 잘 정리해주었으니 참고 바랍니다.
프론트에서의 미들웨어 이해하기
https://hw00173.tistory.com/m/84
[Web] Node express 미들웨어
Node express 사용에 있어 미들웨어라는 개념을 이해하기 위해 참고한 링크입니다. https://velog.io/@wjddnjswjd12/node.js-express-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4%EB%9E%80 node.js, express, 미들웨어란? 구글의 크롬 v8
hw00173.tistory.com
미들웨어 아키텍처 이해하기
https://gggggeun.tistory.com/m/140
미들웨어(Middleware)
1. 미들웨어의 정의들 두 매개체 양쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할(레이어)을 하는 소프트웨어 두 매개체는 운영체제/응용소프트웨어가 될 수도 있고 클라이언
gggggeun.tistory.com
AWS에서 설명해주는 미들웨어
https://aws.amazon.com/ko/what-is/middleware/
미들웨어란 무엇인가? - 미들웨어 설명 - AWS
미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어입니다. 미들웨어는 더욱 빠르게 혁신할 수 있도록 애플리케이션을 지능적이고 효율적으로 연결하는 기능을 제공
aws.amazon.com
미들웨어는 함수이며, req, res,next의 인자를 가진다.
미들웨어 함수는 요청오브젝트(req), 응답오브젝트(res), 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수이다.
req -> middleware -> res (next있으면 거기로 보냄)
미들웨어는 익스프레스에 있지 않은 기능을 직접 구현할 수도 있음.


//using express middleware (expressjs.com)
const express = require('express');
const app = express();
// 미들웨어 찾아서 들렸다 감
// 상단에 쓴 이유: 어딜가든 꼭 써서 할것 글로벌하게 명시
app.use(login);
app.get('/', (req,res,next) => {
// 익명함수인것
console.log('homepage')
res.send("<h1>homepage</h1>)
});
//auth 미들웨어 실행 후 익명함수 실행
app.get('/users'/, auth, (req,res,next) => {
console.log('user', req.admin) //true
res.send("<h1>USERS</h1>")
//next가 없으면 응답 끝남을 의미 다른함수 수행안함 (next가 있으면 app.use부터 다시 시행함)
)}
//간단한 미들웨어 만들기
function login(req, res, next){
console.log('login')
//로그인 후 홈페이지 혹은 유저페이지 실행
next();
}
//users == 마이페이지 가기 직전에 쓰려고 함
function auth(req, res, next){
console.log('authentication....', req.originalUrl)
//연관된 미들웨어는 공통된 req를 씀
if(req.query.admin === "true"){
req.admin = true;
next();
}
else{
res.send("no auth!")
}
next();
}
app.listen(1000); //1000번 포트에서 실행시켜줌
정의: 운영체제와 소프트웨어의 중간에서 조정과 중개의 역할을 해주는 소프트웨어
- dns, l3 l4 --> 서버
- OLTP
- database에서 병목현상이 생긴다.
-> 그래서 map을 이용해서 캐시를 써준다.
-> redis같은걸로 cashing시키면 됨
-> 이렇게 없으면 디비에 병목이 생김
- 웹소켓같은 경우엔 dns --> 서버 사이에서 부하가 생길 수 있다.
- 통합DB
클러스트링: mysql, replication 등 N개의 분산DB를 함께 쓰는것을 말함
회원한명이 가입했는데 디비가 물리적으로 다르다.
insert 하다가 에러나면 roll back 해줘야함
- 분산디비에서 try catch로 묶겠죠
- 실패하면 롤백
- 커밋한경우엔 딜리트 해줘야함
JOTM (java object transacion management)
이런걸 처리해줄 수 있는 OLPT middleware를 하나 두는 것
transation
db와 서버 사이 중간에 있는걸 미들웨어
middleware.I(db)에 들어갈거
middleware.d(db)에 들어갈거
https://www.youtube.com/watch?v=sB5YRnrp0H4
참고
Why Redux-toolkit is better than Redux?
In modern single-page applications, the concept of State Management has changed the way we access data and design the entire application…
medium.com
Redux Toolkit으로 리덕스 쉽게 사용하기
지적되어온 Redux의 문제점들 리덕스(Redux)는 리액트(React)의 상태 관리 라이브러리 중 대표로서 굳게 자리매김하고 있었지만, 그동안 리덕스가 사용하기 너무 복잡하고 배우기 어렵다는 의견이
cocoder16.tistory.com
'frontend > React' 카테고리의 다른 글
| [react-i18next] 한영 번역 라이브러리 (0) | 2023.10.20 |
|---|---|
| [오류] Type '{ children: Element[]; }' has no properties in common with type 'IntrinsicAttributes'. (0) | 2022.09.04 |