1.0 들어가기 전 포스팅이 늦어져서 죄송합니다. 개인 사정으로 인해 프로그래밍과 블로그를 할 시간이 여의치 않았습니다. 이전에 만든 NodeAuction을 프로덕션으로 배포하기에는 여러 가지 문제점이 있습니다. 그중 크게 두 가지, 아래와 같은 내용을 살펴보겠습니다. 1. 로드밸런싱 부재 2. 잦은 Database의 접근 1.1 Node.js에서 로드밸런싱 Node.js에서 로드밸런싱 방법으로는 Cluster 모듈을 사용, pm2 라이브러리 사용 또는 NginX를 경유하여 서버에 접근하도록 설계를 해주시면 됩니다. 저희는 이중 NginX를 사용하여 로드밸런싱을 하겠습니다. 1.2 잦은 Database의 접근 Database에 접근하는 작업은 비교적 비용이 큰 작업입니다. 그렇다고 Database에 접근..
Node.js 교과서 2022년 개정판으로 코드를 살짝 변경했습니다. 1.0 들어가기 전 1.1 변경 사항 (Node.js 교과서 2022 개정판 참고 by.zeroCho) 1. Sequelize Model 정의 부분 기존 : define으로 정의 변경 : Sequelize.Model 상속받아 구현 2. 로직 변경 기존 : router안에 controller 구현 : routes(controller 포함) + services 변경 : router와 controller 분리 : routes + controllers + services 자세한 변경사항을 코드로 확인해 보실 분은 포스팅 맨 아래 깃허브 주소를 기재해 놓았습니다. 1.2 스스로 해보기 문제 총 4문제 풀이 1. 상품 등록자는 참여할 수 없도록 ..
Node.js 교과서 2018년도 책 기준이라 개정된 책이랑 코드가 다릅니다. 1.0 들어가기 전 프로그램 작성 시 코드를 하나의 파일에 작성하게 된다면 상당히 지저분해 가독성이 떨어지는 것은 물론 유지보수와 확장성마저도 떨어집니다. 물론 짧은 코드 경우에는 크게 상관이 없지만 코드가 길어지면 코드 분할은 불가피합니다. 코드 분할 시 원칙 몇 가지만 빠르게 설명드리고 NodeAuction 코드에 적용해 보겠습니다. 1.1 중복되는 코드 최소화 중복되는 코드는 쉽게 의미 있는 함수로 만들어 사용할 경우 코드를 읽을 때 쉽게 이해할 수 있습니다. 예시로 테스트 코드에서 헤더에서 쿠키를 읽어 csrf token을 발급받고 로그인 요청하는 코드입니다. const request = require('supertes..
GitHub - dotredbee/SampleWebTokenSign: Sample jwt authentication server with csrf security Sample jwt authentication server with csrf security - GitHub - dotredbee/SampleWebTokenSign: Sample jwt authentication server with csrf security github.com 1.0 사용자 식별 서버에서 제공하는 서비스를 이용하기 위해서는 권한이 필요합니다. 서버 내의 데이터 접근을 누구한테나 허용하면 안 되기 때문입니다. 그래서 우리는 특정 사이트의 서비스를 이용하기 위해 회원가입을 하여 권한을 받고 서비스를 이용합니다. 회원가입 후 로그인..
해당 포스트는 자바스크립트의 기본 문법을 알고있다는 가정하에 작성된 글이며, Node.js 디자인 패턴 책을 참고해 작성된 된 글입니다. 캐시 서버를 운영하다보면 트래픽이 자주 발생되는 동일한 요청이 발견됩니다. 매 동일한 요청마다 연산을 다시 진행하여 클라이언트로 요청을 보내는 일은 상당히 효율적이지 못합니다. 이 부분을 오늘 캐싱을 통해 처리하는 방법을 알려드리고 캐시로 소비되는 메모리를 일정하게 유지하기위한 방법으로 LRU 알고리즘이 적용된 캐시 라이브러리를 사용해보겠습니다. 캐시 구현은 간단한편입니다. 위의 로직대로 작성해보겠습니다. const totalSales = require('./totalSales') // 캐시 const cache = {} /** * * 아이템 이름이 캐시 유효기간내에 ..
[Node.js 개발자 되기] 3. 코드 정리하기 [Node.js 개발자 되기] 2. REST를 이용한 CRUD [Node.js 개발자 되기] 1. REST 이해하기 REST 1. REST란? REST란 자원의 이름을 구분하여 자원의 상태를 주고받는 과정을 말합니다. 쉽게 풀어서 말하자면 Client와 pventi.tistory.com 그래도 보이는 맛이 있어야 개발하는 재미가 있으므로 기본적인 디자인만 빠르게 적용시켜 놨습니다. Home Read 디자인을 다 입혀놓으니 그럴 듯 합니다. GitHub - dotredbee/rest-basic: rest-basic server 1 rest-basic server 1. Contribute to dotredbee/rest-basic development by ..
[Node.js 개발자 되기] 2. REST를 이용한 CRUD [Node.js 개발자 되기] 1. REST 이해하기 REST 1. REST란? REST란 자원의 이름을 구분하여 자원의 상태를 주고받는 과정을 말합니다. 쉽게 풀어서 말하자면 Client와 서버가 손쉽게 대화(요청, 응답)하는 과 pventi.tistory.com 세션과 쿠키로 넘어가기 전에 파일을 보시면 상당히 코드가 길어 가독성이 떨어집니다. 더 진행하기 전에 코드를 깔끔하게 다듬겠습니다. express에는 라우터라는 기능이 있습니다. 네트워크를 공부해 보신 분들은 라우터라는 단어를 보자마자 무슨 뜻인지 아실 겁니다. 모르시는 분들은 간단하게 경로 설정을 해주는 논리적인 망이라고 생각하시면 됩니다. 현재 코드에서 경로와 밀접하게 관련된 ..
[Node.js 개발자 되기] 1. REST 이해하기 REST 1. REST란? REST란 자원의 이름을 구분하여 자원의 상태를 주고받는 과정을 말합니다. 쉽게 풀어서 말하자면 Client와 서버가 손쉽게 대화(요청, 응답)하는 과정이라 생각하면 됩니다. 2. 자원의 pventi.tistory.com 이 전글에서 REST를 통해 Client와 Server가 대화하는 방법에 대해 알아봤습니다. 그렇다면 REST를 이용하여 다음 내용을 이해하기 위해 기본적인 게시글을 만들어보겠습니다. 게시글을 만들기 전 프로그래밍하기 전 게시글에 필요한 기능들을 생각해 보겠습니다. 1) 게시글 생성 (Create) 3) 게시글 화면 보여주기 (Read) 2) 게시글 수정 (Update) 3) 게시글 수정 (Delete) 이..
1.0 REST 1.1 REST란? REST란 자원의 이름을 구분하여 자원의 상태를 주고받는 과정을 말합니다. 쉽게 풀어서 말하자면 Client와 서버가 손쉽게 대화(요청, 응답)하는 과정이라 생각하면 됩니다. 1.2 자원의 이름? 다들 URL이라고 들어봤을 겁니다. 웹브라우저상 눈으로 간단하게 확인이 가능한 자원의 이름 형태중 하나입니다. 1.3 REST의 장점 REST는 HTTP 표준 프로토콜을 기반으로 만들어진 API입니다. 즉, HTTP 인프라를 통해 사용되기 때문에 여러 가지 별도의 인프라 구축이 필요 없습니다. 또한 HTTP 표준 프로토콜을 따르는 플랫폼(크롬, 엣지, 파이어폭스 등)이라면 사용이 가능합니다. 1.4 REST의 단점 REST는 4가지의 메서드(POST, GET, PUT, DEL..