사용자 수에 따른 규모 확장성을 고려하며 설계해보자
단일 서버
사용자 요청 처리 흐름
- 사용자는 도메인 입력
- 도메인 →
DNS
에 질의→ IP 주소로 변환
- IP 주소로
HTTP
요청
- 요청 받은 서버는
HTLM
이나 JSON
형태의 응답 반환
데이터베이스
웹 계층과 데이터 계층(데이터베이스 서버)을 분리하고 독립적으로 확장해야함
어떤 데이터베이스를 사용할 것인가?
RDBMS VS NoSQL
RDBMS
- 자료를 테이블과 열, 칼럼으로 펴현
SQL
을 사용해 여러 테이블 간의 데이터를 조인할 수 있음
노에스큐엘의 4가지 분류
- 키-값 저장소
- 그래프 저장소(그래프 스토어)
- 칼럼 스토어
- 문서 스토어
노에스큐엘 써야할 때
- 낮은 응답 레이턴시 필요
- 다루는 데이터가 비정형이라 관계형 데이터가 아님
- 정형데이터: 구조화되어 있고 테이블 간의 관계가 있음
- 비정형데이터: 음성, 미디어 등 구조가 없는 데이터
- 세미데이터: 구조가 애매하게 있음
- 데이터를 직렬화하거나 역직렬화 할 수 있기만 하며 됨
- 직렬화: 데이터를 json, yaml, xml 등의 파일로 변환해서 저장
- 역질렬화: 저장된 파일을 읽어 원래 형태로 복원해서 사용
- 아주 많은 양의 데이터를 저장할 필요 없음