성장하는 인삼의 지식 블로그

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 9. 웹 크롤러 설게

웹 크롤러는 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러는 아래와 같이 다양하게 이용된다. 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 1단계. 문제 이해 및 설...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 8. URL 단축기 설계

tiny url 같은 URL 단축기를 설계하는 문제를 풀어보자. 1단계. 문제 이해 및 설계 범위 확정 URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다. URL redirection: 축약된 URL로 HTTP 요청이 오면 원래 URI로 안내 높은 가용성과 규모 확장성, 장애 감내가 요구됨 개략적 추정 쓰기...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 7. 분산 시스템을 위한 유일 ID 생성기 설계

분산 환경에서 auto_increment 속성이 설정된 기본 키는 통하지 않을 뿐더러, 여러 DB 서버를 쓰는 경우에는 delay를 낮추기가 무척 힘들 것이다. 1단계. 문제 이해 및 설계 범위 확정 시스템 설계 면접 문제를 푸는첫 단계는 적절한 질문ㅇ르 통해 모호함을 없애고 설계 방향을 정하는 것이다. 질문을 할 때는 요구사항을 이해하고 모호함...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계

키-값 쌍에서의 키는 유일해야 하며, 키는 일반 텍스트일 수도 있고 해시 값일 수도 있다. 성능상의 이유로 키는 짧을수록 좋다. 키-값 쌍에서의 값은 문자열일 수도 있고 리스트일 수도 있고 객체일 수도 있다. 값에는 무엇이 오든 상관하지 않는다. 문제 이해 및 설계 범위 확정 완벽한 설계란 없다. 읽기, 쓰기 그리고 메모리 사용량 사이에 어떤...

[Book - Clean Code] 12. 창발성

창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 제시한 단순한 설계 규칙 네 가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다. 아래 규칙을 따르면 설계는 ‘단순하다’고 말한다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 5. 안정 해시 설계

수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 균등하게 나누는 것이 중요하다. 안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 해시 키 재배치(rehash) 문제 서버들에 부하를 균등하게 나누는 보편적 방법은 아래의 해시 함수를 사용하는 것이다. serverIndex = hash(key) % N (N은 서버의 개수...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 4. 처리율 제한 장치의 설계

설계에 앞서, API에 처리율 제한 장치를 두면 좋은 점을 살펴보자. DoS 공격에 의한 자원 고갈을 방지할 수 있다. 비용을 절감한다. 서버를 많이 두지 않아도 된다. 우선순위가 높은 API에 더 많은 자원을 할당할 수 있다. 서버 과부하를 막는다. (트래픽 제어) 1단계 문제 이해 및 설...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 3. 시스템 설계 면접 공략법

효과적 면접을 위한 4단계 접근법 1단계 문제 이해 및 설계 범위 확정 요구사항을 받았다면 깊이 생각하여 요구사항을 정확히 이해하는 데 필요한 질문을 하자. 구체적으로 어떤 기능을 만들어야 할지 사용자 및 트래픽 규모는? 회사가 주로 사용하는 기술 스택은? etc.. 2단계 개략적인 설계안 제시 및 동의 구하기 개략적인 설계안을 ...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 추정

응답지연 수치 분석 결론 메모리는 빠르지만 디스크는 아직도 느리다. 디스크 탐색(seek)은 가능한 한 피하라. 단순한 압축 알고리즘은 빠르다. 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라. 데이터 센터는 보통 여러 지역(region)에 분산되어 있고, 데이터 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.

© Yn3. Some rights reserved.