본문 바로가기
728x90

Express4

Rolling deployment를 위한 nginx 설정 프로젝트를 진행하면서 무중단 배포를 적용하기 위해 이리저리 찾아보면서 Nginx를 활용해 로드밸런싱을 해야 한다는 것을 알게 되었다. 그리고 이번 프로젝트에 적용하기 가장 적합해 보이는 Rolling 배포 방식을 간단히 구현해 보았다. 현재 AWS EC2를 사용 중이기 때문에 Blue-green을 사용할 거면 인스턴스를 종료하고 시작하는 방법이 필요하다. 이 부분을 자동화시키고 싶어서 AWS 람다를 고려했으나 람다 권한이 없어서 적용하지 못했다. 결국 추가 인스턴스가 필요 없는 Rolling이 가장 적합하다 판단했다. 간단한 서버 세팅 Nginx 설정이 중점이므로 express로 정말 간단한 서버 두대만 띄웠다. 코드는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .. 2022. 10. 3.
웹소켓 웹 소켓을 HTML5에서 새로 추가되었고 실시간 양방향 데이터 전송을 위해 만들어졌다. 웹소켓은 WS프로토콜을 사용하고 대부분의 최신 브라우저는 이를 지원한다. 노드에서 WS를 사용하는 대표적인 방법은 ws 또는 Socket.IO 패키지를 사용하는 것이다. 이 방식을 사용하면 한번의 연결 후 지속적으로 연결이 유지되서 업데이트가 발생하면 서버가 자동으로 클라이언트에게 알린다. 또 한 HTTP와 포트를 공유한다. Polling 웹 소켓이 나오기 이전에 실시간 데이터 전송을 위해 사용했던 방법이다. 이는 HTTP가 클라이언트->서버형태의 통신이므로 주기적으로 서버에 업데이트가 있는지 확인을 하고 있다면 반환하는 방식이다. Server Sent Events(SSE) 이 기술은 EventSource라는 객체를 .. 2021. 1. 21.
미들웨어 메서드와 주소가 있는 것을 라우터라 부르는데 이 라우터를 여러개 생성하다 보면 중복된 코드를 사용하는 경우가 생긴다. 이때 중복 사용되는 코드를 일일이 적지 않고 미들웨어를 사용하면 코드가 더 깔끔해 진다. express는 미들웨어로 구성되 있고 app.use(미들웨어)의 형식으로 사용된다. 미들웨어는 req, res, next가 매개변수인 함수를 위미하며 위에서 아래로 실행된다. 미들웨어는, 라우터는 조건이 일치하는 것을 찾아 실해이하기 때문에 범위가 작은거 부터 범위가 큰 순으로 코드를 작성해야 한다. 미들웨어는 기본적으로 조건이 충족되면 실행하고 다음으로 넘어가지 않는다. 따라서 미들웨어 맨 마지막에 next();를 추가해야 다음 미들웨어로 넘어간다. 또 한 try{....}catch(err}{ne.. 2020. 11. 26.
express html 파일 서빙하기 express로 html 파일을 서빙하기 위해서는 res.send()대신 res.sendFile()을 사용하면 된다 위 예제에서 파일을 서빙할때 path.join(__dirname, './public/index.html');을 사용했다. path는 운영체제 별로 경로를 표시하는 방법이 다른 문제를 해결해 주는 모듈이다. path.join()은 상대경로를 합쳐 절대 경로로 바꾸어 준다. __dirname은 현재의 경로를 의미하고 './public/index.html'은 원하는 파일의 경로이다. 2020. 11. 26.
728x90