728x90

서버개발자 7

[Server]세션 클러스터링이란? Session Clustering

세션 클러스터링(Session Clustering) 이란? 두 대 이상의 WAS를 이용하는 경우 로드 밸런싱(대용량 트래픽 처리시 분산시키는 것) 또는 failover(장애 발생시 예비시스템으로 자동전환, 서버 이중화), auto scaling(AWS에서 EC2 인스턴스를 자동으로 생성하고 삭제해주는 서비스) 등의 대체된 WAS에게도 세션이 공유하게 하는 기술이다. 이 과정에서 고려해야할 점은 세션 정보 저장 영역을 늘리기 위해선 JVM 의 Heap 사이즈를 늘릴 수는 있지만 너무 늘리게 되면 "Full GC" 처리 시간 때문에 장애요인이 발생 할 수 있다. 클러스터 특징 1) 노드 장애 시 다른 노드에서 클라이언트와 통신 하여 서비스 제공 ex) Multicast통신 2) 부하 분산(LB)를 통해 성능..

[Server] Cache(캐시) 란?

1. 캐시(Cache)란? Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킴. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공. Cache는 아래와 같은 경우에 사용을 고려하면 좋다. 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터) 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등) Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의..

[Node.js] #9 익스프레스로 SNS 서비스 만들기

익스프레스로 SNS 같은 공유 네트워크 만들때 주의해야할 점 1) 서버는 요청에 응답하는 것이 핵심 임무이므로 요청을 수락하든 거절하든 상관없이 반드시 응답해야함. 이때 한 번만 응답해야 에러가 발생하지 않음. 2) 개발 시 서버를 매번 수동으로 재시작하지 않으려면 nodemon을 사용하는 것이 좋다. 3) dotenv 패키지와 .env 파일로 유출되면 안 되는 비밀키를 관리해야한다. 4) 라우터는 routes 폴더에, 데이터베이스는 models 폴더에, html 파일은 views 폴더에 구분하여 저장하면 프로젝트 규모가 커져도 관리하기 쉽다. 5) 데이터베이스를 구성하기 전에 데이터 간 1:1, 1:N, N:M 관계를 잘 파악하자 6) routes/middlewares.js처럼 라우터 내에 미들웨어를 ..

node.js 2021.11.19

[Node.js] #5 패키지매니저

1. npm 알아보기 npm(Node Package Manager) : 125만개의 패키지가 등록되어 있어 이러한 방대한 양의 패키지는 노드와 자바스크립트의 생태계를 견고하게 만들고, 게다가 대부분 오픈소스이기때문에 노드를 사용해 웹을 만들때 많은도움이 됨. 2. package.json으로 패키지 관리하기 같은 패키지라도 버전별로 기능이 다를 수 있기때문에 프로젝트를 설치할 때 패키지도 동일한 버전을 설치하지 않으면 문제가 생길 수 있음. 이때 설치한 패키지의 버전을 관리하는 파일이 바로 package.json. → 노드 프로젝트를 시작하기전에는 폴더 내부에 무조건 package.json부터 만들고 시작해야한다. npm에서 package.json을 만들수있는 명령어를 제공하고 있음. [윈도우 환경] np..

node.js 2021.11.15

[Node.js] #4 http 모듈로 서버 만들기(2)

3. 쿠키와 세션 이해하기 클라이언트에서 보내는 요청의 단점 → 누가 요청을 보내는지 모름. 로그인 이후 새로고침 후에도 로그아웃이 되지 않는 이유는 클라이언트가 서버에 내가 누군지를 지속적으로 알려주고 있기때문. 내가 누구인지 기억하기 위해서 서버는 요청에 대한 응답을 할 때 쿠키라는것을 같이 보낸다. 쿠키는 유효 기간이 있으며 name=로춘남 과 같은 단순한 '키-값'의 쌍이다. 서버로부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 다음에 요청 할 때마다 쿠키를 동봉해서 보낸다. 서버는 요청에 들어있는 쿠키를 읽어서 사용자가 누구인지 파악을 하게 된다. - 쿠키명-쿠키값 : 기본적인 쿠키의값 - Expires=날짜 : 만료 기한. 이 기한이 지나면 쿠키가 제거. - Max-age=초 : Expi..

node.js 2021.11.12

[Node.js] #3 http 모듈로 서버 만들기(1)

1. 요청과 응답 이해하기 서버는 클라이언트가 있기에 동작하며, 클라이언트에서 서버로 요청(request)을 보내고, 서버에서는 요청의 내용을 읽고 처리한 뒤 클라이언트에 응답(response)을 보낸다. 요청과 응답을 바로 이벤트 방식이라고 표현한다. 클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해야함. 아래는 가장 기본적인 서버의 요청과 응답 const http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'Content-Type' : 'text.html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!');..

node.js 2021.11.12

[Node.js] #2노드의 기능

1. REPL 사용하기 자바스크립트는 스크립트 언어이므로 미리 컴파일을 하지 않아도 즉석에서 코드를 실행 할 수 있음. 노드도 비슷한 콘솔을 제공하는데, 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다(Loop) 라고해서 REPL라고 부름(Read Eval Print Loop). 읽고, 해석한 뒤 바로 결과물을 출력했다. REPL은 한 두줄짜리를 테스트하기엔 좋지만 여러줄을 실행하기에는 불편함. 2. JS 파일 실행하기 코드가 길 경우에는 코드자체를 자바스크립트 파일로 작성하여 파일을 통쨰로 실행하는 것이 좋다. ex) node [자바스크립트 파일 경로] 3. 모듈로 만들기 모듈 : 특정한 기능을 하는 함수나 변수들의 집합. 모듈은 하나의 프로..

node.js 2021.11.11
728x90