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

[Book - Clean Code] 18. 동시성2

13장에서 소개한 동시성을 좀 더 자세히 설명하고 보완한다. 클라이언트/서버 예제 서버는 소켓을 열어놓고 클라이언트가 연결하기를 기다린다. 클라이언트는 소켓에 연결해 요청을 보낸다. 이벤트 폴리 루프를 구현하면 모를까, 단일 스레드 환경에서 속도를 끌어올릴 방법은 거의 없다. 다중 스레드를 사용하면 성능이 높아질까? 그럴지도 모르지만, 먼저 ...

[Book - Clean Code] 17. 냄새와 휴리스틱

위키피디아에 의하면 휴리스틱은 불충분한 시간이나 정보로 인하여 합리적인 판단을 할 수 없거나, 체계적이면서 합리적인 판단이 굳이 필요하지 않은 상황에서 사람들이 빠르게 사용할 수 있게 보다 용이하게 구성된 간편추론의 방법이라고 한다. 주석 C1: 부적절한 정보 다른 시스템에 저장할 정보는 주석으로 적절하지 못하다. ...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 4. 분산 메시지 큐

메시지 큐를 사용하며 어떤 이득을 얻을 수 있을까? 결합도 완화(decoupling) 메시지 큐를 사용하면 컴포넌트 사이의 강한 결합이 사라지므로 각각을 독립적으로 갱신 가능 규모 확장성 개선 메시지 큐에 데이터를 생산하는 producer와 큐에서 메시지를 소비하는 consumer 시스템...

[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)을 지정할 수 있어야 하나요? 검색 반경에 표시할 사업장이 충분치 않은 경우에는 검색 반경을 시스템이 알아서 넓혀도 괜찮을까요? >> ...

© Yn3. Some rights reserved.