아키텍처
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 8장 ) URL 단축기 설계DESIGN PATTERN & ARCHITECTURE 2024. 10. 26. 17:36
1단계 문제 이해 및 설계 범위 확정 요구 사항 URL 단축 : 주어진 긴 URL을 훨씬 짧게 줄임URL 리디렉션 : 축약된 URL로 HTTP 요청이 오면 원래 URL로 안내 높은 가용성과 규모 확장성, 그리고 장애 감내가 요구됨 트래픽 파악 매일 1억개의 단축 URL을 만들어 낼 수 있어야 함 개략적 추정 쓰기 연산 매일 1억개의 단축 URL 생성 초당 쓰기 1억 / 24 / 3600 = 1160 읽기 연산 읽기 연산과 쓰기 연산의 비율을 10: 1로 가정 읽기 연산은 초당 11600회 발생 저장 용량 URL 단축 서비스를 10년간 운영한다고 가정하면 1억 x 365 x 10 = 3650억 개의 레코드를 보관해야 함 축악전 URL의 평균 길이는 100바이트로 가정 10년동안 필요한 저장 용량은 3650..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 7장 ) 분산 시스템을 위한 유일 ID 생성기 설계DESIGN PATTERN & ARCHITECTURE 2024. 10. 26. 16:59
분산 시스템을 위한 유일 ID 생성기 설계 분산 시스템에서는 auth_increment 속성이 설정된 관계형 데이터 베이스의 기본 키는 적용되지 않음 1단계 문제 이해 및 설계 범위 확정 요구 사항 ID는 유일해야 함 ID는 숫자로만 구성되어야 함 ID는 64비트로 표현될 수 있는 값이어야 함 ID는 발급 날짜에 따라 정렬 가능해야 함 초당 10,000 개의 ID를 만들 수 있어야 함 2단계 개략적 설계안 제시 및 동의 구하기 다중 마스터 복제 (multi-master replication)데이터의 auth_increment 기능을 활용하면서 k(= 데이터 베이스 서버 수) 만큼 아이디를 증가시킴 단점 여러 데이터 센터에 걸쳐 규모를 늘리기 어려움 ID의 유일성은 보장되지만 시간 흐름에 맞춰 커지..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 6장 ) 키-값 저장소 설계DESIGN PATTERN & ARCHITECTURE 2024. 10. 24. 23:05
키-값 저장소 (key-value store)키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스 고유 식별자(identifier)를 키로 가짐 키는 유일해야하며 해당 키에 매달린 값은 키를 통해서만 접근이 가능 키는 해시값이나 일반 테스트 모두 가능 성능상의 이유로 키는 짧을수로 좋음 키-값 쌍 (pair)키-값 사이의 연결관계 연산put(key, value) : 키-값 쌍을 저장소에 저장get(key) : 인자로 주어진 키에 매달린 값을 꺼냄 ex) 아마존 다이나모, memcached, 레디스 등 문제 이해 및 설계 범위 확정 요구사항 키-값 쌍의 크기는 10KB 이하 큰 데이터를 저장할 수 있어야 함 높은 가용성 시스템이 장애가 있더라도 빠르게 응답해야함 높은 규모 확장성 트래픽 양에 따라 자..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 5장 ) 안정 해시 설계DESIGN PATTERN & ARCHITECTURE 2024. 10. 23. 22:37
안정 해시 설계 수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 전달하는 것이 중요 해시 키 재배치 문제 해시 함수N개의 서버에 부하를 균등하게 나누는 보편적인 방법ex) serverIndex = hash(key) % N 서버 풀의 크기가 고정되어 있을 때, 그리고 데이터 분포가 균등할 때는 잘 동작 서버 풀의 수가 변경되면 대부분의 키가 재분배되는 문제발생 서버 1개가 삭제되면 캐시 클라이언트가 데이터가 없는 엉뚱한 서버에 접속하게 됨 안정 해시 (consistent hashing)해시 테이블 크기가 조정될 때 평균적으로 k/n개의 키만 재배치하는 해시 기술k = 키의 개수 n = 슬롯의 개수 해시 공간과 해시 링 해시링해시 공간을 동그랗게 접어 만든 것 ex)..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 4장) 처리율 제한 장치의 설계DESIGN PATTERN & ARCHITECTURE 2024. 10. 22. 23:11
처리율 제한 장치 (Rate Limiter)클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치 DoS(Denial of Service) 공격에 의한 자원 고갈을 방지 추가 요청에 대한 처리를 중단하여 비용 절감 자원을 아낄 수 있고 우선순위가 높은 API에 더 많은 자원을 할당 가능 서버 과부하를 막음 1단계 문제 이해 및 설계 범위 확정 어떤 종류의 처리 제한 장치를 설계해야 하는지 파악ex) 서버측 API를 위한 장치를 설계 호출 단위의 제한 또는 IP 주소 단위, 사용자 ID 단위 등의 제한 단위 파악 시스템 규모 파악 ex) 대규모 요청을 처리해야 한다면, 가능한 적은 메모리를 사용하고 빠르게 응답해야 함 시스템 환경 파악 ex) 분산 환경 처리율 제한 장치의 독립 서비스 여부..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 3장) 시스템 설계 면접 공략법DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:45
시스템 설계 면접 공략법 설계의 순수성에 집착한 나머지 타협적 결정을 도외시하고 과도한 엔지니어링을 하게 되는 것에 유의해야 함 효과적 면접을 위한 4단계 접근법 1단계 문제 이해 및 설계 범위 확정 부정적 신호 (Red Flag)요구 사항을 완전히 이해하지 않고 답을 내놓는 행위바로 답부터 들이밀기 속도를 늦춰 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 할 것 올바른 질문을 할 것 적절한 가정을 할 것 시스템 구축에 필요한 정보를 모을 것 질문 예시 구현해야 하는 기능 제품의 사용자 수 회사의 규모 확장성 기간벌 규모 예상치 회사가 사용하는 기술 스택 설계 단순화를 위한 기존 서비스 2단계 개략적인 설계안 제시 및 동의 구하기 면접관에게 개략적인 설계안을 제시하고 동의를 얻을 것 면접관을 ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장) 개략적인 규모 추정DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:14
개략적인 규모 추정 어떤 설계가 시스템의 요구 사항에 부합하는지 보기 위한 지표로 성능 추정에 사용됨 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수로 표현최소 단위 = 1바이트 = 8비트 = ASCII문자 하나가 차지하는 메모리 크기UTF-8의 경우 1~4바이트 2의 제곱수 근사치 이름 축약형 101천 1킬로바이트1KB201백만 1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB501000조1페타바이트1PB 응답 지연 값 연산명시간 L1 캐시 참조 0.5ns분기 예측 오류 (branch mispredict) 5nsL2 캐시 참조 7ns뮤텍스 락 / 언락 100ns주 메모리 참조 100nsZippy로 1KB 압축 10000ns = 10us1Gbps 네트워크로 2KB 전송 20000ns ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1장) 사용자 수에 따른 규모 확장성DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 22:35
단일 서버 모든 컴포넌트가 단 한대의 서버에서 실행됨 사용자의 요청 처리 흐름 사용자가 도메인 이름을 이용하여 웹 사이트에 접속 도메인 이름을 DNS에 질의하여 IP 주소로 변환해당 IP 주소로 HTTP 요청 전달 요청 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답 반환 모바일 앱과 웹 서버간 통신을 위해서는 HTTP 프로토콜을 이용 응답으로 반환되는 데이터의 포맷으로는 보통 JSON을 사용 데이터베이스사용자가 늘어남에 따라 트래픽을 감당하기 위해 여러 서버를 구성하게 됨 웹 / 모바일 트래픽 처리 용도 데이터 베이스 용 따로 구성함에 따라 독립적 확장이 가능해짐 데이터 베이스의 선택 관계형 데이터베이스 (RDBMS)자료를 테이블과 열, 칼럼으로 표현 SQL을 사용하여 여러 테이블에 있는 ..