![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ELZ4t/btruQjRhcXj/o3n9kKSRRoCxYWfeykaACK/img.png)
가상 면접 사례로 배우는 대규모 시스템 설계 기초 요약정리 글입니다. 가용성을 높이고 전 세계 어디서도 쾌적한 서비스를 위해서는 여러 데이터 센터를 지원하는 것이 필수다. 일반적으로 사용자는 가장 가까운 데이터 센터로 안내되는데, 이를 지리적 라우팅이라 부른다. 데이터 센터 지리적 라우팅에서의 geoDNS는 사용자의 위치에 따라 도메인 이름을 어떤 IP 주소로 변환할지 결정한다. 지리적 라우팅을 통해 각 데이터센터로 트래픽이 분산되어 안전한 시스템을 구성할 수 있다. 만약 데이터 센터 1에 장애가 발생해도 모든 트래픽은 장애가 없는 데이터 센터 2로 전송된다. 다중 데이터 센터 구성 시 고려사항 다중 데이터 센터 아키텍처를 구성하기 위해선 몇 가지 기술적 난제를 해결해야 한다. 어떤 기술적 난제가 있는지..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/k8Zeh/btruexwcpl7/7nqYYTBvYWgAyhuTQtaetK/img.png)
가상 면접 사례로 배우는 대규모 시스템 설계 기초 요약정리 글입니다. 웹 계층을 수평적으로 확장하기 위해서는 세션 데이터와 같은 상태 정보를 웹 계층에서 제거해야 한다. 이를 고려하지 않고 웹 계층을 확장하면 엉뚱한 상태 정보를 반환하는 상황이 생길 수 있기 때문이다. 웹 계층을 수평적으로 확장하는 바람직한 전략은 상태 정보를 RDBMS나 NoSQL 같은 저장소에 보관하고 필요할 때 가져오는 것이다. 이렇게 구성된 웹 계층을 무상태 웹 계층이라고 한다. 무상태 웹 계층 상태 정보 의존적 아키텍처 일반적으로 서버는 클라이언트의 상태 정보를 보관하여 요청들 사이에 상태가 유지되도록 한다. 그림과 같이 사용자 A에 대한 상태 정보는 서버 1에 저장된다. 따라서 사용자 A를 인증하기 위해선 반드시 서버 1로 H..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/L1CE9/btruiRG7Dxc/ATLlEitJhK3mvKTBHsk9gK/img.png)
가상 면접 사례로 배우는 대규모 시스템 설계 기초 요약정리 글입니다. 앞서 웹 계층과 데이터 계층의 규모에 따른 시스템 설계를 살펴봤으니, 응답 시간을 개선하는 방법에 대해 알아보자. 응답 시간은 캐시와 콘텐츠 전송 네트워크(CDN)를 이용해 개선할 수 있다. 캐시란? 캐시는 비싼 연산이나 자주 조회되는 데이터를 메모리에 올려두는 임시 저장소다. 접근 시간이 오래 걸리는 반복 요청이나 값을 다시 계산하는 비용을 줄이고 싶은 경우 유용하다. 웹 서비스는 데이터베이스 호출 빈도에 따라 성능이 크게 좌우되기 때문에 캐시를 잘 활용하면 성능을 유의미하게 올릴 수 있다. 캐시 계층 캐시 계층은 데이터가 잠시 보관되는 곳으로 데이터베이스에 접근하는 것보다 훨씬 빠르다. 별도의 캐시 계층을 두면 이미 캐시에 데이터가..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GE22l/btrtO7pzA0u/4Q6yvR3ZGuzgFk5eZkWFp1/img.png)
가상 면접 사례로 배우는 대규모 시스템 설계 기초 요약정리 글입니다. 한 명의 사용자를 지원하는 시스템에서부터 수 백만 사용자를 지원하는 시스템을 만드는 방법을 알아보기 앞서 기본적으로 사용자의 요청이 처리되는 과정을 이해할 필요가 있다. 다음은 가장 단순한 단일 서버에서 사용자의 요청이 처리되는 과정을 나타낸다. 사용자의 요청이 처리되는 과정 사용자가 웹 브라우저에 URL을 입력한다. 입력된 URL 정보는 DNS에서 IP 주소로 변환되어 반환된다. 반환된 IP 주소를 가진 웹 서버로 HTTP 요청이 전달된다. 요청받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다. 사용자 수에 따른 시스템 설계 만약 단 한 명의 사용자만 이용하는 시스템이라면 위와 같이 웹 앱, 데이터베이스, 캐시 등을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cyip48/btq6erSzDqE/sDm1kN5NT9CFCkAK3GK651/img.png)
1. 웹은 HTTP로 나타낸다. 웹 브라우저에서 URL을 입력하고 웹 페이지가 보여지기까지 클라이언트의 요청과 서버의 응답이라는 과정을 거친다. 클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것은 웹에서 HTTP(HyperText Transfer Protocol)이라 불린다. 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다. 2. 네트워크의 기본 TCP/IP HTTP를 이해하기 위해서는 TCP/IP의 개념을 알아야 한다. 인터넷을 포함해 우리가 일반적으로 사용하는 네트워크는 TCP/IP라는 프로토콜에서 움직이고 있다. TCP/IP는 인터넷에 관련된 다양한 프로토콜 집합의 총칭이며, HTTP도 그중 하나이다. 2.1 IP(Internet Protocol) 인터넷 쇼핑을 할 때 주소를 입력해야 ..