본문 바로가기

Coding/시스템 디자인11

Uber는 어떻게 Redis를 통해 초당 4천만 읽기를 제공하는가 2020년 우버는 Docstore라는 분산 데이터베이스를 출시했다. 이는 MySQL을 기반으로 만들어졌으며 초당 수천만건의 요청을 처리하는 동시에 페타바이트의 데이터를 저장할 수 있었다. 수년에 걸쳐 Docstore는 우버의 모든 비즈니스 분야에서 서비스 구축을 위해 사용되었고 이러한 어플리케이션의 대부분은 낮은 레이턴시와 높은 성능, 그리고 확장성을 요구했다.Challenges with Low latency database reads확장성이 높고 낮은 읽기 지연이 필요한 애플리케이션을 처리할 때 대다수의 데이터베이스는 문제를 맞이한다. 그 중 몇가지는 다음과 같다.디스크에서 데이터를 검색하는 속도는 임계값이 있다. 또한 어플리케이션의 데이터 모델과 쿼리를 최적화하여 대기 시간을 개선하는 것에도 임계값은.. 2024. 5. 7.
결제 시스템 디자인 Step1. Understand the Problem and Establish Design Scope 결제 시스템은 각각의 사람들에게 다른 의미로 받아들여질 수 있다. 몇몇은 애플페이나 구글 페이와 같은 디지털 월렛 개념으로 생각할수도 있고 몇몇은 페이팔이나 스트라이프처럼 결제를 담당하는 백엔드 시스템으로 생각할 수 있다. 따라서 인터뷰를 시작하기 전 요구사항을 명확히 해야한다. 나: 어떤 종류의 결제 시스템을 만들어야하나요? 면접관: 아마존과 같은 이커머스의 결제 시스템입니다. 아마존에서 사용자가 주문을 진행하면 결제 시스템은 돈의 이동에 관한 모든 것을 처리합니다. 나: 신용카드, 페이팔, 계좌이체 등 여러가지 종류 중 어디까지 지원해야하나요? 면접관: 이번 면접에서는 신용카드만을 대상으로 합니다. .. 2023. 12. 18.
광고 클릭 이벤트 시스템 디자인 Problem Statement 모든 소셜 미디어 및 이커머스 회사들이 성장하면서 디지털 광고의 중요성이 그 어느때보다 높아졌고 그에 따라 대다수의 기업들은 디지털 광고에 상당한 투자하고 있다. 모든 기업들은 광고 클릭 이벤트를 추적하고 통계를 내서 광고에 예산을 좀 더 효율적으로 할당하기를 원한다. 따라서 광고 클릭을 정확하게 추적하는건 굉장히 중요한 일이다. 또한 하루에 10억개의 광고 클릭이 발생하고 총 200만개 이상의 광고가 발생한다고 가정하면 데이터 양 또한 굉장히 많을 것이다. 본 포스팅에서는 주요 2가지 유즈케이스에 대해 살펴본다. 최근 M분동안 특정 광고의 클릭 이벤트 개수를 구한다. 최근 M분동안 가장 클릭이 많이 된 N개의 광고를 구한다. 여기에는 우리가 다뤄야 할 몇가지 엣지케이스가.. 2023. 12. 14.
채팅 서비스 시스템 디자인 Step1. Understand the problem and establish design scope 첫 번째로 면접관이 채팅 시스템 설계를 요청할 때 정확히 어떠한 것을 염두에 두고 있는지 파악해야 한다. 최소한 1:1 채팅인지 그룹 채팅인지 정도는 알아야 한다는 말이다. 아래와 같은 질문을 던질 수 있겠다. 나: 1:1 채팅 또는 그룹 채팅 중 어떠한 채팅 앱에 초점을 맞춰야하나요? 면접관: 1:1 / 그룹 채팅 모두 지원해야 합니다. 나: 모바일 앱, 웹 앱 중 어떤 것인가요? 둘 다 인가요? 면접관: 둘 다 입니다. 나: 스케일은 어느정도인가요? 스타트업 제품 수준인가요, 아니면 대규모 트래픽을 가졌나요? 면접관: DAU 5천만을 감당할 수 있어야 합니다. 나: 그룹 채팅의 경우 참여할 수 있는 .. 2023. 12. 13.
Whatsapp(왓츠앱) 시스템 디자인 Key Requirements 왓츠앱은 전 세계의 수많은 유저들이 빈번하게 접근하는 확장성이 뛰어난 시스템이기 때문에 신뢰성있는 시스템 디자인이 필수적이다. 그러므로 왓츠앱의 주요 요구사항을 식별하는 것은 굉장히 중요하다. 왓츠앱의 기본 요구사항 중 일부는 다음과 같다. 1:1 대화를 지원해야 한다. 마지막으로 본 시간과 메시지 확인을 표시하는 기능(전송, 도착, 읽음 표시) 종단 간 암호화된 미디어 전송 Capacity Estimation 우리의 목표는 대용량 트래픽을 수용할 수 있는 플랫폼을 설계하는 것이다. 이것을 위해 메시지와 유저의 수, 피크 타임의 트래픽, 데이터 저장소등 다양한 요소들을 고려해야 한다. 아래와 같은 상황으로 가정해보자. 하루에 100억건의 메시지가 10억명의 유저들을 통해 전.. 2023. 11. 30.