시스템 아키텍쳐 (9) 썸네일형 리스트형 8장 URL 단축기 설계 URL 단축기 설계 1단계 문제 이해 및 설계 범위 확정 질문 : URL 단축기가 어떻게 동작해야 하는지 예제를 보여주실 수 있나요? 답변 : https://www.systeminterview.com/q=chatsystem&c=loggedin&v=v3&l=long이 입력이 주어질 경우 이 서비스는 https://tinyurl.com/y7ke-ocwj와 같은 단축 URL을 결과로 제공해야하며, 단축 URL로 접속하여도 원래 URL로 갈 수 있어야 합니다. 질문 : 트래픽 규모는 어느 정도 인가요? 답변 : 매일 1억(100million) 개의 단축 URL을 만들어 낼 수 있어야 합니다. 질문 : 단축 URL의 길이는 어느 정도여야 하나요? 답변 : 짧을수록 좋습니다. 질문 : 단축 URL에 포함될 문자에 .. 7장 분산 시스템을 위한 유일ID 생성기 설계 분산 시스템을 위한 유일ID 생성기 설계 유일 ID를 RDB의 auto_increment 속성을 사용 하면 된다고 생각할 수 있지만 데이터베이스 서버 한대로는 그 요구를 감당할 수 없으며, 여러 데이터베이스 서버를 쓰는 경우 지연시간(delay)를 낮추기가 무척 힘들다. 1단계 문제 이해 및 설계 범위 확정 질문 : ID는 어떤 특성이 있나요? 답변 : ID는 유일해야 하고, 정렬 가능해야 합니다. 질문 : 새로운 레코드에 붙일 ID는 항상 1만큼 큰 값이어야 하나요? 답변 : ID의 값은 시간이 흐름에 따라 커질 테지만 언제나 1씩 증가한다고 할수는 없습니다. 다만 확실한 것은, 아침에 만든 ID보다는 저녁에 만든 ID가 큰 값을 갖는다는 점입니다. 질문 : ID는 숫자로만 구성이 되나요? 답변 : 그.. 6장 키-값 저장소 설계 키-값 저장소 설계 키-값 저장소 키-값 저장소(key-value store)는 비 관계형(non-relational) 데이터베이스 저장되는 값은 고유 식별자(identifier)를 키로 가져야한다. 키와 값 연결관계를 "키-값" 쌍(pair)이라고 부른다. 키 키-값 쌍에서는 키는 유일해야 한다. 키를 통해서만 값에 접근할 수 있다. 키는 성능상의 이유로 키는 짧을 수록 좋다. 왜 키가 짧으면 좋지?(chat gpt 출처) 검색 속도 : 키를 기반으로 데이터를 검색하기 때문에 데이터 접근 방법에서는 더 효율적인 검색이 가능하다 메모리 사용 : 짧은 키는 크기도 작기 때문에 메모리 차지하는 비율도 적다. 코드 가독성 : 짧은 키는 이해하기 쉽고 유지보수가 편리해진다. 충돌 감소 : 충돌이 발생하면 검색 .. 5장 안정 해시 설계 안정 해시 설계 수평적 규모 확장하려면 요청 이나 데이터를 서버에 균등하게 나누는 것이 중요합니다. 안정 해시를 보편적으로 사용 하는 기술입니다. 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 있다고 가정 부하를 균등하게 나누기 위해 serverIndex = hash(key) % N(N은 서버 개수) 키 해시 해시 % 4(서버인덱스) key0 18358617 1 key1 26143584 0 key2 18131146 2 key3 35863496 0 key4 34085809 1 key5 27581703 3 key6 38164978 2 key7 22530351 3 만약 hash(key0) % 4 = 1이면, 클라이언트는 캐시에 보관된 데이터를 가져오기 위해 서버 1에 접속해야 한다. 키 분포도 서버 .. 4장 처리율 제한 장치의 설계 처리율 제한 장치의 설계 네트워크 시스템에서 처리율 제한 장치(rate limiter)는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치 ex) HTTP는 특정 기간 내에 전송되는 클라이언트의 요청 회수를 제한, API 요청 횟수가 제한 장치에 정의된 임계치(threshold)를 넘어서면 추가로 도달한 모든 호출은 처리가 중단(block) 몇가지 사례 사용자는 초당 2회 이상 새글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. 같은 디바이스로는 주당 5회 이상 리워드(reward)를 요청할 수 없다. API에 처리율 제한 장치를 두면 장점 DoS(Denial of Service) 공격에 의한 자원 고갈(resource starvation)을 방지.. 3장 시스템 설계 면접 공략법 시스템 설계 면접 시스템 설계 면접은 두 명의 동료가 모호한 문제를 풀기위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션 이 문제에는 정답이 없으며 설계 기술을 시연하는 자리이고 설계 과정에서 내린 결정들에 대한 방어 능력을 보이는 자리이며 면접관의 피드백을 건설적인 방식으로 처리할 자질이 있음을 보이는 자리입니다. 효과적 면접을 위한 4단계 접근법 1단계) 문제 이해 및 설계 범위 확정 생각 없이 바로 답을 내는 행동은 부정적 신호(red flag)입니다. 속도를 늦추고 깊이 생각하고 질문하여 요구사항과 가정들을 분명 해야합니다. 질문에 대한 답변들을 화이트보드나 종이에 메모해놓기 요구사항을 이해하고 모호함을 없애는게 가장 중요 요구사항을 정확히 이해하는데 필요한 질문 리스트 구체적으로 어떤 .. 2장 개략적인 규모 추정 2의 제곱수 데이터 볼륨단위 최소 단위는 1바이트(byte), 8비트(bit)로 구성된다. ASCII 문자 하나가 메모리 크기는 1바이트(byte)이다. 2의 x 제곱 근사치 이름 축약형 10 1천(thousand) 1킬로바이트(Kilobyte) 1KB 20 1백만(million) 1메가바이트(Megabyte) 1MB 30 10억(billion) 1기가바이트(Gigabyte) 1GB 40 1조(trillion) 1테라바이트(Terabyte) 1TB 50 1000조(quadrillion) 1페타바이트(Petabyte) 1PB 모든 프로그래머가 알아야 하는 응답지연 값 컴퓨터에서 구현된 연산들의 응답지연값 ns = nanosecond(나노초), μs = microsecond(마이크로초), ms = milli.. 1장 사용자 수에 따른 규모 확장성 단일 서버 단일 서버란 ? 웹, 앱, 데이터베이스, 캐시 등이 전부 서버 한대에서 실행되는 것 사용자의 요청이 처리되는 과정 사용자는 도메인 이름(api.mysite.com)을 이용하여 웹 사이트에 접속하려고 한다. 이 접속을 위해서는 도메인 이름을 도메인 이름 서비스(DNS, Domain Name Service)에 질의하여 IP 주소로 변환하는 과정이 필요합니다. DNS는 보통 3rd party가 제공하는 유료 서비스를 이용하게 됩니다. DNS 조회 결과로 IP 주소가 반환이 된다.(15.125.23.214) 해당 IP 주소로 HTTP(HyperText Transfer Protocol) 요청이 전달된다. 요청을 받은 웹 서버는 HTML or JSON(JavaScript Object Notation) 반.. 이전 1 2 다음