시스템설계
![[시스템 설계] 데이터센터 이중화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbIXbO4%2Fbtsd0SV8m3s%2FAAAAAAAAAAAAAAAAAAAAAAK2rlc1uNXfKNdEFm8j8LRs_exx8Trn1LphmXGY2r0D%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DWo3R8Vg0rtlHpehkY2Appj%252Fk3iI%253D)
[시스템 설계] 데이터센터 이중화
하나의 데이터센터에 있는 서버들을 사용해 시스템을 구축한다고 가정하자. 이때 해당 데이터센터에 문제가 발생하면 시스템이 제대로 동작하지 못하게 된다. 이러한 경우를 대비해 두개의 데이터 센터(혹은 그 이상)을 사용해서 시스템을 구축해보자. 먼저 두개의 데이터 센터를 사용하는 경우, 평소에(장애가 없을 때)는 사용자 입장에서 지리적으로 가까운 데이터센터로 트래픽이 전달된다. 이것을 지리적 라우팅 (geo-routing)이라고 한다. DNS가 요청을 받을 때 사용자 위치에 따라 가까운 IP주소를 변환해준다. 위의 그림에 대한 플로우를 설명하면 다음과 같다. 1. 사용자가 DNS에 도메인네임을 질의한다. 2. DNS는 사용자 위치에 기반하여 가까운 데이터센터의 서버 IP를 반환한다. (geo-routing) ..
![[시스템 설계] 서버 응답시간(latency) 개선 (캐시, CDN)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FrpOhb%2FbtsdbLCBLuJ%2FAAAAAAAAAAAAAAAAAAAAAJ7tnvkm3AgKmrNWwlCWCyvhj342DmwmdW9IuB1h30Di%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3Dq1xncHAQle1xuSe7MYDdz3%252Bwjs0%253D)
[시스템 설계] 서버 응답시간(latency) 개선 (캐시, CDN)
서버 응답시간은 캐시를 붙이고, 정적 컨텐츠를 CDN으로 캐싱하여 개선할 수 있다. 캐시 캐시는 자주 참조되는 데이터를 캐시 서버에 임시 저장하여 요청이 빨리 처리될 수 있도록 하는 저장소이다. 캐시를 사용하면 DB의 부하가 줄어들어 어플리케이션 성능을 향상시킬 수 있다. 다만 캐시 사용시 아래 사항을 고려해야 한다. 캐시 만료 정책: 너무 짧으면 DB에 자주 접근하게 되고, 너무 길면 데이터가 원본가 차이 날 수 있다. 캐시는 TTL(Time To Live)에 명시된 기간동안 캐싱된다. 일관성 유지: 데이터의 원본과 캐시 사본은 같아야 한다. 저장소의 원본을 갱신하는 연산과, 캐시 업데이트 연산이 동시에 일어나지 않으면 이 일관성은 깨질 수 있다. 캐시 서버 분산: 캐시서버를 한대만 두면 Single ..