3.1. Modern web application architecture overview
3.1.1. DNS
사용자 브라우저에서 링크를 클릭하면 DNS 서버에서 해당 사이트 정보를 찾기 위해 요청을 보낸다.
3.1.2. Load Balancer
브라우저가 받은 요청은 load balancer가 받아 사이트 운영에 사용하는 웹 서버가 10개 정도 있으면 이 중 하나를 임의로 선택해 요청을 처리하도록 보낸다. 애플리케이션의 수평적 확장이 목적.
3.1.3. Web application servers
요청이 들어오면 관련 로직을 실행하고 결과를 HTML에 담아 브라우저로 전송한다. 캐싱 서비스, 데이터베이스에서 정보를 찾는 작업도 이뤄진다.
3.1.4. Database
데이터 저장, 삽입, 수정, 삭제가 이뤄진다.
3.1.5. Cache
단순 key/value 데이터 저장소를 제공한다. 쿼리 결과나 외부서비스 호출 결과 등도 저장해 바로 가져온다.
3.1.6.a. Job Queue
비동기 작업을 저장하는 Queue. 끝나지 않은 계산 작업은 job queue에 보내진다.
3.1.6.b. Job Servers
비동기로 Job Queue에 들어있는 작업을 실행해 받아온 결과를 가지고 데이터베이스에 업데이트한다.
3.1.7. Full text search
사용자가 검색 결과로 받은 쿼리 같은 텍스트 입력해 검색 시 가장 관련된 결과를 보여준다. 역인덱스를 활용한다. 사용하는 곳도 있고 아닌 곳도 있으나 가장 대표적으로 Elasticsearch가 있다.
3.1.8. Services
검색을 위해 회원 로그인이 필요한 경우 등의 상황에 사용자의 계정 정보를 찾는 작업이 필요하다. 애플리케이션의 규모가 커지면 별도 애플리케이션으로 분리해 운영하기 위해 서비스가 생긴다. 외부에 노출되지 않으면서 다른 서비스와 연동된다. 예를 들어, 결제 서비스나 계정 서비스 등이 있다.
3.1.9.a. Data firehose
수집된 데이터가 firehose에 전달되는데 데이터를 받아 처리할 수 있는 스트리밍 인터페이스를 제공한다. 대표적으로 Kafka, AWS Kinesis가 있다.
3.1.9.b. Copy of data
원시 데이터와 최종 데이터는 모두 클라우드 스토리지에 저장된다. 예를 들어, AWS Kinesis는 간단한 설정으로 S3에 자동으로 업로드를 지원한다.
3.1.9.c. Data warehouse
데이터가 Data warehouse에 적재되고 이후 비즈니스 분석을 위해 사용된다. 예를 들어, Redshift 등이 있다.
3.1.10. Cloud storage
로컬 파일 시스템에 저장되던 것들 모두 클라우드에 REST API로 간편하게 저장해 접근할 수 있다. AWS S3가 대표적인 예시다.
3.1.11. CDN
Content Delivery Network는 효율적으로 정적 데이터를 제공하기 위해 사용된다. Edge 서버에 컨텐츠를 분산해 컨텐츠 병목을 피할 수 있다.
출처
https://medium.com/storyblocks-engineering/web-architecture-101-a3224e126947
Web Architecture 101
The basic architecture concepts I wish I knew when I was getting started as a web developer
medium.com
회사 숙제 ^ㅠ^