Writing

작업 노트

기술 자체보다 어떤 문제를 왜 그렇게 풀었는지에 초점을 둡니다.

CHAPTER 2 추상화 계층

좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART I 이론) CHAPTER 2 추상화 계층 문제와 하위 문제를 어떻게 해결하는가도 중요하지만 그것들을 해결하는 코드를 어떻게 구성하는가도 중요하다 코드를 잘 구성한다는 것은 간결한 추상화 계층을 만드는 것으로 귀결될 때가 많다 널값 및 의사코드 규약 많은 프로그래밍

12 min read

CHAPTER 1 코드 품질

좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART I 이론) CHAPTER 1 코드 품질 고품질 코드는 좀 더 신뢰할 수 있다 유지보수가 쉽다 버그가 적은 소프트웨어를 생산 좋은 코드는 좋은 소프트웨어를 만들기 위한 유일한 조건은 아니지만 중요한 조건중에 하나다 코드는 어떻게 소프트웨어가 되는가 코드베이스 : 소

9 min read

4장 처리율 제한 장치 설계

가상면접으로 배우는 대규모 시스템 설계 기초 4장 처리율 제한 장치 설계 토큰 버킷 알고리즘 인자 버킷 크기 토큰 공급율 장점 구현이 쉽다 메모리 사용 측면에서도 효율적이다. 짧은 시간에 집중되는 트래픽도 처리가능하다 단점 버킷 크기와 토큰 공급률이라는 두개의 인자를 가지고 있는데 이값을 적절하게 튜닝하는게 어렵다. 누출

8 min read

3장 시스템 설계 면접 공략법

가상면접으로 배우는 대규모 시스템 설계 기초 3장 시스템 설계 면접 공략법 효과적 면접을 위한 4단계 접근법 문제 이해 및 설계 범위 확정 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라 구체적으로 어떤 기능들을 만들어야 하나? 제품 사용자 수는 얼마나 되나? 회사의 규모는 얼마나 빨리 커지리라 예상되나? 회사가

3 min read

2장 개략적인 규모 추정

가상면접으로 배우는 대규모 시스템 설계 기초 2장 개략적인 규모 추정 2의 제곱수 : 데이터 볼륨의 단위 1바이트, 1킬로바이트, 1메가바이트... 응답 지연값 : 구글의 제프 딘이 응답지연값을 공개한것이 있다. 메모리는 빠르지만 디스크는 아직도 느리다 디스크 탐색(seek)는 가능한 피하라 단순한 압축 알고리즘은 빠르다

2 min read

1장 사용자 수에 따른 규모 확장성

가상면접으로 배우는 대규모 시스템 설계 기초 1장 사용자 수에 따른 규모 확장성 단일 서버 데이터베이스 분리 수평적 확장 vs 수직적 확장 수직적 확장 : 스케일업 단점 : 한계가 존재함, 장애 복구에 대한 방안이나 다중화 방안을 제시하지 않는다. 수평적 확장 : 스케일 아웃 로드벨런서 : L2(Data link 계층을

6 min read

이펙티브 코틀린 아이템 41: hashCode의 규약을 지켜라

이펙티브 코틀린(클래스설계) 아이템 41: hashCode의 규약을 지켜라 해시 테이블 Map, Set : 컬렉션에 요소를 빠르게 추가하고 컬렉션에서 요소를 빠르게 추출해야한다고 할때 사용할 수 있는 자료구조 Map, Set은 중복 비허용 성능을 좋게 만드는 해결 방법 해시 테이블 해시 테이블은 각 요소에 숫자를 할당하는

3 min read