express

    MSA(Microservices Architecture) 개발 방법론 알아보기

    MSA(Microservices Architecture)는 소프트웨어를 개발하는 방법론 중 하나로, 애플리케이션을 작은 독립적인 기능 단위인 마이크로서비스로 분해하는 아키텍처 스타일이다. 확장 가능한 서비스를 개발하고, 더 빠른 배포와 리소스 관리를 위해서 사용되는 MSA에 대해서 알아보고 기록을 남겨보고자 하였다. 🍅 MSA를 통해서 애플리케이션을 작은 조각으로 분할하여 개별적으로 개발, 배포, 확장할 수 있다. MSA의 핵심 아이디어는 각 마이크로서비스가 하나의 특정 기능을 수행하도록 설계되며, 이들은 서로 독립적으로 실행될 수 있다. 마이크로서비스는 작은 규모의 독립적인 서비스로 구성되며, 별도의 데이터베이스, 통신 메커니즘, 프로세스 등을 가지고 있을 수 있다. 각 마이크로서비스는 표준화된 API..

    Nginx를 사용하면 어떤 장점이 있을까? (express.js & React.js)

    서버에서 nginx를 사용하여 얻는 이점 (ex. express.js) 🍒 정적 파일 제공 엔진엑스는 정적 파일을 처리하는 데 특화되어 있다. Express에서 정적 파일(이미지, CSS, JavaScript 파일 등)을 처리하기 위해 별도의 미들웨어를 설정하고 관리해야하지만, 엔진엑스는 정적 파일을 효율적으로 처리할 수 있어 웹 애플리케이션의 성능을 향상시킬 수 있다. 🍒 로드 밸런싱 엔진엑스는 로드 밸런싱을 지원하여 여러 대의 백엔드 서버로 들어오는 요청을 분산시킬 수 있다. 이를 통해 트래픽을 분산하고 애플리케이션의 가용성과 성능을 향상시킬 수 있다. 🍒 Reverse Proxy 엔진엑스는 리버스 프록시로 사용할 수 있어 클라이언트 요청을 받아 애플리케이션 서버로 전달하고, 서버 응답을 클라이언트에..

    express의 template engine 사용하기 (ejs)

    스프링에서 많이 사용되는 JSP, Mustache, Thymeleaf와 같은 템플릿 엔진이 express에도 있을 것이라 생각하였다. 그러던 중 강의에서 pug(구 jade)라는 템플릿 엔진을 알게 되었다. 그런데, pug는 마지막 커밋이 꽤나 오래전(약 2년전)이었고 좀 더 많이 사용되는 템플릿 엔진을 찾아보았다. handlebars나 nunjucks과 같은 템플릿 엔진도 찾을 수 있었지만, 가장 많이 사용되는 ejs를 간단하게 사용해보고 설정과 사용법을 남기도록 하였다. // ./index.js const express = require("express"); const app = express(); // ejs 설정 app.set("view engine", "ejs"); // ejs를 사용한다. ap..

    React 빌드 후 정적 파일 서버에 올리기 (404 Error 해결)

    CRA 등을 이용하여 열심히 개발한 React 프로젝트를 빌드한 뒤, 이를 서버에 전달하여 정적 호스팅을 할 수 있다. 이 경우 자주 등장하는 문제가 바로 라우팅 된 페이지에서 새로고침을 하거나, root 경로('/') 곧바로 그 페이지에 접근하면 페이지를 찾을 수 없는 문제가 발생하는 것이다. 이는, SPA 환경에서 필연적으로 발생하는 문제로 내부에 라우팅은 JS에 의해 처리되고 실제 html은 맨 처음 한 번만 제공받기에 이런 문제가 발생한다. 대부분의 경우 별도의 설정이 없으면, build 폴더 내부의 index.html이 '/' 경로와 매칭되기에 최초 진입이나 '/' 경로를 시작으로한 라우팅에는 문제가 없다. 그러나 그 이외의 경로, 예를 들면 '/about'에 접근한다고 하였을 때 서버에서는 이..

    express 서버에서 요청한 클라이언트의 IP주소 확인하기

    서버에서는 클라이언트를 구별하기 위한 방법으로 ip주소를 확인할 수 있다. express에서는 이를 어떻게 확인할 수 있을지 알아보았다. const express = require("express"); const app = express(); const port = 8080; app.get("/", (req, res) => { res.send("Hello World!"); }); app.get("/ip", (req, res) => { const ip = req.headers["x-forwarded-for"] || req.ip; console.log("req.ip", ip); res.status(200).send({ ip, message: "Check Your Ip" }); }); app.listen(po..

    간단하게 노드 서버에서 로그 기록하기 (morgan 사용하기)

    노드를 사용한 서버에서 요청에 대한 로그를 남기기 위해서 미들웨어를 작성할 수 있다. 좀 더 편리한 방법으로 morgan이라는 라이브러리를 설치하여 사용할 수 있다. 난 express 환경에서 morgan을 사용해 보았다. const express = require("express"); const morgan = require("morgan"); const app = express(); app.use(morgan("dev")); 위와 같이 morgan을 사용하여 로그를 남길 수 있다. 인자로 설정을 넣을 수 있는데, 나는 dev설정을 사용하였다. combined, common, dev등의 설정이 있는데 앞의 두 개는 표준 Apache 로그에 관한 설정이고 dev는 개발용으로, 요청에 따라서 색상이 다른 ..

    Node.js 서버 생성하기 (with express)

    Node.js 환경에서 Express.js는 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크이다. http 모듈로 만드는 대신에 express를 사용하여 서버를 만들면, 미들웨어의 추가가 편하고, 자체 라우터를 제공한다. 이를 통해서 express로 더 쉽게 웹 서버를 만들 수 있다. 🥭 npm init으로 시작할 수 있다. 🥭 npm i express로 설치할 수 있다. express 역시 내부적으로는 노드의 http 모듈을 사용하고 있다. Nest.js도 내부적으로는 express를 사용한다고 하니, express는 node 백엔드 개발자라면 알아두어야 할 라이브러리이다. 🍏 npm install express 를 통해서 express를 설치해 사용할 수 있다. expres..