본문 바로가기

전체 글847

티켓 예매 서버 시스템 디자인 What is an online movie ticket booking system?영화 티켓 예약 시스템은 온라인을 통해 사람들이 좌석을 예매할 수 있는 기능을 제공한다. 티켓팅 시스템은 유저들이 언제 어디서나 현재 상영되는 영화를 둘러보고 좌석을 예매할 수 있도록 해준다.Requirements and Goals of the SystemFunctional Requirements제휴 영화관이 위치하는 다양한 도시를 보여줄 수 있어야 한다.유저가 도시를 선택하면 해당 도시에서 개봉한 영화를 보여줘야 한다.유저가 영화를 선택하면 해당 영화를 상영하는 영화관과 상영 시간을 보여줘야 한다.유저는 특정 영화관을 선택하고 티켓을 예매할수도 있다.유저에게 좌석 배치도를 보여줄 수 있어야 한다. 또한 유저는 자신의 선호.. 2024. 10. 13.
MSA 환경에서 선착순 쿠폰 발급 설계해보기 개요MSA로 구축된 환경에서 선착순 쿠폰 발급 시스템을 설계해본다. 설계는 프로모션을 담당하는 서버 입장에서 진행하며 실제 쿠폰을 발급하는 서버와 기타 검증을 수행할 수 있는 서버가 따로 존재하는 상황을 가정한다. 또한 휴먼 리소스가 부족한 제한된 상황에서 최소한의 작업만을 통해 기능을 구현해야 한다.쿠폰 잔여 재고 확인, 쿠폰 발급, 발급 대상 검증 등을 프로모션 서버에서만 진행할 수 있다면 굉장히 간단하게 풀어낼 수 있는 문제다. (관련 포스팅 링크) 하지만 프로모션 서버가 해당 책임을 가지고 있지 않은 상황이기에 까다로운 상황이 몇가지 존재한다. 본 포스팅은 이를 해결하기 위한 설계 과정에 대해 기술한다.최초 아키텍처각 서버의 역할을 다음과 같다.Promotion Server: 프로모션 서버는 클라.. 2024. 8. 14.
토스 SLASH 23 - 실시간 시세 데이터 안전하고 빠르게 처리하기 정리 아키텍처국내 시세의 경우 한국거래소에서 실시간으로 제공해주는 전문 형식의 데이터를 통해 체결가, 호가뿐 아니라 거래정지, 공매도, 외국인 투자 현황을 표시한다. 시세 플랫폼은 거래소 데이터를 제일 먼저 수신하고 가공한 뒤 내부 서비스들에게 제공한다. 내부 서비스들은 가공된 데이터 중 각자 필요한 정보를 실시간 또는 API를 통해 얻게 된다. 시세 플랫폼은 단순히 전문을 디코딩 및 전달만 하는게 아니라 주식 차트처럼 가공 데이터를 누적하거나 여러정보를 합성하여 제공하기도 한다. 그리고 이러한 시세 플랫폼은 낮은 지연시간과 빠른 장애복구를 최우선 목표로 삼고 있다.시세 플랫폼은 총 3가지 파트로 구성되어있다. 먼저 수신부는 거래소가 제공하는 시세 데이터를 UDP 멀티캐스트 그룹에 접속하여 읽어오는 일을 한.. 2024. 8. 13.
토스 SLASH 22 - 토스뱅크의 완전히 새로운 대출 시스템 정리 아키텍처(왼쪽 아키텍처) 기존 금융권의 경우 대부분의 비즈니스 로직이 계정계라고 불리는 모놀리틱 코어뱅킹 시스템내에 구현된다. 전통적인 금융권 아키텍처에서 채널계라고 불리는 서비스 서버는 사용자와 연계해 제품을 사용하는데 필요한 요청과 응답을 코어 뱅킹 시스템의 전문 규격에 맞게 변환하고 전달하는데에 중점을 두고 있었다.(오른쪽 아키텍처) 토스뱅크는 마이크로 서비스로 구성된 서비스 서버와 모놀리틱으로 구성된 코어뱅킹 서비스를 각각 독립된 API서비스로 정의하고 전문방식이 아닌 HTTP API통신을 통해 필요할 경우 코어뱅킹 시스템과 통신하며 독립된 마이크로 서비스가 비즈니스 로직을 직접 해결할 수 있도록 구성했다. 비즈니스 로직을 처리하는 시스템 구조뿐만 아니라 KCB, NICE, 신용정보원같은 대외기관.. 2024. 8. 8.
Rate Limiter 시스템 디자인 Token Bucket토큰 버켓의 경우 사전에 정해진 용량을 갖는다. 토큰은 주기적으로 사전에 설정된 비율로 버켓에 저장된다. 그리고 버켓이 꽉차게 되면 정해진 용량을 초과하여 토큰을 추가하지 않는다.각 API 요청은 1개의 토큰을 사용한다. 요청이 오면 버켓에 적어도 1개의 토큰이 존재하는지 확인한다. 존재하는 경우 1개의 토큰을 버켓에서 꺼내고 요청이 처리된다. 버켓이 비어있는 경우 요청들은 버려진다. 위 사진을 보면 유저마다 분당 3개의 요청량 제한이 설정되어있다.1번 유저가 10:00:00에 첫 번째 요청을 보냈을 때 토큰은 3개가 존재하므로 해당 요청은 정상 처리되며 잔여 토큰은 2개로 감소한다.10:00:10에 유저의 두 번째 요청이 오고 토큰은 2개가 존재하기 때문에 정상 처리되며 잔여 토큰.. 2024. 8. 7.
토스 SLASH 22 - 애플 한 주가 고객에게 전달 되기까지 정리 해외주식 전체 아키텍처토스증권은 크게 게이트웨이, 채널계, 해외원장, 국내원장 4가지로 이루어져 있다. 대부분의 증권사들의 원장계는 C기반의 모놀리틱 서버로 구성되어있는 반면 토스증권의 해외주식 원장계는 MSA로 구성되어있다. 주문 체결 흐름도고객은 토스증권을 통해 주문을 제출하게 되지만 토스증권은 한국 법인이기에 나스닥과 같은 현지 거래소와 직접 거래할 수 없다. 따라서 해외거래 중개인 브로커를 통해 주문을 제출하게 된다. 브로커를 통해 거래가 이루어지기 때문에 토스증권과 브로커의 주문 정합성은 매우 중요한 요소이다. 앞선 장표의 흐름을 시스템 레벨에서 도식화한 모습은 위와 같다. 고객의 주문은 매매 서버 - 매매 요청 서버를 거쳐 브로커에게 전달되고 브로커가 거래소에 주문을 제출하는 구조이다. 제출된.. 2024. 7. 4.