Web

3.1. Modern web application architecture overview

AnnSEo2105 2021. 10. 15. 16:22

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

 

 

회사 숙제 ^ㅠ^