Web
[웹] 하루 일찍 알수록 좋은 웹 아키텍처 개념
JJANG-JOON
2023. 8. 24. 10:31
반응형
***이 글은 해외 글을 번역하여 쓰였으며 해당 글은 특정 웹서비스(storyblocks) 아키텍처 구성을 통해 기초 개념을 제공한다.***
- 사용자가 구글에서 "Strong Beautiful Fog And Sunbeams In The Forest"를 검색한다.
- 사용자가 첫 번째 검색 결과로 이동하려고 클릭한다.
- 브라우저 내부에서 DNS 서버에 Storyblocks 사이트에 어떻게 접속해야 하는지 물어보고 Storyblocks에 접근을 시도한다.
- 브라우저 요청은 Storyblocks 측의 로드 밸런서에 도착하고, 랜덤하게 선택된 서버에서 요청을 처리한다.
- 웹 서버는 이미지 정보를 캐싱 서비스에서 가져온 후 필요한 정보를 데이터베이스에 요청한다.
- 사용자에게 전달된 이미지의 컬러 프로필이 아직 생성되지 않았다면 "컬러 프로필" 잡(job)을 잡 큐에 보낸다.
- 잡 서버는 큐에 추가된 작업을 비동기적으로 처리하고 데이터베이스에 결과를 업데이트한다.
- 전체 텍스트 검색 서비스에 사진의 제목을 전달하여 비슷한 사진을 검색한다. 사용자가 Storyblocks의 멤버로 로그인한 경우 계정 정보를 가져온다.
- 작업이 완료된 후 데이터 firehose에 페이지 뷰 이벤트를 발생시켜 클라우드 스토리지 시스템에 기록하고, 이 정보는 분석가들이 비즈니스와 관련된 질의에 답하는 데 사용된다.
- 서버는 HTML로 화면을 렌더링한 후 사용자의 브라우저로 보내며, 페이지에는 CDN에 연결된 클라우드 스토리지 시스템에서 가져오는 자바스크립트와 CSS 파일이 포함되어 있다.
- 브라우저는 콘텐츠를 CDN에서 가져오기 위해 접속하고 사용자에게 보이는 콘텐츠를 렌더링한다.
설명
- DNS (Domain Name Server)
- DNS는 도메인 이름 (예: google.com)과 IP 주소 (예: 85.129.83.120) 간의 매핑을 제공하는 기술이다.
- DNS는 인터넷의 "전화번호부" 역할을 하며, 도메인 이름을 IP 주소로 변환하여 서버와 통신 경로를 찾을 수 있게 한다.
- 로드 밸런서 (Load Balancer)
- 로드 밸런서는 들어오는 요청을 여러 서버로 분산하여 부하를 분산시키는 역할을 한다.
- 수평적 확장을 가능하게 하며, 서버의 과부하를 방지하여 애플리케이션의 가용성과 성능을 향상시킨다.
- 웹 애플리케이션 서버 (Web Application Server)
- 웹 애플리케이션 서버는 사용자의 요청을 받아 핵심 비즈니스 로직을 실행하고 HTML을 생성하여 브라우저로 전송한다.
- 다양한 언어와 프레임워크를 사용하여 웹 애플리케이션을 구현할 수 있으며, 백엔드 서비스와 데이터베이스와 통신한다.
- 데이터베이스 서버 (Database Server)
- 데이터베이스 서버는 정보를 저장하고 데이터를 관리하는 역할을 한다.
- SQL과 NoSQL 데이터베이스가 있으며, SQL은 관계형 데이터를 다루고 NoSQL은 대규모 데이터 처리를 위한 데이터베이스 기술이다.
- 잡 큐(Job Queue) & 서버
- 웹 애플리케이션은 백그라운드에서 비동기 작업을 수행해야 할 때가 있다.
- 이러한 작업을 관리하기 위해 잡 큐 아키텍처를 사용한다.
- 잡 큐는 비동기 작업 목록을 저장하고, 잡 서버는 이러한 작업을 처리한다.
- 예를 들어, 크롤링, 데이터 처리, 이메일 전송 등의 작업을 비동기적으로 처리할 수 있다.
- 전체 텍스트 검색 서비스
- 많은 웹 애플리케이션은 텍스트 검색 기능을 제공한다.
- 전체 텍스트 검색은 역 인덱스를 사용하여 특정 키워드를 포함하는 문서를 빠르게 검색한다.
- Elasticsearch, Sphinx, Apache Solr 등의 검색 엔진을 사용하여 구현할 수 있다.
- 서비스
- 애플리케이션이 규모가 커지면 특정 기능을 분리하여 별도의 서비스로 운영한다.
- 예를 들어 계정 서비스, 컨텐츠 서비스, 결제 서비스 등이 있으며 서로 연동된다.
- 데이터
- 데이터 처리는 기업의 성공에 중요한 역할을 한다.
- 데이터 파이프라인을 통해 데이터를 수집, 변형, 저장하고 분석한다.
- AWS Kinesis, Kafka, 데이터 웨어하우스 (Redshift) 등을 사용한다.
- 클라우드 스토리지
- 클라우드 스토리지는 데이터를 인터넷을 통해 저장, 접근 및 공유할 수 있는 방법을 제공한다.
- AWS S3와 같은 클라우드 스토리지를 사용하여 데이터를 저장하고 접근한다.
- CDN (Content Delivery Network)
- CDN은 정적인 데이터를 빠르게 제공하기 위한 기술이다.
- 데이터를 전 세계의 엣지 서버에 분산시켜 사용자에게 더 빠르게 제공한다.
- CSS, 자바스크립트, 이미지, 비디오 등의 정적 데이터를 CDN을 통해 제공한다.
+
캐싱 서비스
캐싱 서비스는 주로 데이터나 연산 결과를 빠르게 저장하고 검색하기 위한 키/값 데이터 저장소이다. 이를 통해 애플리케이션은 자주 사용되는 데이터나 연산 결과를 다시 계산하지 않고 이전에 캐시한 정보를 사용함으로써 성능과 효율성을 향상시킬 수 있다. 여기에 몇 가지 실제 사용 사례와 가장 널리 사용되는 두 가지 캐싱 서버 기술에 대한 언급이 있다:
- Google: 구글은 검색 결과를 캐시하여 사용자가 동일한 검색어로 다시 검색할 때 이전 결과를 빠르게 표시한다. 이렇게 함으로써 동일한 검색에 대한 반복적인 데이터베이스 또는 웹 크롤링 작업을 피할 수 있다.
- Facebook: 페이스북은 로그인 시에 포스트 데이터, 친구 목록 등을 캐시하여 사용자 경험을 향상시킨다. 이렇게 함으로써 매번 로그인할 때마다 데이터베이스에서 모든 정보를 다시 가져오지 않아도 된다.
- Storyblocks: Storyblocks는 React 서버 사이드 렌더링으로 생성된 HTML, 검색 결과, 검색어 입력 자동완성 결과 등을 캐시하여 웹 페이지 로딩 시간을 단축하고 사용자에게 빠른 검색 결과를 제공한다.
- 캐싱 서버 기술: Redis와 Memcached는 많은 애플리케이션에서 사용되는 인기 있는 캐싱 서버 기술 중 두 가지이다. 이들은 빠른 데이터 검색과 저장을 위한 도구로 사용되며, 각각의 장점과 사용 사례가 있다.

반응형