1. 보호구문 (Guard Clause) 조건 충족하지 않으면 return 하는 방식 남용 X (or 로 묶는 것 고려) 2. 안 쓰는 코드 과감히 지우자 형상관리 툴을 쓰는 이상 크게 걱정하지 않아도 됨 지운 코드 복구 조건 1) 많은 코드 (코드 양) 2) 당장
코드 정리 후 pr 시 발생할 수 있는 갈등 상황1\. 동작 변경 코드 + 코드 정리 -> 커밋2\. 검토자의 입장에서 pr이 너무 길다고 느낄 수 있음3\. 동작 변경 코드 / 코드 정리 -> 분리 후 각각 pr4\. 검토자 입장에서 코드정리 pr의 의미를 모를 수
3장에서는 코드를 정리해야 하는 이유를 이론적으로 파악한다.소프트웨어 설계는, 요소들을 유익하게 관계맺는 일요소요소에는 경계가 있어 어디서 시작하고 끝나는지 알 수 있음요소는 하위요소를 포함함 (계층 구조)관계 맺기요소 사이의 호출, publish, listen, 참조
이번 장에서는 한 명의 사용자를 지원하는 시스템에서 시작하여, 최종적으로는 몇백만 사용자를 지원하는 시스템을 설계해 볼 것이다. 그 과정에서 규모 확장성과 관련된 설계 문제들을 직면하고, 이를 해결하기 위한 방법을 확인해보자.처음에는 모든 컴포넌트가 단 한 대의 서버에
처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다. 요청 횟수가 임계치를 넘어서면 추가로 도달한 호출은 처리가 중단된다. 다음은 몇가지 사례이다.사용자는 초당 2회 이상 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 1
수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 안정 해시는 이 목표를 달성하기 위해 보편적으로 사용되는 기술이다.N개의 캐시 서버가 있다고 하자. 아래의 해시 함수를 사용하여 서버의 부하를 균등하게 나누어보자.serv
키-값 저장소(key-value store)는 고유 식별자를 키로 갖는 값들이 저장된 비 관계형 데이터베이스이다. 이런 연결 관계를 “키-값” 쌍이라고 지칭한다.키-값 쌍에서 키는 유일해야 하며, 키에 매달린 값은 키를 통해서만 접근 가능 키는 텍스트이거나 해시값일
이번 장에서는 분산 시스템에서 사용될 유일 ID 생성기를 설계해 볼 것이다.참고) 관계형 DB에서 AUTO_INCREMENT를 사용할 수 있지만, 이 방식은 분산환경에 적합하지 않다.DB 서버 한 대로는 AUTO_INCREMENT 방식의 처리량을 감당하기 어렵다. 여
이번 장에서는 tiny url 같은 URL 단축기를 설계해볼 것이다.다음과 같이 긴 URL이 주어졌을 때, 훨씬 짧은 URL을 생성하는 단축기를 만드는 것이 목표이다.시스템 기본 기능URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다URL 리디렉션: 축약된 URL로 H
이번 장에서는 웹 크롤러(web crawler)를 설계해보겠다. 웹 크롤러는 검색 엔진에서 널리 쓰이는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠(웹 페이지, 이미지, 비디오, pdf 등)를 찾아내는 것이 주된 목적이다.웹 크롤러는 몇 개의 엡 페이지에서 시작하여 그
뉴스, 제품 업데이트, 이벤트, 선물 등 중요할 만한 정보를 비동기적으로 제공하는 알림 시스템은 최근 많은 프로그램이 채택한 인기 있는 기능이다. 이번 장에서는 알림 시스템을 설계해볼 것이다.확장성 높은 알림 시스템에 대한 요구사항은 다음과 같다.지원 알림: 푸시 알림
이번 장에서는 뉴스 피드 시스템 설계 문제를 살펴볼 것이다. 페이스북에서 설명하는 뉴스 피드(news feed)는, 홈 페이지 중앙에 지속적으로 업데이트되는 스토리들이라고 볼 수 있다. 그 내용으로는 사용자 상태 정보 업데이트, 사진, 비디오, 링크, 팔로워, 페이지,