웹 아케텍쳐

1. DNS (Domain Name Server)
도메인 이름(google.com)에서 IP 주소로의 키/값 조회를 제공
- 알맞은 서버에 요청을 보낼 수 있는 경로를 찾는데 필요
2. Load Balancer

서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술
- 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.
Scale-up VS Scale-out

- Scale-up
- 서버 자체의 성능을 확장하는 것을 의미
- CPU, 메모리, 디스크
- Scale-out
- 서버를 두 대 이상 증설하여 운영
⇒ 서버가 여러 대라면 트래픽을 균등하게 분산 해주는 로드밸런싱이 필요하다.
3. 웹 애플리케이션 서버
사용자의 요청이 들어오면 핵심 비즈니스 로직을 실행하고 Client로 응답
- 프로그램 실행 환경과 데이터베이스 접속 기능을 제공
- 여러개의 트랜잭션을 관리
- 업무를 처리하는 비즈니스 로직
WAS 종류
- Web Logic
- Jeus
- Tomcat
- JBoss
4. 데이터베이스 서버
데이터베이스는 데이터 구조를 정의하고, 새로운 데이터를 삽입, 데이터를 찾고, 데이터를 수정하거나 삭제, 데이터로 연산을 수행
- 잡 서버의 역할을 하는 데이터베이스 서버와 직접 통신
- 백엔드 서비스는 애플리케이션의 다른 영역과 분리된 자신만의 데이터베이스를 가지고 있다.
5. 캐싱 서비스
O(1) 시간 안에 찾을 수 있는 단순한 키/값 데이터 저장소를 제공
- 자원이 많이 소모되는 연산의 결과를 다시 계산하지 않고 캐시에서 가져옴으로써 효율을 높인다.
- 데이터베이스의 쿼리 결과, 외부 서비스 호출 결과, 주어진 URL, HTML 등을 캐시에 저장
- 페이스북은 로그인 시에 포스트 데이터, 친구 목록 등 많은 데이터를 캐시 한다.
캐싱 서버 기술
- Redis ⇒ 가장 많이 사용
- Memcache
6. 잡 큐(job queue) & 서버
응답과는 직접적인 관련이 없는 작업을 백그라운드에서 비동기적으로 실행시킨다.
- 비동기적인 작업을 가능하게 하는 “잡 큐” 아키텍처
- “잡”으로 이루어진 큐
- 비동기적으로 실행될 잡 목록을 저장
- 큐에 들어있는 잡을 실행하는 1개 이상의 잡 서버
- 잡을 처리한다.
- 잡 큐를 가져와서 할 일이 있는지 확인하고, 있다면 큐에서 잡을 뽑아내서 실행한다.
7. 전체 텍스트 검색 서비스
사용자가 텍스트 입력을 입력 하면 검색을 하고 가장 ‘관련 있는’ 결과를 보여주는 기능을 제공

- 3개의 문서의 제목이 어떻게 역 인덱스를 연산하고 쿼리 인터페이스를 제공하는 “검색 서비스”를 분리해서 운영하는 사례가 많다.
전체 텍스트 검색 플랫폼
- Elasticsearch
- Sphinx
- Apache Solr
8. 서비스
외부에는 노출되지 않지만, 앱과 다른 서비스와는 연동
- 계정 서비스
- 우리의 모든 사이트의 사용자 정보를 저장해서 교차 판매 기회를 더 쉽게 제공
- 컨텐츠 서비스
- 우리의 모든 비디오, 오디오, 이미지의 메타데이터를 저장한다. 또 콘텐츠 다운로드 인터페이스와 다운로드 이력을 보여주는 기능을 제공
- 결제 서비스
- 고객이 카드로 결제할 수 있는 인터페이스를 제공
9. 데이터
특정 규모에 도달하면 데이터를 제어, 저장, 분석하기 위해 데이터 파이프라인을 사용
- 사용자 상호작용으로 발생한 데이터를 ‘firehose’라 불리는 곳으로 전달 가공되지 않은 원시 데이터는 변형되거나 추가 정보와 함께 다른 firehose로 전달된다.
- AWS Kinesis와 Kafka
- 원시 데이터와 최종 데이터는 모두 클라우드 스토리지에 저장된다.
- AWS Kinesis는 원시 데이터를 AWS의 클라우드 스토리지(S3)에 저장할 수 있도록 매우 쉽게 사용할 수 있는 ‘firehose’로 불리는 설정을 제공
- 변형/추가된 데이터는 종종 분석을 위해 데이터 웨어하우스(DW)에 로드된다.
- AWS Redshift 사용
Firehose
실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석 솔루션
- Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있다.
- 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있다.

Amazon Kinesis Firehose 실습과 동작 https://blog.voidmainvoid.net/295
data warehouse
데이터 웨어하우스란 사용자의 의사 결정에 도움을 주기 위하여 기간시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서 관리하는 데이터베이스
10. 클라우드 스토리지
데이터 스토리지를 서비스로서 관리하고 운영하는 클라우드 컴퓨팅 공급자를 통해 데이터를 인터넷에 저장하는 클라우드 컴퓨팅 모델
- 아마존의 S3 : 가장 인기 있는 클라우드 스토리지
11. CDN (Content Delivery Network)
HTML, CSS, 자바스크립트, 이미지 같은 정적인 데이터를 전 세계의 많은 ‘엣지’ 서버에 분산시킴으로서 더 빠르게 제공한다.

- 사용자는 데이터를 원본 서버 대신 가장 가까운 엣지 서버에서 다운로드한다.