사용자 수에 따른 규모 확장성
단일 서버
모든 컴포너트가 단 한대의 서버에서 실행되는 간단한 시스템. 웹 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행한다
사용자 요청 흐름
도메인 서버(DNS) 질의 → IP 주소 획득 → 해당 IP 주소로 Http 요청 전달 → 서버는 요청 반환
- http 프로토콜 반환 데이터는 주로 json이 사용된다. (xml 등 사용 가능)
step1. 트래픽이 늘 경우 단일 서버로 부족하다. 서버를 사용자 트래픽 처리 용도와 데이터 베이스 용도로 나눈다.
데이터 베이스 서버
관계형 데이터 베이스와 비-관계형 데이터 베이스가 있음
- SQL : 테이블, 열, 컬럼으로 표현한다. 데이터를 관계에 따라 조인한다
- NOSQL : 키-값 형태, 그래프 저장, 문서 저장등이 있다. 일반적으로 조인 연산을 지원하지 않는다.
- 아주 낮은 응답 지연시간이 요구된다. - 사용자에게 빠르게 응답해야 한다
- 다루는 데이터가 정형화 되어있지 않다 (데이터가 수시로 변경되는 경우)
- 데이터를 직렬화 하거나 역직렬화 할 수 있기만 하면 된다. (Join 연산 필요 없을 경우)
- 아주 많은 양의 데이터를 저장해야 한다
수직적 확장과 수평적 확장
수직적 확장