1-1. 아키텍처 설계(단일 서버, 서버 계층 분리, 로드 밸런서)

2025. 8. 8. 20:24·CS/대규모 시스템 설계
728x90
반응형

단일 서버의 요청 흐름

1.  사용자는 moon-code.tistory.com을 이용하여 웹사이트에 접속한다.

2. DNS 조회 결과로 IP 주소가 반환된다. 해당 예제에서는 15.122.12.212라고 가정한다. 웹 서버의 주소이다.

실제로는 DNS도 계층적으로 3개의 서버에서 .com Server 그 안에서 해당 도메인에 해당하는 주소를 찾고 찾아서 반환하며, DNS Resolver의 Cache를 통해 이후, 같은 요청을 보냈을 때, 굳이 DNS 서버를 들리지 않고 반환하기도 하는데, 해당 부분과 관련해서는 웹 서버 흐름에 대해서 글을 작성하게되면 참조해놓겠다.

 

2. 해당 IP 주소로 HTTP 요청이 전달된다.

3. 요청을 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다.

 

단일 서버에서의 웹 요청 흐름

 

데이터베이스

사용자가 늘어나면 하나의 서버로 충분하지 않기 때문에 여러 서버를 두어야 한다. 따라서 웹/모바일 트래픽 처리 용도(웹 계층)와 데이터베이스용(데이터 계층)으로 나누어 분리하면 독립적으로 확장할 수 있게 한다.

 

데이터베이스의 종류

  • 관계형 데이터베이스(RDBMS)
    • 자료를 테이블과 열, 칼럼으로 표현한다. SQL을 사용하여 여러 테이블에 있는 데이터를 그 관계에 따라 Join하여 합칠 수 있다.
    • MySQL, 오라클 데이터베이스, PostgreSQL 등
  • 비-관계형 데이터베이스(NOSQL)
    • 키-값 저장소(key-value store), 그래프 저장소(graph store), 칼럼 저장소(column store), 문서 저장소(document store)
    • 조인 연산 지원하지 않음

 

비-관계형 데이터베이스 선택 기준

  1. 아주 낮은 응답 지연시간(latency)
  2. 다루는 데이터가 비정형 데이터인 경우
  3. 데이터를 직렬화하거나 역직렬화 할 수 있기만 하면 됨
  4. 아주 많은 양의 데이터를 저장할 필요가 있음.

웹 계층과 데이터 계층의 분리

 

수직적 규모 확장(scale up) vs 수평적 규모 확장(scale out)

수직적 규모 확장: 서버에 고사양 자원(더 좋은 CPU, 더 많은 RAM)을 추가하는 행위
수평적 규모 확장: 더 많은 서버를 추가하여, 성능을 개선하는 행위

 

수직적 규모 확장의 한계 -> 로드 밸런서

  1. 한 대의 서버에 CPU나 메모리를 무한 증설할 방법은 없음.
  2. 장애에 대한 자동복구(failover) 방안이나 다중화(re-dundancy) 방안을 제시하지 않음. -> 서버에 장애가 발생하면 웹사이트/앱은 완전히 중단된다.

 

로드 밸런서

웹 서버들에게 트래픽 부하를 고르게 분산하는 역할이자, 직접 웹 서버가 요청을 받지 않고 위임하는 형태로 보안성 측면에서도 우수하다.

 

모든 클라이언트의 요청은 로드 밸런서를 통한다.

 

로드 밸런서의 역할

1. 웹 서버는 클라이언트의 접속을 직접 처리하지 않음(프록시 서버 역할)
2. 서버 간 통신에는 사설 IP 주소를 이용하여, 같은 네트워크에 속한 서버 사이의 통신에만 쓰일 수 있도록 한다.(인터넷을 통해서는 접속 불가)

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 대규모 시스템 설계' 카테고리의 다른 글

1-1. 아키텍처 설계(DB 다중화, 캐시, CDN)  (0) 2025.08.08
'CS/대규모 시스템 설계' 카테고리의 다른 글
  • 1-1. 아키텍처 설계(DB 다중화, 캐시, CDN)
moongi
moongi
프로그래밍 관련 공부를 정리하는 블로그
  • moongi
    By_Me
    moongi
  • 전체
    오늘
    어제
    • 공부 (95)
      • 알고리즘 (75)
        • 구현 (12)
        • 이분 탐색 (1)
        • 누적합 (2)
        • 다이나믹 프로그래밍 (5)
        • 위상 정렬 (2)
        • SCC (1)
        • BFS & DFS (2)
        • 그래프 (2)
        • LCA (2)
        • 세그먼트 트리 (2)
        • 플로이드 워셜 (1)
        • 문자열 (1)
        • 수학 (1)
        • Heap (1)
        • SQL (9)
        • 개념 정리 (5)
        • 예외처리 (1)
      • spring boot (6)
        • jpa (0)
        • querydsl (0)
        • MVC pattern (0)
        • setting (2)
      • 취준 (3)
      • CS (11)
        • 대규모 시스템 설계 (2)
        • 디자인패턴 (2)
        • 데이터베이스 (4)
        • 네트워크 (3)
        • 운영체제 (0)
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
moongi
1-1. 아키텍처 설계(단일 서버, 서버 계층 분리, 로드 밸런서)
상단으로

티스토리툴바