Study
-
문제 이해 및 설계 범위 확정시스템 설계 면접 문제는 의도적으로 어떤 정해진 결말을 갖지 않도록 만들어진다.면접장에서 시스템을 성공적으로 설계해 내려면 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 시스템의 기본적 기능URL 단축URL 리디렉션높은 가용성과 규모 확장성, 그리고 장애 감내 개략적 추정쓰기 연산 : 매일 1억 개의 단축 URL 생성초당 쓰기 연산 : 1억 % 24시간 % 3600초 = 1160읽기 연산 : 쓰기 연산의 10배라 가정 = 11600URL 단축 서비스를 10년간 운영한다고 가정 : 1억 * 365일 * 10년 = 3650억 개의 레코드 보관축약 전 URL의 길이 100byte라고 가정10년 동안 필요한 저장 용량 3650억 * 100byte = 36.5TB개략적 설계안..
URL 단축기 설계문제 이해 및 설계 범위 확정시스템 설계 면접 문제는 의도적으로 어떤 정해진 결말을 갖지 않도록 만들어진다.면접장에서 시스템을 성공적으로 설계해 내려면 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 시스템의 기본적 기능URL 단축URL 리디렉션높은 가용성과 규모 확장성, 그리고 장애 감내 개략적 추정쓰기 연산 : 매일 1억 개의 단축 URL 생성초당 쓰기 연산 : 1억 % 24시간 % 3600초 = 1160읽기 연산 : 쓰기 연산의 10배라 가정 = 11600URL 단축 서비스를 10년간 운영한다고 가정 : 1억 * 365일 * 10년 = 3650억 개의 레코드 보관축약 전 URL의 길이 100byte라고 가정10년 동안 필요한 저장 용량 3650억 * 100byte = 36.5TB개략적 설계안..
2025.02.28 -
문제 이해 및 설계 범위 확정질문을 통해 모호함을 없애라요구사항ID는 유일ID는 숫자로만 구성ID는 64비트로 표현될 수 있는 값ID는 발급 날짜에 따라 정렬 가능초당 10,000개의 ID 생성 가능해야 한다. 개략적 설계안 제시 및 동의 구하기분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러 가지다.각각의 선택지를 알아보자. 다중 마스터 복제데이터베이스의 auto_increment 기능을 활용하는 것 다만, ID값을 구할 때 1만큼 증가시키는 게 아니라 k만큼 증가시킨다단점시간의 흐름에 맞추어 커지도록 보장할 수 없다 -> 하나의 서버에 요청이 몰린 이후에 다른 서버에 요청이 가면 이후 시간인데도 더 작은 값을 가질 수 있을 것 같다서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다..
분산 시스템을 위한 유일 ID 생성기 설계문제 이해 및 설계 범위 확정질문을 통해 모호함을 없애라요구사항ID는 유일ID는 숫자로만 구성ID는 64비트로 표현될 수 있는 값ID는 발급 날짜에 따라 정렬 가능초당 10,000개의 ID 생성 가능해야 한다. 개략적 설계안 제시 및 동의 구하기분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러 가지다.각각의 선택지를 알아보자. 다중 마스터 복제데이터베이스의 auto_increment 기능을 활용하는 것 다만, ID값을 구할 때 1만큼 증가시키는 게 아니라 k만큼 증가시킨다단점시간의 흐름에 맞추어 커지도록 보장할 수 없다 -> 하나의 서버에 요청이 몰린 이후에 다른 서버에 요청이 가면 이후 시간인데도 더 작은 값을 가질 수 있을 것 같다서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다..
2025.02.23 -
상속은 코드 재사용의 목적이 아닌 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공한다. 상속은 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 묶기 위해서 사용해야 한다. 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘을 살펴보자.이번 장을 읽고 나면 다형성이 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 탐색하는 과정을 통해 구현되며,상속이 이런 메서드를 찾기 위한 일종의 탐색 경로를 클래스 계층의 형태로 구현하기 위한 방법이라는 사실을 이해하게 될 것이다. 다형성많은(poly)+형태(morph)를 의미하는 합성어여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법 상속의 양면성..
[Object] 12장 : 다형성상속은 코드 재사용의 목적이 아닌 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공한다. 상속은 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 묶기 위해서 사용해야 한다. 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘을 살펴보자.이번 장을 읽고 나면 다형성이 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 탐색하는 과정을 통해 구현되며,상속이 이런 메서드를 찾기 위한 일종의 탐색 경로를 클래스 계층의 형태로 구현하기 위한 방법이라는 사실을 이해하게 될 것이다. 다형성많은(poly)+형태(morph)를 의미하는 합성어여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법 상속의 양면성..
2025.02.20 -
상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 합성 관계는 객체 사이의 동적인 관계다. 상속으로 인한 조합의 폭발적인 증가기본정책과 부가정책이 있는 경우 기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다이를 클래스 폭발(class explosion) 문제..
[Object] 11장 : 합성과 유연한 설계상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 합성 관계는 객체 사이의 동적인 관계다. 상속으로 인한 조합의 폭발적인 증가기본정책과 부가정책이 있는 경우 기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다이를 클래스 폭발(class explosion) 문제..
2025.01.30