Web

[웹] 하루 일찍 알수록 좋은 웹 아키텍처 개념

JJANG-JOON 2023. 8. 24. 10:31
반응형

 

***이 글은 해외 글을 번역하여 쓰였으며 해당 글은 특정 웹서비스(storyblocks) 아키텍처 구성을 통해 기초 개념을 제공한다.***

 

 

  1. 사용자가 구글에서 "Strong Beautiful Fog And Sunbeams In The Forest"를 검색한다.
  2. 사용자가 첫 번째 검색 결과로 이동하려고 클릭한다.
  3. 브라우저 내부에서 DNS 서버에 Storyblocks 사이트에 어떻게 접속해야 하는지 물어보고 Storyblocks에 접근을 시도한다.
  4. 브라우저 요청은 Storyblocks 측의 로드 밸런서에 도착하고, 랜덤하게 선택된 서버에서 요청을 처리한다.
  5. 웹 서버는 이미지 정보를 캐싱 서비스에서 가져온 후 필요한 정보를 데이터베이스에 요청한다.
  6. 사용자에게 전달된 이미지의 컬러 프로필이 아직 생성되지 않았다면 "컬러 프로필" 잡(job)을 잡 큐에 보낸다.
  7. 잡 서버는 큐에 추가된 작업을 비동기적으로 처리하고 데이터베이스에 결과를 업데이트한다.
  8. 전체 텍스트 검색 서비스에 사진의 제목을 전달하여 비슷한 사진을 검색한다. 사용자가 Storyblocks의 멤버로 로그인한 경우 계정 정보를 가져온다.
  9. 작업이 완료된 후 데이터 firehose에 페이지 뷰 이벤트를 발생시켜 클라우드 스토리지 시스템에 기록하고, 이 정보는 분석가들이 비즈니스와 관련된 질의에 답하는 데 사용된다.
  10. 서버는 HTML로 화면을 렌더링한 후 사용자의 브라우저로 보내며, 페이지에는 CDN에 연결된 클라우드 스토리지 시스템에서 가져오는 자바스크립트와 CSS 파일이 포함되어 있다.
  11. 브라우저는 콘텐츠를 CDN에서 가져오기 위해 접속하고 사용자에게 보이는 콘텐츠를 렌더링한다.

 

 

설명

  1. DNS (Domain Name Server)
    • DNS는 도메인 이름 (예: google.com)과 IP 주소 (예: 85.129.83.120) 간의 매핑을 제공하는 기술이다.
    • DNS는 인터넷의 "전화번호부" 역할을 하며, 도메인 이름을 IP 주소로 변환하여 서버와 통신 경로를 찾을 수 있게 한다.
  2. 로드 밸런서 (Load Balancer)
    • 로드 밸런서는 들어오는 요청을 여러 서버로 분산하여 부하를 분산시키는 역할을 한다.
    • 수평적 확장을 가능하게 하며, 서버의 과부하를 방지하여 애플리케이션의 가용성과 성능을 향상시킨다.
  3. 웹 애플리케이션 서버 (Web Application Server)
    • 웹 애플리케이션 서버는 사용자의 요청을 받아 핵심 비즈니스 로직을 실행하고 HTML을 생성하여 브라우저로 전송한다.
    • 다양한 언어와 프레임워크를 사용하여 웹 애플리케이션을 구현할 수 있으며, 백엔드 서비스와 데이터베이스와 통신한다.
  4. 데이터베이스 서버 (Database Server)
    • 데이터베이스 서버는 정보를 저장하고 데이터를 관리하는 역할을 한다.
    • SQL과 NoSQL 데이터베이스가 있으며, SQL은 관계형 데이터를 다루고 NoSQL은 대규모 데이터 처리를 위한 데이터베이스 기술이다.
  5. 잡 큐(Job Queue) & 서버
    • 웹 애플리케이션은 백그라운드에서 비동기 작업을 수행해야 할 때가 있다.
    • 이러한 작업을 관리하기 위해 잡 큐 아키텍처를 사용한다.
    • 잡 큐는 비동기 작업 목록을 저장하고, 잡 서버는 이러한 작업을 처리한다.
    • 예를 들어, 크롤링, 데이터 처리, 이메일 전송 등의 작업을 비동기적으로 처리할 수 있다.
  6. 전체 텍스트 검색 서비스
    • 많은 웹 애플리케이션은 텍스트 검색 기능을 제공한다.
    • 전체 텍스트 검색은 역 인덱스를 사용하여 특정 키워드를 포함하는 문서를 빠르게 검색한다.
    • Elasticsearch, Sphinx, Apache Solr 등의 검색 엔진을 사용하여 구현할 수 있다.
  7. 서비스
    • 애플리케이션이 규모가 커지면 특정 기능을 분리하여 별도의 서비스로 운영한다.
    • 예를 들어 계정 서비스, 컨텐츠 서비스, 결제 서비스 등이 있으며 서로 연동된다.
  8. 데이터
    • 데이터 처리는 기업의 성공에 중요한 역할을 한다.
    • 데이터 파이프라인을 통해 데이터를 수집, 변형, 저장하고 분석한다.
    • AWS Kinesis, Kafka, 데이터 웨어하우스 (Redshift) 등을 사용한다.
  9. 클라우드 스토리지
    • 클라우드 스토리지는 데이터를 인터넷을 통해 저장, 접근 및 공유할 수 있는 방법을 제공한다.
    • AWS S3와 같은 클라우드 스토리지를 사용하여 데이터를 저장하고 접근한다.
  10. CDN (Content Delivery Network)
    • CDN은 정적인 데이터를 빠르게 제공하기 위한 기술이다.
    • 데이터를 전 세계의 엣지 서버에 분산시켜 사용자에게 더 빠르게 제공한다.
    • CSS, 자바스크립트, 이미지, 비디오 등의 정적 데이터를 CDN을 통해 제공한다.

 

+

 

캐싱 서비스

 

 

캐싱 서비스는 주로 데이터나 연산 결과를 빠르게 저장하고 검색하기 위한 키/값 데이터 저장소이다. 이를 통해 애플리케이션은 자주 사용되는 데이터나 연산 결과를 다시 계산하지 않고 이전에 캐시한 정보를 사용함으로써 성능과 효율성을 향상시킬 수 있다. 여기에 몇 가지 실제 사용 사례와 가장 널리 사용되는 두 가지 캐싱 서버 기술에 대한 언급이 있다:

  1. Google: 구글은 검색 결과를 캐시하여 사용자가 동일한 검색어로 다시 검색할 때 이전 결과를 빠르게 표시한다. 이렇게 함으로써 동일한 검색에 대한 반복적인 데이터베이스 또는 웹 크롤링 작업을 피할 수 있다.
  2. Facebook: 페이스북은 로그인 시에 포스트 데이터, 친구 목록 등을 캐시하여 사용자 경험을 향상시킨다. 이렇게 함으로써 매번 로그인할 때마다 데이터베이스에서 모든 정보를 다시 가져오지 않아도 된다.
  3. Storyblocks: Storyblocks는 React 서버 사이드 렌더링으로 생성된 HTML, 검색 결과, 검색어 입력 자동완성 결과 등을 캐시하여 웹 페이지 로딩 시간을 단축하고 사용자에게 빠른 검색 결과를 제공한다.
  4. 캐싱 서버 기술: Redis와 Memcached는 많은 애플리케이션에서 사용되는 인기 있는 캐싱 서버 기술 중 두 가지이다. 이들은 빠른 데이터 검색과 저장을 위한 도구로 사용되며, 각각의 장점과 사용 사례가 있다.

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

반응형