Scale Up/Out, Statefull(less), Connection(less)

하마·2025년 3월 19일

Spring

목록 보기
4/22

서버의 성능 향상을 위한 방법

Scale Up (수직적 확장)

  • 단일 서버의 하드웨어 사용을 높임
    • CPU, Memory 등의 스펙을 높임
    • 성능이 좋아질 수록 비용이 기하급수적으로 올라감
  • 요청에 대한 처리를 더욱 빠르게 할 수 있도록 만듦

Scale Out (수평적 확장)

  • 같은 사양의 서버를 여러 대 배치
    • 성능과 비용이 비례 관계를 가짐
  • 동시에 더 많은 사용자 요청을 처리할 수 있도록 만듦



클라이언트-서버간 통신 상태 유지 여부

1. Stateful (상태 유지)

  • 클라이언트의 상태를 유지함
  • 상담원(서버)은 수강생(클라이언트)의 요청들을 기억(상태 유지)해 다음 질문들에 대한 처리 가능

Stateful 방식의 문제점

  • 같은 서버가 유지되어야 함
  • 상태를 유지하고 있던 서버가 종료되면?
    • 서버는 다양한 이유로 동작하지 않을 수 있음
  • 요청 트래픽이 몰리면 상태를 유지하는 것에 자원이 많이 소모됨
    • 자원이 버티지 못하면 서버가 다운되거나, 다음 요청의 처리가 느려짐

2. Statleless (무상태)

  • 클라이언트의 상태를 유지하지 않음

  • 수강생(클라이언트)이 이전에 했던 요청을 쌓아가며 상담원(서버)에게 요청하게 됨

Stateless 방식의 장단점

  • 장점
    • 같은 서버를 유지할 필요가 없음
    • Scale Out이 용이함 (수평 확장성이 높음)
      • 서버 증설이 쉬움
  • 단점
    • 클라이언트가 데이터를 추가적으로 전송해야 함
    • 전송되는 데이터의 양이 증가함

Stateless 방식의 한계점

  • WebApplication을 만들때 서버의 확장성을 고려하여 최대한 Stateless하게 만들어야 하지만
    실제로는 로그인과 같은 상태를 유지해야하는 경우가 발생함
    • Cookie, Session, Token 등을 활용하여 한계를 극복함
    • 상태 유지를 최소화 시켜야 한다.



클라이언트-서버간 연결 유지 여부

Connection (연결)

  • 서버는 클라이언트와 연결을 유지하기 위해 자원을 소모하지만,
    실제 서버에서 동시에 처리하는 요청은 작음
    • 여러 클라이언트가 아무런 요청이 없어도 연결을 유지함

Connection 장단점

  • 장점
    • 새로운 연결 과정을 거치지 않아도 됨
    • 요청에 대한 응답 속도가 빠름
  • 단점
    • 클라이언트가 지속적으로 요청을 보내지 않을 수 있음
    • 연결을 위한 자원이 낭비될 수 있음

Coneectionless (비연결)

  • 클라이언트와 서버간 연결을 유지하지 않음
  • 서버는 최소한의 자원만 사용하게 됨

Coneectionless 장단점

  • 장점
    • 서버 자원을 효율적으로 사용할 수 있음
  • 단점
    • 요청이 추가적으로 오면 3 Way HandShake를 새로 해야 함
      -> 요청에 대한 응답 시간이 증가함
    • 웹사이트의 정적 자원을 모두 다시 다운로드 함
      -> 캐시 , 브라우저 캐싱 으로 해결함
    • 현재는 HTTP 지속 연결 로 문제를 해결함

HTTP 지속 연결 (Persistent Connections)

  • 하나의 요청에 필요한 요청들이 모두 응답될 때까지 연결을 유지

참고자료


Spring 입문 - 1주차

  • 용어 모음집 1강
  • 용어 모음집 2강

0개의 댓글