단일 서버
단일 서버의 사용자 요청 처리 흐름
- 사용자는 도메인 이름(api.mysite.com)을 이용하여 웹사이트에 접속한다. 이 접속을 위해서는 도메인 이름을 도메인 이름 서비스에 질의하여 IP 주소로 변환하는 과정이 필요하다. DNS는 보통 제 3 사업자가 제공하는 유료 서비스를 이용하게 되므로, 우리 시스템의 일부가 아니다.
- DNS 조회 결과로 IP 주소가 반환된다. 여기 예제에서는 그 주소가 15.125.23.214라고 하겠다. 이 주소는 그림 1-2에 나온 웹 서버의 주소이다.
- 해당 IP 주소로 HTTP 요청이 전달된다.
- 요청을 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다.
데이터 베이스
보통 웹 서비스를 할 때 웹/모바일 트래픽 처리 서버(웹 계층)와 데이터베이스 서버(데이터 계층) 으로 나눈다.
데이터 베이스는 전통적인 관계형 데이터베이스(RDBMS)와 비-관계형 데이터베이스(NoSQL)로 나뉜다.
관계형 데이터베이스는 자료를 테이블과 열, 칼럼으로 표현한다. SQL을 사용하면 여러 테이블에 있는 데이터를 그 관계에 따라 조인하여 합칠 수 있다.
비 관계형 데이터베이스는 네 부류로 나눌 수 있는데, 키-값 저장소, 그래프 저장소, 칼럼 저장소 그리고 문서 저장소가 있다.
보통은 관계형 데이터 베이스를 사용하지만 아래와 같은 경우에는 비 관계형 데이터베이스가 바람직한 선택일 수 있다.
- 아주 낮은 응답 지연시간(latency)이 요구됨
- 다루는 데이터가 비정형이라 관계형 데이터가 아님
- 데이터를 직렬화하거나 역직렬화 할 수 있기만 하면 됨
- 직렬화는 객체를 저장, 전송할 수 있는 특정 포맷 상태로 바꾸는 과정
- 역직렬화는 특정 포맷 상태의 데이터를 다시 객체로 변환하는 것
- 아주 많은 양의 데이터를 저장할 필요가 있음
수직적 규모 확장 vs 수평적 규모 확장
스케일 업 이라고도 하는 수직적 규모 확장 프로세스는 서버에 고사양 자원을 추가하는 행위를 말한다. 반면 스케일 아웃 이라고도 하는 수평적 규모 확장 프로세스는 더 많은 서버를 추가하여 성능을 개선하는 행위를 말한다.