기술블로그9 우아한 형제들의 회원시스템 이벤트기반 아키텍처 구축하기 2 본 포스팅은 아무런 상업적 이익과 금전적 수입에 연관되어 있지 않습니다. 문제 시 삭제 조치하겠습니다. 블로그 프로필의 이메일이나 lion0077v@gmail.com으로 메일 주시기 바랍니다. 이전 포스팅에서는 물리적인 시스템 분리와 비동기 HTTP 통신, 올바른 이벤트 발행 방식까지 살펴보며 의존 관계의 본질이 무엇인지 확인했다. 메시징 시스템을 사용해 물리적인 의존을 제거하는 방법과 “메시지가 담는 의도”에 따라 전혀 다른 결과를 얻는다는 것을 알 수 있었다.예시 상황처럼 ‘가족관계를 탈퇴하라’ 라는 달성 목적이 아닌 본인인증을 해제했다는 이벤트를 발송해야 한다. 즉, 우리가 발행해야 하는 이벤트는 도메인 이벤트로 인해 달성할 목적이 아닌 도메인 이벤트 그 자체가 되어야 한다.도메인이란 해결하고자 하.. 기술블로그 2024. 10. 23. 우아한 형제들의 회원시스템 이벤트기반 아키텍처 구축하기 1 본 포스팅은 아무런 상업적 이익과 금전적 수입에 연관되어 있지 않습니다. 문제 시 삭제 조치하겠습니다. 블로그 프로필의 이메일이나 lion0077v@gmail.com으로 메일 주시기 바랍니다.성공적으로 성장하는 회사들이 대부분 그렇듯 배달의 민족 주문수는 J커브를 그리면서 가파른 성장을 경험하였다. 2015년 서비스 출범 당시 하나의 프로젝트로 만들어졌던 배달의 민족은 더 이상 하나의 시스템, 하나의 데이터베이스 만으로 폭발적으로 늘어나는 트래픽을 감당하지 못한다.이에 배달의 민족은 MSA로 전환을 시도하였고 2019년 모든 시스템이 분리에 성공하며 마이크로 서비스를 완성하였다. 이제 배달의 민족은 이벤트 기반 아키텍처의 시대로 돌입한다.그럼 우리는 배달의민족의 이벤트 기반 아키텍처를 다루는 노하우를 확.. 기술블로그 2024. 9. 22. LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 - 본론2 서론에서 말했듯 LINE에서 활용하는 이벤트 기반 아키텍처의 개요는 아래와 같다. 🔥 오픈챗 서버에서는 메시지 전송과 메시지 리액션, 메시지 읽음 등과 같은 오픈챗 내 다양한 행위를 모두 이벤트로 간주하고 이벤트가 생성될 때마다 스토리지에 저장한 후 오픈챗에 참여하고 있는 모든 사용자에게 서버 푸시로 ‘새로운 이벤트가 생성됐으니 받아 가세요’라고 알린다. 서버 푸시를 받은 사용자(클라이언트)는 스토리지에 새로 들어온 이벤트를 페치(fetch) 이벤트 API로 받아가고 새 메시지 등을 화면에 추가하는 액션을 실행한다. 이번엔 핫 챗에서 급증하는 트래픽을 다룰 수 있는 LINE 만의 노하우 두 번째 방법을 알아보자. 🎮핫 챗에서 급증하는 트래픽을 다루는 방법 ✅case2. 오픈챗 참여 요청 급증 라인 오픈챗.. 기술블로그 2023. 8. 29. LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 - 본론1 서론에서 말했듯 LINE에서 활용하는 이벤트 기반 아키텍처의 개요는 아래와 같다. 🔥 오픈챗 서버에서는 메시지 전송과 메시지 리액션, 메시지 읽음 등과 같은 오픈챗 내 다양한 행위를 모두 이벤트로 간주하고 이벤트가 생성될 때마다 스토리지에 저장한 후 오픈챗에 참여하고 있는 모든 사용자에게 서버 푸시로 ‘새로운 이벤트가 생성됐으니 받아 가세요’라고 알린다. 서버 푸시를 받은 사용자(클라이언트)는 스토리지에 새로 들어온 이벤트를 페치(fetch) 이벤트 API로 받아가고 새 메시지 등을 화면에 추가하는 액션을 실행한다. 자 그럼 이제 핫 챗에서 급증하는 트래픽을 다룰 수 있는 LINE 만의 노하우를 알아보자. 🎮핫 챗에서 급증하는 트래픽을 다루는 방법 ✅Case 1. fetch 이벤트 API 요청 급증 이 .. 기술블로그 2023. 8. 2. LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 - 서론 📑서론, 오픈챗? 오픈챗은 메신저형 소셜 네트워크와 장점을 공유한다. 여러 사람이 동시에 소통할 수 있으며, 실시간으로 참여하지 않더라도 남겨진 메시지를 통해 수월하게 소통할 수 있다. 또한 접속만 하고 있다면, 참여 여부와 상관없이 인원과 채팅내역이 지속된다. 파일, 목소리, 단체통화 등 여러 형태로 소통이 가능하며 연동된 앱에 따라선 송금, 선물등의 행위까지 수월하게 할 수 있으며 대부분 모바일이 연동되므로 비교적 접속과 참여가 자유롭다. 한 오픈챗에 수천 명부터 수만 명의 사용자가 참여할 수 있고, 활발한 오픈챗은 한 오픈챗에서만 1분에 20만 개의 API 요청을 처리하기도 한다. 통계적으로 라인의 오픈챗 서버는 1분에 천만 개, 하루에 약 100억 개의 API요청을 처리하고 있다. 따라서 네이버의.. 기술블로그 2023. 8. 1. 네이버 메인 페이지의 트래픽 처리 - 마무리 지금까지 네이버가 메인 페이지에서 발생하는 트래픽을 어떻게 처리하는지 총 서론, 본편 1, 본편 2로 나누어 살펴보았다. 서비스 아키텍처 모식도를 다시 한번 살펴보며 정리하자. 🔔 서비스 요구사항 🔔 ❗어떤 서버로 접속해도 동일한 내용을 보여 주어야 하며, 특정 상탯값(사용자의 로그인 여부 등)에 의존하지 말아야 한다. ❗ 무슨 일이 있어도 사용자에게 서비스가 제공되어져야 한다. => 브라우저에 빈 페이지가 나타나선 안된다. => 메인 페이지에서 연동하는 외부 시스템은 늘 접속 불안정을 가정하고 빠른 실패 전략을 실행한다. ❗ 트래픽 증가에 탄력적으로 대처할 수 있어야 한다. => 트래픽이 폭주할 때 서버 증설만으로도 대응할 수 있어야 한다. => 각 컴포넌트(Web server, WAS)의 효율성을 극.. 기술블로그 2023. 7. 13. 네이버 메인 페이지의 트래픽 처리 - 본편 2 네이버 메인 페이지의 트래픽 처리 - 본편 1에서 정리한 네이버 메인 페이지의 서비스 요구사항과 기술 스택은 다음과 같다. 🔔 서비스 요구사항 🔔 ❗어떤 서버로 접속해도 동일한 내용을 보여 주어야 하며, 특정 상탯값(사용자의 로그인 여부 등)에 의존하지 말아야 한다. ❗ 무슨 일이 있어도 사용자에게 서비스가 제공되어져야 한다. => 브라우저에 빈 페이지가 나타나선 안된다. => 메인 페이지에서 연동하는 외부 시스템은 늘 접속 불안정을 가정하고 빠른 실패 전략을 실행한다. ❗ 트래픽 증가에 탄력적으로 대처할 수 있어야 한다. => 트래픽이 폭주할 때 서버 증설만으로도 대응할 수 있어야 한다. => 각 컴포넌트(Web server, WAS)의 효율성을 극대화할 수 있어야 한다. 1. GCDN(Global C.. 기술블로그 2023. 7. 13. 네이버 메인 페이지의 트래픽 처리 - 본편 1 서비스 특성상 네이버 메인 페이지가 실행하는 역할의 대부분은 데이터를 사용자에게 보여주는 역할 - view이다. 데이터를 받아서 저장하는 동작이 거의 없기 때문에 분산 처리나 다중화에서 트랜잭션을 고민할 필요도 없다. 이런 서비스 특성을 고려해 네이버 서버 개발팀이 도출한 요구사항은 다음과 같다. 🔔 서비스 요구사항 🔔 ❗어떤 서버로 접속해도 동일한 내용을 보여 주어야 하며, 특정 상탯값(사용자의 로그인 여부 등)에 의존하지 말아야 한다. ❗ 무슨 일이 있어도 사용자에게 서비스가 제공되어져야 한다. => 브라우저에 빈 페이지가 나타나선 안된다. => 메인 페이지에서 연동하는 외부 시스템은 늘 접속 불안정을 가정하고 빠른 실패 전략을 실행한다. ❗ 트래픽 증가에 탄력적으로 대처할 수 있어야 한다. => 트.. 기술블로그 2023. 6. 27. 네이버 메인 페이지의 트래픽 처리 - 서론 📑서론 PC나 스마트폰을 접하는 대부분의 사람들이 한 번 정도는 네이버 메인 페이지에 접근한 경험이 있을 것이다. 네이버는 기본적으로 트래픽이 많은 편이지만 사회적으로 이슈가 생겼을 때는 트래픽이 폭발적으로 늘어나게 된다. 위 사진은 2017년 11월 포항에서 지진이 발생했을 때 네이버 메인 페이지의 트래픽 변화를 나타낸 그래프이다. 파란색 선이 평상시의 트래픽이고, 급격하게 상승한 붉은색 선이 지진 발생 당시의 트래픽이다. 14시 30분 12초부터 트래픽이 상승하기 시작해 평상시 트래픽의 6배 수준이 될 때까지 30여 초밖에 걸리지 않았다. 네이버의 개발팀은 이런 상황을 어떻게 해결하는지 알아보자. 📑일반적인 분산 처리 모델 웹서비스에서는 일반적으로 3-Tier 분산 처리 모델을 활용한다. 클라이언트의.. 기술블로그 2023. 6. 24. 이전 1 다음