윈도우환경에 공유기를 쓴다는 가정하 시작
웹브라우저에 검색을 하는데 www라는 이름을 가진 naver.com이라는 도메인을 검색하려면 ip를 알아야하는데 ip를 알기위해 DNS에 질의를 해서 ip주소를 획득한다.
하지만 DNS에게 항상 바로 물어보지않고 host파일 확인, DNS cache 확인 그다음에서 질의를 한다. Pc에 설정되어 있는 방법에 따라 공유기를 통해서 질의가 이루어질수 있고 ISP에서 전달해준 DNS 설정을 따라 질의를 하고 ip를 획득한다.
획득한 ip로 서버에 tcp연결을 한다. http통신을 기반으로 하기때문에
http request가 나감
http response가 옴
여기까지는 신입사원 레벨
GSLB와 CDN에 대해도 말씀드릴까요?
구글이나 네이버정도 되는회사면 GSLB(Global Server Load Balancing)를 하게 되어있음 (Healthcheck가능)
CDN은 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송하는 기술이다. CDN을 제공하는 유명한 회사로는 Akamai가 있음. 로드밸런싱으로 지역과 떨어진 지역의 서버와도 네트워크를 연결한다.
CDN(Content Delivery Network)을 사용하는 이유
key DNS에 질의해서 받는 ip는 달라질수있다.
만약 Akamai CDN을 썼다 하면
PC에서 접속을 하면 CDN에서 PC의 ip를 살펴보고 위치를 파악한다 만약 서울이라면 서울에 있는 사용자는 어떤 ip주소로 접속했을 때 가장 빠른지 파악해서
그중에 서울에 있는 PC와 원활하고 반응성 좋게 접속할 수 있는 서버 ip주소를 알려주는것이다.
이렇게 네이버라는 웹서버가 한개가 아니고 여러개가 있기때문에 효율적인 사용을 위해 로드밸런싱해줘야 한다.
그런데 헬스체크를 하다가 서울 서버가 디도스 공격으로 죽어버렸다. 그러면 누군가 접속했을때 서울 서버가 아닌 가까운곳에 있는 서버를 알려준다.
그런데 어떤사람이 서울 네이버서버에서 로그인을 했었다. 그런데 서울서버가 다운되고 나도 모르게 부산 네이버서버에 접속을 했을때 그 로그인 세션은 유지가 될까? 만약 그게 되게하려면 서버 아키텍쳐를 어떻게 만들어줘야할까
백엔드라면 아까 말한 세션유지를 어떻게 해야할지 말하면 좋음
nginx를 통한 무중단 배포활용 로드밸런싱 사용
도쿄같은 경우는 지진과 같은 자연재해로 인한 대책이 필요하다 = DR재해대응