[Book - Clean Code] 13. 동시성
동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 coupling을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하여 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 단일 스레드 수...
동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 coupling을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하여 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 단일 스레드 수...
앱 사용자 가운데 본인 위치 정보 접근 권한을 허락한 사용자에 한해 인근의 친구 목록을 보여주는 시스템이다. 1단계: 문제 이해 및 설계 범위 확정 지리적으로 얼마나 가까워야 '주변에 있다'고 할 수 있나요? >> 5마일 >> 이 수치는 설정 가능해야 함 실제 상황에서는 직선 이동이 힘들텐데, 거리는 두 사용자 사이의 직선거리...
근접성 서비스(proximity service)는 음식점, 호텔, 극장, 박물관 등 현재 위치에서 가까운 시설을 찾는 데 이용된다. 1단계: 문제 이해 및 설계 범위 확정 사용자가 검색 반경(radius)을 지정할 수 있어야 하나요? 검색 반경에 표시할 사업장이 충분치 않은 경우에는 검색 반경을 시스템이 알아서 넓혀도 괜찮을까요? >> ...
구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있도록 한다. 이 파일은 컴퓨터, 스마트폰, 태블릿 등 어떤 단말에서도 이용 가능해야 한다. 아울러 보관된 파일은 친구, 가족, 동료 들과 손쉽게 공유할 수 있어야 한다. 1단계. 문제 이해 및 설계 범위 확정 * 가장 중요하게 지원해야 할...
1단계. 문제 이해 및 설계 범위 확정 질문 * 어떤 기능이 가장 중요한지 > 비디오 업로드 및 시청 기능 * 어떤 클라이언트를 지원해야 하는지 > 모바일 앱, 웹 브라우저, 스마트TV * 일간 능동 사용자 수는 몇 명인지 > 5백만 * 사용자가 이 제품에 평균적으로 소비하는 시간은? > 30분...
1단계. 문제 이해 및 설계 범위 확정 질문 * 사용자가 입력하는 단어가 자동완성될 검색어의 첫 부분인가? 중간 부분인가? * 자동완성 검색어 n개 표시? * 자동완성 검색어 n개를 고르는 기준은? * 맞춤법 검사 기능도 제공? * 질의는 영어? * 대문자나 특수 문자 처리? * DAU는? 요구사항 빠른 응답 속도 페이스북...
채팅 앱이라고 했을 때 일대일 채팅 앱일 수도, 그룹 채팅 앱일 수도 있으니 설계할 때 기능 요구사항을 확실히 알아두도록 하자. 1단계. 문제 이해 및 설계 범위 확정 1:1 채팅 Facebook messenger WeChat WhatsApp 그룹 채팅 Slack ...
1단계. 문제 이해 및 설계 범위 확정 질문 * 모바일? 웹? * 중요 기능은? * 뉴스 피드에서의 스토리 순서 기준은? * 최신? topic score? * 가까운 친구? * 한 명의 유저가 가질 수 있는 최대 친구 수는? * 트래픽 규모는? * 피드에 이미지나 비디오 스토리도 올라올 수 있는지? 2단계. 개략적 설계안 제시 및 동...
알림 시스템은 단순 히 모바일 푸시 알림에 한정되지 않는다. 알림 시스템은 모바일 푸시 알림, SMS 메시지, 이메일의 세 가지로 분류할 수 있다. 1단계. 문제 이해 및 설계 범위 확정 적절한 질문을 통해 요구 사항이 무엇인지 지원자 스스로 알아내야 한다. 질문1: 이 시스템은 어떤 종류의 알림을 지원해야 하나요? > 푸시 알림, SMS ...
웹 크롤러는 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러는 아래와 같이 다양하게 이용된다. 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 1단계. 문제 이해 및 설...