사용자 수에 따른 규모 확장성을 고려하며 설계해보자

단일 서버

사용자 요청 처리 흐름

  1. 사용자는 도메인 입력
  2. 도메인 → DNS에 질의→ IP 주소로 변환
  3. IP 주소로 HTTP 요청
  4. 요청 받은 서버는 HTLM 이나 JSON 형태의 응답 반환

데이터베이스

웹 계층과 데이터 계층(데이터베이스 서버)을 분리하고 독립적으로 확장해야함

어떤 데이터베이스를 사용할 것인가?

RDBMS VS NoSQL

RDBMS

노에스큐엘의 4가지 분류

  1. 키-값 저장소
  2. 그래프 저장소(그래프 스토어)
  3. 칼럼 스토어
  4. 문서 스토어

노에스큐엘 써야할 때

  1. 낮은 응답 레이턴시 필요
  2. 다루는 데이터가 비정형이라 관계형 데이터가 아님
    1. 정형데이터: 구조화되어 있고 테이블 간의 관계가 있음
    2. 비정형데이터: 음성, 미디어 등 구조가 없는 데이터
    3. 세미데이터: 구조가 애매하게 있음
  3. 데이터를 직렬화하거나 역직렬화 할 수 있기만 하며 됨
    1. 직렬화: 데이터를 json, yaml, xml 등의 파일로 변환해서 저장
    2. 역질렬화: 저장된 파일을 읽어 원래 형태로 복원해서 사용
  4. 아주 많은 양의 데이터를 저장할 필요 없음