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

[Book - Clean Code] 15. JUnit 들여다보기

의도를 명확히 표현하려면 조건문을 캡슐화해야 한다. 즉, 조건문을 메서드로 뽑아내 적절한 이름을 붙인다. 부정문은 긍정문보다 이해하기 약간 더 어렵다. 그러므로 첫 문장 if를 긍정으로 만들어 조건문을 반전한다. 코드를 리팩터링 하다 보면 원래 했던 변경을 되돌리는 경우가 흔하다. 리팩터링은 코드가 어느 수준에 이를 때까지 수많은 시행착오를 ...

[Book - Clean Code] 14. 점진적인 개선

깨끗한 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다. 메서드에 인수를 추가하다보면 코드가 점점 지저분해져 간다. 점진적으로 개선 TDD는 언제 어느 때라도 시스템이 돌아가야 한다는 원칙을 따른다. 다시 말해, TDD는 시스템을 망가뜨리는 변경을 허용하지 않는다. 변경을 가한 후에도 시스템이 변경 전과 똑같이 돌아가야 한다. 결론...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 3. 구글 맵

1단계: 문제 이해 및 설계 범위 확정 DAU는 어느 정도로 가정? >> 10억 DAU 어떤 기능에 초점을 맞추나요? 방향 안내, 경로 안내, 예상 도착 시간, 등 생각할 기능이 많습니다. >> 위치 갱신, 경로 안내, 예상 도착 시간, 지도 표시 등에 초점 도로 데이터는 어느 정도 규모인가요? 도로 데이터는 확보했다고 가정해...

[Book - Clean Code] 13. 동시성

동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 coupling을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하여 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 단일 스레드 수...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 2. 주변 친구

앱 사용자 가운데 본인 위치 정보 접근 권한을 허락한 사용자에 한해 인근의 친구 목록을 보여주는 시스템이다. 1단계: 문제 이해 및 설계 범위 확정 지리적으로 얼마나 가까워야 '주변에 있다'고 할 수 있나요? >> 5마일 >> 이 수치는 설정 가능해야 함 실제 상황에서는 직선 이동이 힘들텐데, 거리는 두 사용자 사이의 직선거리...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 1. 근접성 서비스

근접성 서비스(proximity service)는 음식점, 호텔, 극장, 박물관 등 현재 위치에서 가까운 시설을 찾는 데 이용된다. 1단계: 문제 이해 및 설계 범위 확정 사용자가 검색 반경(radius)을 지정할 수 있어야 하나요? 검색 반경에 표시할 사업장이 충분치 않은 경우에는 검색 반경을 시스템이 알아서 넓혀도 괜찮을까요? >> ...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 15. 구글 드라이브 설계

구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있도록 한다. 이 파일은 컴퓨터, 스마트폰, 태블릿 등 어떤 단말에서도 이용 가능해야 한다. 아울러 보관된 파일은 친구, 가족, 동료 들과 손쉽게 공유할 수 있어야 한다. 1단계. 문제 이해 및 설계 범위 확정 * 가장 중요하게 지원해야 할...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 14. 유튜브 설계

1단계. 문제 이해 및 설계 범위 확정 질문 * 어떤 기능이 가장 중요한지 > 비디오 업로드 및 시청 기능 * 어떤 클라이언트를 지원해야 하는지 > 모바일 앱, 웹 브라우저, 스마트TV * 일간 능동 사용자 수는 몇 명인지 > 5백만 * 사용자가 이 제품에 평균적으로 소비하는 시간은? > 30분...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 13. 검색어 자동완성 시스템

1단계. 문제 이해 및 설계 범위 확정 질문 * 사용자가 입력하는 단어가 자동완성될 검색어의 첫 부분인가? 중간 부분인가? * 자동완성 검색어 n개 표시? * 자동완성 검색어 n개를 고르는 기준은? * 맞춤법 검사 기능도 제공? * 질의는 영어? * 대문자나 특수 문자 처리? * DAU는? 요구사항 빠른 응답 속도 페이스북...

© Yn3. Some rights reserved.