1.0 들어가기 전 Centos7 환경에서 진행할 거 기 때문에 centos7 환경을 미리 구성해 주시면 되겠습니다. 환경이 준비되지 못하신 분들은 아래 링크를 통해 virtual box에 centos7 환경을 구성해 주시면 되겠습니다. VirtualBox에 Centos7 설치, window에서 MySQL 접근하기 1.0 들어가기 전 백앤드 공부를 하다 보면 비용 발생으로 인해 클라우드가 아닌 로컬에 데이터베이스 서버를 구동하는 경우가 종종 있습니다. 이를 분리하기 위해 구현 서버는 Window에서 구동하 pventi.tistory.com 2.0 mongo 설치하기 2.1 저장소 추가하기 (repo) 경로 : /etc/yum.repos.d 해당 경로에 mongodb-org-4.4.repo을 생성/작성해줍..
1.0 들어가기 전 집에서 실습을 하다 보면 한 컴퓨터에서 소스코드를 만들고 데이터베이스를 구동하고 연동하는 작업은 많이 해보셨을 겁니다. 실제로는 한 서버에서 모든 것을 작업하지 않고 데이터베이스 전용 서버를 두어 해당 서버에서 데이터를 불러옵니다. 물론 클라우드 서버를 활용하여 원격 서버로부터 가져올 수 있지만 직접 가상 환경을 구성하여 DB서버로 만들고 데이터를 불러오도록 작업하고 싶을 수도 있습니다.(저 같은 경우) 데이터를 요청하고 불러오기 위해서는 특정 포트에 대해 방화벽을 열어둠으로써 데이터 송수신이 가능한 기본 환경을 구성해 두어야 합니다. 이번 포스팅에서는 특정 포트에 대해 방화벽을 여는 법을 알려드리고자 합니다. 매우 간단한 작업이니 쉽게 따라 하실 수 있을 거라 생각합니다. 2.0 특..
1.0 들어가기 전 백앤드 공부를 하다 보면 비용 발생으로 인해 클라우드가 아닌 로컬에 데이터베이스 서버를 구동하는 경우가 종종 있습니다. 이를 분리하기 위해 구현 서버는 Window에서 구동하고 데이터베이스 서버는 VirtualBox라는 가상 환경을 제공해 주는 프로그램을 사용하여 따로 제작하겠습니다. 준비물 1. Virtual Box 2. Centos 7 iso 파일 3. 간단한 네트워크 지식 2.0 준비물 준비하기 2.1 Virtual box Downloads – Oracle VM VirtualBox Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By ..
1.0 들어가기 전 포스팅이 늦어져서 죄송합니다. 개인 사정으로 인해 프로그래밍과 블로그를 할 시간이 여의치 않았습니다. 이전에 만든 NodeAuction을 프로덕션으로 배포하기에는 여러 가지 문제점이 있습니다. 그중 크게 두 가지, 아래와 같은 내용을 살펴보겠습니다. 1. 로드밸런싱 부재 2. 잦은 Database의 접근 1.1 Node.js에서 로드밸런싱 Node.js에서 로드밸런싱 방법으로는 Cluster 모듈을 사용, pm2 라이브러리 사용 또는 NginX를 경유하여 서버에 접근하도록 설계를 해주시면 됩니다. 저희는 이중 NginX를 사용하여 로드밸런싱을 하겠습니다. 1.2 잦은 Database의 접근 Database에 접근하는 작업은 비교적 비용이 큰 작업입니다. 그렇다고 Database에 접근..
NginX 설정 에 대한 글은 지속적으로 업데이트 될 예정입니다. 413. Request Entity Too Largy body size가 클 경우 발생하는 에러 문구 : client_max_body_size 예시 http { client_max_body_size 10M; } SSE (Server Sent Events) 지연, 동작안함 NginX를 경유해 서버의 데이터를 가져올 경우 sse 방식의 데이터가 지연되는거나 동작안하는 현상을 목격할 수 있습니다. sse 는 http 프로토콜을 사용하여 오랫동안 연결을유지하는 방식입니다. 아래 문구 필요 server { proxy_http_version 1.1; proxy_set_header Connection ''; chunked_transfer_encodin..
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..
Node.js 교과서 2018년도 책 기준이라 개정된 책이랑 코드가 다릅니다. 들어가기 전 당분간 진행할 블로그 내용은 zeroCho 님께서 쓰신 책인 Node.js 교과서라는 책에 나오는 Node.Auction 코드를 여러 방면으로 수정, 개선하는 과정을 블로그와 깃허브에 정리하고자 합니다. zeroCho님 블로그에 방문해 보시면 다른 알찬 내용들도 많으니 확인해보세요. ZeroCho Blog ZeroCho의 Javascript와 Node.js 그리고 Web 이야기 www.zerocho.com 입력값 검증 IT서적 대부분이 기능 구현에 집중된 책이다보니 입력값에 대한 검증은 빠져있는 편입니다. 사용자로부터 입력받는 값은 항상 신뢰할 수 없기 때문에 검증과정은 반드시 해주셔야 합니다. 필요한 라이브러리 ..
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 = {} /** * * 아이템 이름이 캐시 유효기간내에 ..