미들웨어 패턴(Middleware Pattern)이란?
미들웨어 패턴은 소프트웨어 엔지니어링에서 클라이언트 요청과 서버 응답 사이에 위치하는 중간 처리 계층을 의미하는데 이 패턴을 통해 개발자는 요청 처리 파이프라인에 여러 처리 단계를 도입할 수 있으며, 각 단계는 순차적으로 요청을 처리하고, 필요에 따라 다음 미들웨어로 요청을 전달하거나 응답을 반환할 수 있습니다.
예시
미들웨어 패턴은 Node(Express)에서 사용하여 로깅, 인증, 세션 관리 등의 기능을 구현할 때 어떻게 구현하는 지 예시를 들어보겠습니다.
app.js
const express = require('express');
const app = express();
// 로깅 미들웨어
app.use((req, res, next) => {
console.log(`${new Date().toString()}: ${req.method} ${req.url}`);
next(); // 다음 미들웨어로 요청을 전달
});
// 인증 미들웨어
app.use((req, res, next) => {
// 인증 로직 구현
const isAuthenticated = true; // 예시를 위한 가정
if (isAuthenticated) {
next();
} else {
res.status(403).send('Unauthorized');
}
});
// 메인 요청 처리기
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
장점
미들웨어를 사용하면 애플리케이션의 로직을 작고 재사용 가능한 부분으로 나눌 수 있기 때문에 코드의 모듈성을 향상시키고 유지 관리를 용이하게 해줍니다.
그리고 요청 처리 파이프라인에 쉽게 추가, 제거, 재배치할 수 있어 애플리케이션의 기능을 유연하게 확장하거나 변경할 수 있습니다.
또, 일반적인 기능(예: 로깅, 인증, CORS 처리)을 미들웨어로 구현하면 다른 프로젝트에서도 쉽게 재사용할 수 있습니다.
단점
여러 미들웨어가 순차적으로 실행되는 경우, 특히 요청이 예상대로 처리되지 않을 때 디버깅이 어려운 점이 있고, 많은 수의 미들웨어를 사용하면 각 요청의 처리 시간이 증가할 수 있어 전체 애플리케이션의 성능에 영향을 줄 수 있으니 유의 하시기 바랍니다.
오늘 알아본 미들웨어 패턴은 특히 Express.js와 같은 프레임워크에서 자주 사용하는 디자인 패턴입니다.
이 패턴을 통해 개발자는 애플리케이션의 요청 처리 로직을 유연하게 구성하고, 코드의 재사용성과 모듈성을 높일 수 있지만 미들웨어의 사용은 디버깅의 복잡성을 증가시킬 수 있고, 무분별한 사용은 성능 저하를 초래할 수 있으므로 애플리케이션 수준에서 공통적으로 처리해야 하는 로깅, 인증, 요청 데이터 파싱 같은 기능이 필요할 때나 특정 API 엔드포인트 그룹에 대한 접근 제한이나 요청 데이터의 검증 등, 특정 경로나 그룹에 대한 전처리가 요구되는 상황에서 사용하면 좋습니다.
'프로그래밍(Basic) > 디자인 패턴(JS)' 카테고리의 다른 글
[바미] 스트래티지 패턴(Strategy Pattern) (0) | 2024.03.30 |
---|---|
[바미] Command 패턴 (0) | 2022.10.17 |
[바미] Compound 패턴 (1) | 2022.10.07 |
[바미] - Hooks 패턴 (2) | 2022.10.04 |
[바미] Render Props 패턴 (0) | 2022.09.25 |