📗 개발자 책 읽기/가상 면접 사례로 배우는 대규모 시스템 설계 기초 10

[System Design Interview] 12. 채팅 서버 시스템 설계하기

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 12장에서는 채팅시스템을 설계해 봅니다. 설계하고자 하는 요구사항은 아래와 같습니다. 응답지연이 낮은 1:1 채팅 그룹 채팅(최대 100명) 지원 다양한 단말 지원 (앱, 웹). 하나의 계정으로 여러 단말에 동시 접속 가능 사용자 접속상태 표시 채팅 이력 보관 [목차] 클라이언트 통신 채팅 서비스 개략적 설계 채팅 서비스의 데이터 저장소 메시지 흐름 과정 📌 01. 클라이언트 통신 클라이언트는 서로 직접 통신하지 않습니다. 각 클라이언트는 위에 나열한 모든 기능을 지원하는 "채팅 서비스"와 통신합니다. 채팅을 시작하려는 클라이언트는 네트워크 통신..

[System Design Interview] 10. 알림 서버 시스템 설계하기

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 10장에서는 알림 시스템을 설계합니다.알림시스템이란 모바일 푸시알림 뿐 아니라, SMS 메세지, 이메일 등을 포함합니다. [목차] 알림 유형별 지원 방안 개략적인 알림 시스템 설계 해보기 📌 01. 알림 유형별 지원방안 ios, aos, sms, 이메일을 이야기합니다. 1) IOS 푸시 알림 IOS 에서 푸시 알림을 보내기 위해서는 3가지 컴포넌트가 필요합니다. 알림제공자 (provider) 알림 요청(notification request)을 만들어 애플 푸시 알림 서비스(APNS) 로 보내는 주체입니다. 알림요청을 만들려면 다음과 같은 데이터가..

[System Design Interview] 07. 분산 시스템 환경에서의 고유 유일 ID 값 생성하기 (feat UUID)

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 7장에서는 분산환경에서의 유일 ID 생성기를 설계하는 방법에대해서 다룹니다. 보통 MySQL 같은 RDB 를 위주로 사용하는 저(?) 같은 사람은 유일 ID로 'auto_increment' 를 생각하는데 분산환경에서는 이러한 접근법이 통하지 않습니다. 분산환경에서 'auto_increment'가 통하지 않는 이유는, 보통 데이터베이스 1대만 사용하지 않는 것은 물론이고 여러 데이터베이스 서버를 쓰는 경우에는 지연시간을 낮추기가 무척 힘들기 때문이라고 합니다. 그렇기 때문에 이번 글에서 유일성이 보장되는 ID 설계방법을 정리해봅니다. [목차] 다중..

[System Design Interview] 06. ⚙️ 키-값 저장소 설계하기(2) - 분산 저장소 구현에 필요한 기술적 고려사항들

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 6 장에서는 비 관계형 데이터베이스라 불리우는, 키-값 저장소에 대해서 이야기하면서 아래 조건에 해당되는 키-값 저장소를 분산 시스템에서의 조건으로 설계해봅니다. 1. 키-값 쌍의 크기는 10KB 이하이다. 2. 큰 데이터를 저장할 수 있어야 한다. 3. 높은 가용성을 제공해야 한다. 따라서 시스템은 설사 장애가 있더라도 빨리 응답해야한다. 4. 높은 규모 확장성을 제공해야한다. 따라서 트래픽 양에 따라 자동적을 ㅗ서버 증설/삭제가 이루어져야 한다. 5. 데이터 일관성 수준은 조정이 가능해야 한다. 6. 응답 지연시간(latency)은 짧아야한다..

[System Design Interview] 06. ⚙️ 키-값 저장소 (비 관계형 데이터베이스) 설계하기(1) - CAP 이론 정리

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 6 장에서는 비 관계형 데이터베이스라 불리우는, 키-값 저장소에 대해서 이야기하면서 아래 조건에 해당되는 키-값 저장소를 분산 시스템에서의 조건으로 설계해봅니다. 1. 키-값 쌍의 크기는 10KB 이하이다. 2. 큰 데이터를 저장할 수 있어야 한다. 3. 높은 가용성을 제공해야 한다. 따라서 시스템은 설사 장애가 있더라도 빨리 응답해야한다. 4. 높은 규모 확장성을 제공해야한다. 따라서 트래픽 양에 따라 자동적으로 서버 증설/삭제가 이루어져야 한다. 5. 데이터 일관성 수준은 조정이 가능해야 한다. 6. 응답 지연시간(latency)은 짧아야한다..

[System Design Interview] 05. ⚙️ 안정해시란?

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 5장에서는 안정 해시 설계에 대한 내용을 다룹니다. 이번 글에서는, 안정 해시가 왜 필요하며 어떻게 동작하는지에 대해서 이야기합니다. [목차] 해시 키 재배치 문제 안정 해시란 안정 해시 동작 과정 안정 해시 장점 📌 01. 해시 키 재배치 문제 (rehash) 해시 키 재배치 문제란, 안정 해시로 인해 풀고자하는 문제입니다. 해시 키 재배치 문제가 일어나는 상황 예시 보통 N개의 서버가 있고, 아래와 같은 해시 함수를 사용하여 부하를 균등하게 나누고 있다고 가정합니다. 클라이언트에서는, 이렇게 계산된 serverIndex 값을 이용해 데이터에 ..

[System Design Interview] 04. 트래픽 처리율 제한 장치의 설계 (rate limiter)❗️❗️

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 4 장의 내용은, 다양한 시스템 입장에서의 트랙픽 처리율을 제한하는 설계에 대해서 이야기합니다. 책의 내용을 참고해서 정리하였기 때문에, 처리율 제한 장치의 자세한 구현 방법 보다는, 이것이 무엇이고 왜 사용해야하는지 처리율 제한 장치를 설계할 떄 어디에 두어야하는지, 어떤 목표를 가지고 알고리즘이 존재하는지 등에 대해서 이야기합니다. 처리율 제한 장치란 처리율 제한 장치의 위치 (클라이언트, 서버) 처리율 제한 알고리즘에 대해서 분산 서비스 환경에서 고려해야할 점 그 외에, 처리율 제한 시 고려해야할 것 들 [목차] 처리율 제한장치란 처리율 제..

[System Design Interview] 03. 시스템 설계 면접 공략법 ❗️

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 3장의 내용은 음.. 저자가 생각하는 시스템 설계 면접의 꿀팁입니다! 면접 팁..? [목차] 기술 면접을 보는 이유 엔지니어가 가져야 할 기술 면접 떄 해야할 것, 하지 말아야할 것 📌 3장 - 시스템 설계 면접 공략 법 저자와 저의 직무, 입장, 상황이 다르기 때문에 저자의 생각 중, 저에게 와닿는 글만 조금 바꿔서 가져왔습니다. 1. 시스템 설계 면접을 보는 이유 (기술 면접) 기술적인 측면만을 평가하는 자리가 아님 지원자가 협력에 적합한 사람인지 압박이 심한 상황도 잘 헤쳐 나갈 자질이 있는지 모호한 문제를 건설적으로 해결할 능력이 있는지 ..

[System Design Interview] 02. 개략적인 규모 측정

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 2장의 내용은 아직 아는게 적어서 그런것인지 내용도 많지 않고 크게 와닿지 않아, 짧게 정리합니다. 개략적인 규모 추정을 효과적으로 하는데 필요한 기본기 [목차] 개략적인 규모 추정 2의 제곱수 응답지연 값 가용성에 관계된 수치들 트위터 시스템 설계 예시 📌 2장 - 개략적인 규모 추정 1. 개략적인 규모 추정(back-of-the-envelope estimation)이란 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)를 행하여 추정치를 계산하는 행위 즉, 어떤 설계가 요구사항에 부합할 것인지를 보기 위한 것 ..

[System Design Interview] 01. 사용자 수에 따른 규모 확장성 - 인프라 확장

가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다. 1장에서는 사용자 수에 따른 서비스 규모의 확장 흐름에 대해서 이야기합니다. 단일서버부터 시작하여, 디비 분리, 서버 분리, 물리적인 데이터센터의 분리 등 서비스 규모가 어떤식으로 확장되는지 큰 흐름을 파악할 수 있는 장이였습니다. ➡️ 사용자 수에 따른 적절한 시스템을 설계하기! [목차] 단일서버 구성 데이터베이스의 분리 수직적 규모확장 vs 수평적 규모확장 캐시 CDN 무상태 웹 계층 (Stateless) 데이터 센터 메시지 큐 데이터베이스의 규모 확장 (샤딩과 파티셔닝) 1. 단일 서버 복잡한 시스템을 설계하기전에 모든 컴포넌트가 단 한대에..

반응형