250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

devlog_owen

231204 TIL)jsonwebtoken, express-session 이란?/수직적 확장/ 수평적 확장이란? 본문

TIL

231204 TIL)jsonwebtoken, express-session 이란?/수직적 확장/ 수평적 확장이란?

developer_owen 2023. 12. 5. 02:20
728x90

오늘의 알고리즘 문제)

 

알고리즘 스터디 월요일 모임

 

[프로그래머스] 명예의 전당(1)

문제 알고리즘 스터디에서 오늘 푼 문제. 사실 1시부터 풀어야했는데 무슨 자신감으로 20분동안 밥먹고 나머지 시간동안 풀다가 결국 시간내에 다 못품... k 숫자만큼 명예의 전당에 오르고, 명예

devlogowen.tistory.com

 

시간내에 다 풀지 못해서 알고리즘 스터디 끝나고 마저 풀었던 문제.

다음번에는 좀더 주석으로 먼저 문제해석을 하고 풀면 더 좋을 것 같다. 문제를 푸는 사고력이 더 필요할 것 같다.

 


숙련강의 완강

 

강의를 들으면서 그동안 써왔던 jsonwebtoken과 express-session 두개 다 쓸 수 있어서 좋았다.

 


jsonwebtoken, express-session 이란

두가지 다 사용자 인증과 관련된 작업을 처리하기 위한 도구들이지만 각각 특징과 사용하는 경우에 차이가 있다.

 


jsonwebtoken

특징:

1. 토큰기반 인증

JWT는 토큰기반의 인증방식을 제공한다. 서버는 사용자에게 토큰을 발급하고 클라이언트는 이 토큰을 사용하여 인증을 수행한다. 여기서 사용자란 어플리케이션의 최종 사용자, 클라이언트는 어플리케이션의 일부로서 서비스를 사용하는 주체다.(ex)브라우저, 모바일앱 등) 클라이언트는 사용자를 대신해 서버와 통신하고 서비스를 이용한다.

2. 상태를 저장하지 않는다

JWT는 서버측에서 상태를 유지하고 토큰 자체에 정보를 저장하여 사용자를 식별한다. 이것은 서버에서 세션을 유지하는 부담을 줄일 수 있다.

3. 분산시스템에 유용함

토큰은 클라이언트에서 서버간에 전달되어 분산시스템 및 마이크로서비스 아키텍처에서 활용이 용이하다.

 

장점:

  • 확장성이 용이하며 서버상태를 저장하지 않아 수평적 확산이 간편함
  • 클라이언트와 서버가 별도로 구현되어 있을때 사용하기 편함

단점

  • 토큰이 클라이언트에 저장되기 때문에 토큰이 유출될경우 보안에 취약할 수 있다.
  • 토큰자체에 정보가 저장되어 있기 때문에 토큰이 크면 네트워크 부하가 증가한다.

express-session

특징:

1. 서버기반 세션

express-session은 서버측에서 세션을 관리하며 클라이언트는 세션ID를 쿠키에 저장하여 식별한다.

2. 세션저장소

서버에서 세션데이터를 메모리나 외부저장소에 저장한다. 이를 통해 세션정보를 유지하고 관리할 수 있다.

3. 쉬운 사용성

express 미들웨어로 간편하게 사용할 수 있으며 기본적인 설정만으로도 세션을 사용할 수 있다.

 

장점:

  • 서버측에서 세션을 관리하기 때문에 클라이언트에 중요한 정보를 저장하지 않아도 된다.
  • 저장소의 선택에 따라 세션 데이터를 관리하기 용이함

단점

  • 서버 측에서 세션을 유지하기 위해 상태를 저장해야하므로 수평적 확산이 어려울 수 있다.
  • 각 요청마다 세션ID를 전송해야 하므로 미세한 오버헤드가 발생할 수있다.

 

수직적 확장/ 수평적 확장이란?


1. 수직적 확장 (Vertical Scaling):
의미: 단일 서버 또는 가상 머신의 성능을 향상시키기 위해 자원을 증가시키는 것입니다.
예시:
서버의 CPU, 메모리, 디스크 용량 등을 업그레이드하는 것.
단일 서버에서 사용 가능한 자원 한계에 도달하면 성능을 향상시키기가 어렵습니다.


장점:
하드웨어 자원이 증가하므로 단일 서버 내에서의 통신 비용이 낮고 간단하게 구현할 수 있습니다.


단점:
특정 서버의 성능 한계에 도달하면 업그레이드 비용이 크게 증가할 수 있습니다.
하드웨어의 물리적인 제한이 있기 때문에 한계에 도달하면 확장이 어려울 수 있습니다.

 


2. 수평적 확장 (Horizontal Scaling):
의미: 서버 인스턴스의 수를 늘려 전체 시스템의 성능을 향상시키는 것입니다.
예시:
여러 대의 서버를 추가하여 트래픽을 분산시키는 것.
각 서버 인스턴스는 독립적으로 동작하며, 로드 밸런서 등을 사용하여 트래픽을 분배합니다.


장점:
시스템의 성능을 향상시킬 때 상대적으로 저렴합니다.
서버 간의 자원을 공유하지 않으므로 각 서버가 독립적으로 확장 가능합니다.


단점:
서버 간의 통신 비용이 증가할 수 있습니다.
어플리케이션을 수평으로 확장하기 위해서는 데이터베이스 등의 일부 구성 요소도 이에 맞게 설계되어야 합니다.

 

 

예시:
수직적 확장:
상황: 단일 서버의 트래픽이 증가하면서 성능이 감소함.
해결책: CPU, 메모리, 디스크 용량을 늘려 높은 사양의 서버로 업그레이드.


수평적 확장:
상황: 단일 서버로 처리할 수 없는 많은 양의 트래픽이 발생함.
해결책: 여러 대의 서버를 추가하고 트래픽을 분산시키며, 로드 밸런서를 통해 각 서버로 트래픽을 분배.

728x90