오늘 시간은 웹 아키텍쳐 흐름도를 분석하려고 합니다.
웹 아키텍쳐 흐름도

DNS
Domain Name Server의 약어로 DNS가 있기전 웹은 URL을 아이피 주소로 접근해야 했다.
DNS 덕분에 아이피 주소를 의미가 있는 이름으로 변환 할 수 있게 해준다.
Load Balancer
상용 서비스 중 사용자가 많은 경우엔 서버를 하나만 사용하는 경우는 없다.
사용자가 가장 많은 경우를 예측하여 서버 스펙을 짠다.
보통 여러 개의 서버로 트래픽을 분산하는 것(Scale-out)을 Load Balancing이라 한다.
Caching Service
보통 자주 쓰이는 데이터들을 캐싱하여 사용한다.
Key-Value 구조여서 데이터를 빠르게 찾을 수 있는 NoSQL DB인 Redis를 자주 사용한다.
Job Queue(Message Queue)
서비스에 트래픽이 폭발적으로 증가하여 사용자들의 응답 대기 시간이 길어질 경우 에러가 발생하는데, 이걸 해결 해 줄 수 있는게 Message Queue다.
Message Queue는 요청들을 queue에 담고 health check에 성공한 서버에 요청을 보낸다. 만약 실패하더라도 다시 보낼 수 있기 때문에 안정성도 확보된다.
Full text search service
긴 문장에서 키워드들을 검색하는 서비스다.
Mysql에서도 해당 기능을 제공하고 검색엔진인 elasticsearch는 full text search 기능을 제공한다.
Data Firehose & Data Warehouse
웹 앱 서버에서 보내는 데이터들을 확인 후 보고, 분석 및 데이터 마이닝 도구, 자주 쓰이는 데이터는 접근속도가 빠른 곳에 저장하는 방식을 제공한다.
Cloud Storage
여기서 말하는 cloud storage는 data firehose에서 정적인 데이터들을 받아 저장하는 역할을 한다.
Content Distribution Network (CDN)
Cloud Storage가 client와 멀리 있다면 데이터 송수신 딜레이가 엄청날 것이다.
이때, CDN은 세계 곳곳에 저장소를 두고 client에게 제공한다.