# middleware

190개의 포스트

미들웨어 정리 (3) - Elastic Search

Elastic Stack 데이터 수집, 저장, 검색, 시각화 및 분석을 위한 오픈 소스 플랫폼 Kibana - ElasticSearch를 기반으로 데이터를 시각화하고 대시보드를 작성하는 데 사용되는 오픈 소스 시각화 도구 Elasticsearch - 검색 및 분석을 위한 오픈소스 검색엔진으로 Json 문서를 저장하고 쿼리할 수 있으며 대량의 데이터를 실시간으로 확인하고 검색할 수 있다. Logstash - 애플리케이션의 로그를 수집하여 Elasticsearch 로 전송하는 역할을 담당하는 오픈소스 데이터 수집 도구 Beats - 경량 데이터 수집기로, 다양한 종류의 데이터를 수집하여 Elasticsearch 또는 Logstash로 전송 Elastic Sea

4일 전
·
0개의 댓글
·
post-thumbnail

미들웨어 정리 (2) - Kafka

Kafka 웹사이트, 어플리케이션, 센서 등에 취합한 데이터를 스트림 파이프라인을 통해 실시간으로 관리하고 보내기 위한 분산 이벤트 스트리밍 플랫폼으로 데이터 생산자와 소비자 사이의 중재자 역할을 함으로써 데이터의 전송 제어, 처리, 관리 역할을 한다. Kafka를 사용하는 이유 before after 카프카를 사용함으로써 모든 데이터와 이벤트의 흐름을 중앙에서 관리할 수 있게 되었다. 카프카의 기본 구성 요소 Cluster - 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는

2023년 9월 19일
·
0개의 댓글
·

미들웨어 정리 (1) - MQTT, Redis, PostgreSQL

도커 환경설정 MQTT TCP/IP 프로토콜 위에서 동작하는 발행 구독 기반의 경량 메시징 프로토콜 IoT와 같은 제한된, 혹은 대규모 트래픽 전송을 위해 만들어진 프로토콜이기에 TCP/IP 프로토콜 위에서 동작하지만 동시에 굉장히 가벼우며, 많은 통신 제약들을 해결해준다. MQTT의 발행 구독 메시징 패턴은 오로지 브로커를 통해서만 통신할 수 있다. Message Queue 프로세스 / 프로그램 간에 데이터 를 교환하는 통신 방법 중 하나로, 메시지를 임시로 저장하는 간단한 버퍼라고 생각하면 된다. 여기서 메시지란 요청 응답 데이터 등 이다. QoS (Quality of Service) 서비스 품질 레벨 0 : 최대 한 번 - 메시지는 최대 한 번

2023년 9월 19일
·
0개의 댓글
·
post-thumbnail

Node.js express Middleware

Middleware 란? > 웹 요청과 응답에 대한 정보를 사용해서 필요한 처리를 진행할 수 있도록 분리된 함수 요청과 응답 중간에 위치하여 미들웨어 req, res , next 가 매개변수인 함수 next()로 다음 미들웨어로 넘어감 기본 예시 var express = require('express'); var app = express(); // app.use가 미들웨어가 아니라 app.use()의 인자안의 함수가 미들웨어 app.use(function (req, res, next) { req.requestTime = Date.now(); // req라는객체에 requestTime 키와 밸류를 래퍼로 등록. requestTime는

2023년 9월 15일
·
0개의 댓글
·
post-thumbnail

NGINX 따라하기

엔진엑스보다 아파치-톰캣이 더 익숙하긴 하지만 사실 둘 다 겉핧기 수준으로만 알고 있다. 우연히 기회가 되어 OpenInfraDays2023에 참가했었는데 여기서 nginx cookbook을 득템했다. 시간이 남아 따라해보려고 했는데.. 첫 설치부터 막히길래 찾아보니 초판 1쇄판이 있고 최신 버전인 2판을 따라해야 진행 가능한 듯 싶었다. 정말 감사하게도 f5, nginx (f5라는 기업에 엔진엑스 솔루션이 있는듯.. f5라는 네트워크, 클라우드 전문 기업이 엔진엑스를 인수한 것 같다.) 여기에서 최신 쿡북을 다운로드 할 수 있다. 초판은 배포판 별로 코드네임을 변경해서 입력해야 했는데 최신버전은 그냥 명령어만

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

[Nest.js] Nest.js_2

Nest.js 기초 1. Providers, 의존성 주입(DI) CatsService를 export Cats모듈에 있는 내용을 App모듈에서 사용하려면 먼저 Cats모듈에 있는 Service를 exports배열에 추가해줘야 한다. CatsService를 AppModule에 추가 AppController에서 사용 exports배열에 추가된 Cats모듈의 서비스는 App.module에서 imports에 CatsModule이 추가되어 있으므로 App모듈에서 사용이 가능하다. ![](https://velog.ve

2023년 8월 23일
·
0개의 댓글
·

NextJS middleware

프로젝트의 모든 경로에서 실행되는 미들웨어는 어떠한 요청전에 무언가를 실행할 수 있는 함수이다. 미들웨어를 사용할 때, 우리 프로젝트가 src 폴더를 사용한다면 src 폴더 최상단, 또는 페이지와 같은 레벨에서 사용해주면 된다. 기본적인 이해가 없이 쉽게 설명하면 미궁에 빠지게 될 수 있으니, 우선 코드를 보며 정리하겠습니다. 어떠한 요청전에 실행한다는거 + 모든 경로에서 실행된다 라는 걸 생각하며 아래 코드를 보면 이해가 빠를 수 있습니다. 요청을 그대로 실행시켜주는게 아니라 중간에 낚아채 지가 /home 으로 보내버리는 응답을 하고 있습니다. 예시 코드 이쯤에서 redirect 와 rewrite 에 대한 개념을 짚고 넘어가겠습니다. redirect next.config.js 에서 작성한 redirect 코드입니다. 파일상의 redirect 사용도 가능합니다. 위 코드에서 기존에 사용하던 경로는 /products/deleted 라

2023년 8월 17일
·
2개의 댓글
·
post-thumbnail

[BE] Socket.io와 Express 미들웨어 연동하기

Socket.io에서 Express의 session 미들웨어를 사용하려고 하니 express의 미들웨어는 (req, res, next)의 형태이지만, socket.io의 미들웨어는 (socket, next)의 형태이다. 따라서 wrap이라는 함수를 만들어서 Socket.io와 Express 미들웨어를 연동했다. 1. sessionMiddleware를 분리하고, webSocket의 변수로 넘겨준다. 2. wrap함수 wrap은 고차 함수로서, 하나의 미들웨어 함수를 인수로 받아들여, Socket.io 미들웨어 형태로 반환한다. Socket.io 미들웨어는 (socket, next) => {} 형태를 갖는다. wrap의 목적은 Socket.io의 소켓 객체에서 request 객체를 가져와 Express 미들웨어에 제공하고, 그 후에 next 콜백을 호출하는 것이다. 3. 사용방법 chat라는 Socket.io 인스턴스(또는 namespace)

2023년 8월 14일
·
0개의 댓글
·
post-thumbnail

[오류대잔치] req is not defined

로그인 기능 구현 중 req is not defined라는 오류가 발생했다. 로그인 오류 로그에 나와있는 부분에 가보니 login함수에 req, res, next 인자를 적어주지 않은것을 확인할 수 있었다. login함수에 req, res, next를 적어주니 성공적으로 로그인이 된것을 확인할 수 있었다. ![](https://velog.velcdn.com

2023년 8월 12일
·
1개의 댓글
·

[node] middleware 정리

Middleware A tool that helps develop Node.js based applications by automatically restarting the node application when file changes in the directory are detected. 요청과 응답의 중간에 위치하며, 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수 1) morgan morgan 연결 후 localhost에 재접속 해보면 기존 로그 외에 추가적인 로그 확인 가능 app.use(morgan('dev')); dev, combined, common, short, tiny 등 2) static 정적인 파일들을 제공하는 라우터 역할 기본적으로 제공됨으로 따로 설치할 필요 없음 app.use('/', express.static(path.join(__dirname, 'public'))); public/stylesheets/sty

2023년 8월 11일
·
1개의 댓글
·
post-thumbnail

[NestJS] LoggerMiddleware 로 로그 남기기

공식 문서 : https://docs.nestjs.com/middleware 기본 형태 커스텀 method, url statusCode를 일단 제일 윗줄에 남기고 request의 params, query, body, headers를 남기고 마지막으로 response의 status와 body를 남기도록 커스텀하였다. 사용법 AppModule 클래스에 위와 같이 등록하면 된다. 이와 같이 하면 모든 경로에 미들웨어를 적용시키는 건데 나는 헬스체커로 계속 요청이 가는 /heath 경로만 제외 시켰다. 로그 예시 성공 시 에러났을 시 이거는 로그 두개가 같이 남은 경우이다. db에러 같은 에러가 났을 시에는 그 즉시 로그에 대한 에러를 남기고 미들웨어를 통해서 그 에러가 난 요청과 응답에 대한 기본적인 로그도 또 남게 된다. 두개를 같이보면 에러에 대한 정보를 상세히 알고 빠르게 해결하기 용이할 것이다. 슬랙 알림

2023년 7월 26일
·
0개의 댓글
·

[NestJS] Middleware

Middleware Middleware는 route handler보다 먼저 호출되는 함수다. 미들웨어의 기능은 애플리케이션의 요청-응답 주기에서 요청 및 응답 객체와 next() 미들웨어 기능에 액세스할 수 있다. NestJS의 Middleware는 기본적으로 Express Middleware와 동일하다. 다음은 공식 Express 문서에서 Middleware의 기능을 설명한다. 모든 코드를 실행한다. 요청 및 응답 객체를 변경한다. 요청-응답 주기를 종료한다. 스택에서 다음 미들웨어 함수를 호출한다. 현재 미들웨어 기능이 요청-응답 주기를 종료하지 않으면 next()를 호출하여 다음 미들웨어 기능으로 제어를 전달해야한다

2023년 7월 24일
·
1개의 댓글
·
post-thumbnail

[React] 미들웨어(middleware) : redux-thunk & redux-logger 란?

미들웨어란❓ 리덕스(또는 다른 상태 관리 라이브러리)에서 액션이 디스패치(dispatch)되어서 리듀서에 도달하기 전에 가로채고 처리하는 함수로 미들웨어는 액션과 리듀서 사이의 중간자라고 볼 수 있다.. 미들웨어는 액션과 상태 사이에서 동작하여 액션을 로깅하거나, 비동기 작업을 처리하거나, 특정 조건에 따라 액션을 수정하는 등의 기능을 추가적으로 수행할 수 있습니다. 필요한 이유? 비동기 작업 처리: 네트워크 요청이나 데이터베이스 접근과 같은 비동기 작업을 처리할 수 있습니다. Redux에서는 기본적으로 동기적으로 작동하므로, 미들웨어를 사용하여 비동기 작업을 처리할 수 있게 됩니다. 로깅: 액션을 디스패치할 때 미들웨어를 이용하여 액션의 정보를 로그에

2023년 7월 20일
·
1개의 댓글
·
post-thumbnail

NESTJS를 배워보자(6) - Middleware

Middleware nest의 공식문서를 토대로 작성합니다. 미들웨어는 route handler 전에 호출되는 함수입니다. 미들웨어 함수는 애플리케이션의 요청-응답 주기에서 요청, 응답 객체와 next() 미들웨어 함수에 접근할 수 있습니다. next 미들웨어 함수는 일반적으로 next라는 변수로 표시됩니다. 기본적으로 Nest 미들웨어는 express 미들웨어와 동일합니다. 공식 express 문서의 다음 설명은 미들웨어의 기능에 대해 설명합니다. > 미들웨어 함수가 수행할 수 있는 작업 코드를 실행 요청 및 응답 객체를 변경 요청-응답 사이클 종료 스택에서 다음 미들웨어 함수를 호출 현재 미들웨어 함

2023년 7월 13일
·
0개의 댓글
·
post-thumbnail

NestJS Tutorial (5) - Middleware

Middleware 미들웨어는 Route Handler 보다 먼저 호출되는 함수입니다. Controller에 넘어가는 HttpRequest를 사전에 캐치하여 특정 작업을 수행할 수 있습니다. 보안을 위해 권한 검사를 해당 단계에서 실행할 수 있습니다. next() 함수를 통해 다음 단계로 제어를 전달합니다. 생성 특정 Request에 ‘Http Request is coming...’ 라는 console를 출력하는 Middleware를 생성해보겠습니다. 해당 cli를 통해 middleware 객체를 생성하면 다음과 같은 파일이 생성됩니다. 현재 request, response가 모두 any로 되어있으므로 다음과 같이

2023년 6월 26일
·
0개의 댓글
·
post-thumbnail

Middleware

리덕스 미들웨어 함수를 연달아서 2번 리턴하는 함수 > Middleware는 redux가 지니는 핵심기능 > 리덕스 미들웨어를 사용하면 action이 dispatch된 다음, reducer에서 해당 action을 받아서 업데이트 하기 전에 추가적인 작업을 할 수 있다. > 추가적인 작업 ex) 비동기 작업 처리 백엔드 API 연동 특정 조건에 따라 액션이 무시되게 만들 수 있다. 액션을 콘솔에 출력하거나, 서버 쪽에 로깅을 할 수 있다 액션이 디스패치 됐을 때 이를 수정해서 리듀서에게 전달할 수 있다. 특정 액션이 발생했을 때 이에 기반하여 다른 액션이 발생되도록 할 수 있다. 특정 액션이 발생했을 때 특정 자바스크립트 함수를 실핼시킬 수도 있다. 기본 예시 ContextAPI와 차별화되는 부분 액션 ---> 미들웨어 ---> 리듀서 ---> 스토어 리덕스 미들웨어 라이브

2023년 6월 24일
·
0개의 댓글
·

[Express.js] 미들웨어

미들웨어는 HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수 미들웨어 작성법 req req next를 인자로 갖는 함수를 작성하면 미들웨어가 된다 req, req객체를 통해 HTTP 요청과 응답을 처리하거나 next함수를 통해 다음 미들웨어를 호출해야 함 => next함수가 호출되지 않으면 미들웨어 싸이클이 멈춘다 미들웨어 종류 1. 어플리케이션 미들웨어 use나 http method 함수를 사용하여 미들웨어를 연결할 수 있음 HTTP 요청이 들어온 순간부터 적용된 순서대로 동작 2. 라우터 미들웨어 특정 경로의 라우팅에만 미들웨어를 적용하기 위한 방법 사용방법은 어플리케이션 미들웨어와 같다 app 객체에 라우터가 적용된 이후로 순서대로 동작함 3. 오류처리 미들웨어 일반적으로 가장 마지막에 위치하는 미들웨어로 err, req, res, next 네 가지의 인자를 가진다. 이전에 적용된 미들웨어

2023년 6월 22일
·
0개의 댓글
·
post-thumbnail

미들웨어란 무엇인가..

미들웨어가 뭔데 미들웨어는 요청(request)과 응답(response) 사이에서 동작하는 함수로 말 그대로 중간에 위치한 함수다 조작: 요청의 헤더를 검사하거나, 응답에 특정 헤더를 추가할 수 있다. 헤더를 검사하여 인증 토큰의 유효성을 확인하는 미들웨어 중간 단계 추가: 요청 또는 응답의 처리 중간에 추가적인 동작을 수행할 수 있다. 로그인이 필요한 페이지에 접근하기 전에 사용자의 인증 여부를 확인하는 미들웨어 (마이 페이지나 관리자 페이지) 데이터를 검증하고 오류가 있을 경우 에러 응답을 보내는 미들웨어 주기 제어: 미들웨어는 요청과 응답 사이의 주기를 제어할 수 있다. 요청이 발생한 시간을 기록하고 응답 헤더에 추가하는 미들웨어 요청에 대한 로깅을 수행하는 미들웨어 미들웨어 쓰기 next: 다음 스택으로 정의된 미들웨어를 호출 여러개의 미들웨어가 겹치는 경우, 첫번째 미들웨어부터 순차적으로 진입

2023년 6월 21일
·
0개의 댓글
·
post-thumbnail

[NodeJs]:: 미들웨어 기본 정보 및 특성 활용

미들웨어 특성 다음 미들웨어로 넘어가려면 next() 함수 호출 기본 형식 미들웨어 1-1. 다중 미들웨어 특정 url에 반응하는 미들웨어 에러 처리 미들웨어 (매개변수가 err, req, res, next로 네 개) 특별한 경우가 아니면 가장 아래에 위치 미들웨어간 데이터 전달 req.session 객체에 데이터를 넣어도됨 (세션 유지되는 동안 데이터가 계속 유지됨) 요청이 진행되는 동안만 데이터를 유지하고자 하면 res.locals객에체 데이터 넣어둠. 새로운 요청이 오면 res.locals는 초기화 app.set / app.get으로도 데이터 저장 가능하나 전역적으로 사용되므로 부적합. 미들웨러 라이브

2023년 6월 10일
·
0개의 댓글
·
post-thumbnail

[TIL] 개발일지 2일차

NodeJS Docker를 진행하기 전에 NodeJS의 테스트와 구조부터 만들었다. npm init package.json 구성 이게 바로 NodeJS이며 package.json을 보면 떠오르는 것은 maven, gradle 말그대로 패키지 버전 등을 관리해준다는 측면에서 사실상 비슷해보인다. 물론 NodeJS의 경우 V8엔진을 내장하고 있어 Javascript의 **런타임환경을 브라우

2023년 5월 26일
·
0개의 댓글
·