[가상면접으로 배우는 대규모 시스템 설계] 1장. 단일 서버 시스템 설계(1)

박상준·2024년 5월 30일
0

단일 서버 시스템 설계

시스템 설계 개요

  • 단일 서버 시스템은 모든 컴포넌트가 한 대의 서버에서 실행되는 간단한 구성으로 시작한다.
  • 단일 서버에서 웹 앱, DB, 캐시 등이 모두 실행된다.

사용자 요청 처리 흐름

  1. DNS 조회
    • 사용자가 도메인이름(api.mysite.com) 으로 웹사이트에 접속할 때 도메인 이름 서비스(DNS) 를 통해 IP 주소로 변환한다.
  2. HTTP 요청 전달
    • 변환된 IP 주소( 15.125.23.124 등) 으로 HTTP 요청이 웹 서버로 전달됨.
  3. 응답의 반환
    • 웹 서버가 HTML 페이지나 JSON 형태의 응답을 반환함

사용자 단말

웹 어플리케이션

  • 서버 구현용 언어(자바 파이썬 등) 와 클라이언트 구현용 언어(HTML, JS 등) 를 사용하여 비즈니스 로직과 데이터 저장을 처리한다.

모바일 앱

  • 모바일 앱과 웹 서버 간 통신을 위해 HTTP 프로토콜을 사용한다.
  • HTTP 프로토콜을 통해 JSON(Javascript Object Notation) 형식으로 응답 데이터를 반환한다.

DB

서버 분리

  • 사용자가 증가하면 단일 서버로는 충분치 않음. 여러 서버를 두어야 한다
  • 웹/ 모바일 트래픽 처리 서버와 DB 서버로 분리하여 독립적으로 확장이 가능하다
    • 웹/모바일 트래픽 처리 서버
      • 웹 계층
    • DB 서버
      • 데이터 계층

DB선택 관련

관계형 데이터베이스(RDBMS)

  • 예시로는 MySQL , 오라클, PostgreSQL 등이 있다
  • 특징
    • 자료를 테이블과 열, 컬럼으로 표현한다
    • SQL 을 사용하여 여러 테이블의 데이터를 관계에 따라 조인이 가능하다.
  • 장점
    • 복잡한 쿼리가 트랜잭션 처리에 강점이 있다.
    • 오랜 기간 동안 검증된 안정적인 시스템이다.

비 - 관계형 데이터베이스(NoSQL)

  • 예시로는 MongoDB, HBase , DynamoDB 등이 있다.
  • 유형
    • 키-값 저장소 (key-value store) - 레디스
    • 그래프 저장소(graph store)
    • 칼럼 저장소(column store)
    • 문서 저장소(document store) - 몽고

선택의 기준

  • 관계형 DB는 대부분의 경우에 적합하다
  • 비-관계형 DB는
    1. 낮은 응답 지연시간이 요구되는 경우
    2. 비정형의 데이터인 경우(채팅데이터, XML , JSON 을 그대로 저장하는 경우(임시저장 등의 기능이 필요한 경우 사용했음))) + 노션같은 경우 주기적으로 저장되는데 이런 경우 비정형의 데이터를 저장해야되는 케이스임
    3. JSON, YAML, XML 등의 데이터를 직렬화 + 역직렬화가 필요한 경우
    4. 대용량의 데이터 저장이 필요한 경우

다음은..

  • 수직적 확장 vs 수평적 확장
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글