한명의 사용자를 지원하는 시스템에서 시작하여 최종적으로 몇백만 사용자를 지원하는 시스템을 설계해보자.

1. 단일 서버


단일 서버는 서버, 데이터베이스, 캐시 등이 전부 한대의 서버에서 실행되는 구조이다.

먼저 사용자 요청 처리흐름을 살펴보자.

  1. 사용자는 도메인 이름을 가지고 요청을 한다.
  2. DNS는 도메인 이름을 IP로 변환하고 사용자에게 IP를 반환한다.
  3. 사용자는 이 IP를 가지고 HTTP 요청을 서버에 보낸다.
  4. 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다.

2. 데이터베이스


사용자가 늘면 서버 한대로는 충분하지 않아서 여러 서버를 두어야한다.

이렇게 분리하면 각각을 독립적으로 확장해 나갈 수 있다.