분류 전체보기

Read Book/대규모 시스템 설계 기초

2장. 개략적인 규모 추정

개략적 규모 추정 시스템 설계 면접 시 시스템 용량이나 성능 요구사항을 개략적으로 추정하라는 요구 사항이 주어질 수 있다. 여기서 개략적인 규모 추정(back-of-the-envelop estimation)이란, 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다. 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수로 표현 응답 지연 연산 별 처리 속도를 대략적으로 알 수 있다. 가용성에 관계된 수치들 고가용성: 시스템이 오랜 시간 동안 지속적으로 중단없이 운영될 수 있는 능력을 지칭 100%는 시스템이 한 번도 중단된 적이 없었음을 의미 SLA(Service Level Agreement) 서비스 사업자와 고객 사이에 맺어..

Read Book/대규모 시스템 설계 기초

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

데이터베이스 처리해야 할 데이터에 따라 RDBMS, NoSQL 을 선택적으로 활용 가능 비관계형 데이터베이스 에러 복구(failover) 방안이나 다중화(redundancy) 방안을 제시하지 않음 서버 장애 시 웹사이트/앱은 완전히 중단됨 스케일아웃: 더 많은 서버를 추가하여 성능 개선 - 수평적 규모 확장 스케일 업의 이러한 단점들 때문에 대규모 애플리케이션 지원 시에는 스케일 아웃이 적절하다 로드밸런서 부하 분산 집합에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할 사용자는 로드밸런서의 공개 IP 주소로 접속하고, 서버 간 통신에는 사설 IP 주소가 이용된다. 부하 분산 집합에 웹 서버를 추가한 후 로드밸런서를 통해 골고루 부하를 나눠 갖게 되면, 장애 복구 문제를 해결할 수 있고 웹 계층의..

Read Book/헤드퍼스트 디자인 패턴

14장. 기타 패턴

브리지 패턴 구현과 더불어 추상화 부분까지 변경해야 한다면 유용한 패턴 추상화된 부분과 구현 부분을 서로 다른 클래스 계층 구조로 분리해서 그 둘을 모두 변경할 수 있다. 브리지로 연결함으로써 양 쪽을 서로 독립적으로 변경해줄 수 있게 되었다. 브리지 패턴의 장점 구현과 인터페이스를 완전히 결합하지 않았기에 구현과 추상화 부분을 분리 가능 추상화된 부분과 실제 구현 부분을 독립적으로 확장 가능 추상화 부분을 구현한 구상 클래스가 바뀌어도 클라이언트에는 영향 X 브리지 패턴의 활용법과 단점 여러 플랫폼에서 사용해야 하는 그래픽스와 윈도우 처리 시스템에서 유용하게 쓰임 인터페이스와 실제 구현할 부분을 서로 다른 방식으로 변경해야 할 때 유용하게 쓰임 디자인이 복잡해진다는 단점 빌더 패턴 제품을 여러 단계로 ..

Read Book/헤드퍼스트 디자인 패턴

13장. 실전 디자인 패턴

디자인 패턴의 정의 패턴(Pattern)은 특정 컨텍스트 내에서 주어진 문제의 해결책이다. 컨텍스트(context): 패턴이 적용되는, 반복적으로 일어날 수 있는 상황 문제(problem): 컨텍스트 내의 제약조건과 이뤄야 하는 목표 해결책(solution): 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인 어떤 컨텍스트 내에서 일련의 제약조건에 의해 영향을 받는 문제가 발생했다면, 그 제약조건 내에서 목적 달성을 위한 해결책이 되는 디자인을 적용하면 된다. 패턴을 정의할 수 있어야 패턴 카탈로그를 만들 수 있다. → 패턴은 반복적으로 등장하는 문제에 적용할 수 있어야 하며, 이름을 가지고 있어야 한다. 패턴 카탈로그 GoF(Gang of Four)의 디자인 패턴에서 처음 등장했으며,..

Read Book/헤드퍼스트 디자인 패턴

12장. 복합 패턴

복합 패턴 반복적으로 생길 수 있는 일반적이 문제를 해결하는 용도로 2개 이상의 패턴을 결합해서 사용하는 것 단순히 여러 패턴을 섞어 쓴다고 해서 복합 패턴인 것은 아님 예시 1: 오리 만들기 오리 예시에 거위 추가 + 꽥꽥 소리 횟수 측정 + 오리 무리 단위로 관리 + 꽥꽥 소리 나면 연락받기 각 오리 객체(Quackable + QuackObservable) 별로 자신의 행위를 관찰할 Observer 를 저장할 수 있는 Observable( + QuackObservable) 을 저장하고 있음 이후 QuackObservable 의 메서드인 RegisterObserver 로 관찰자를 Observer 에 등록하고, 특정 행위를 수행할 때 NotifyObservers 를 호출하여 등록된 관찰자들 모두에게 알려..

Read Book/헤드퍼스트 디자인 패턴

11장. 프록시 패턴

특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공 구성요소 Subject RealSubject와 Proxy의 인터페이스를 제공 두 객체가 동일한 인터페이스를 구현해서 RealSubject가 들어갈 자리에 Proxy도 들어갈 수 있다. RealSubject 실제로 작업을 처리하는 객체 Proxy RealSubject의 대변인 역할을 하며 해당 객체로의 접근을 제어 RealSubject의 레퍼런스가 들어있으며, 인스턴스를 생성하거나 제거하는 역할도 수행함 책에 소개된 종류 원격 프록시: 원격 객체로의 접근을 제공 가상 프록시: 생성하기 힘든 자원으로의 접근을 제공 (e.g 생성 비용이 비싼 객체) 보호 프록시: 접근 권한이 필요한 자원으로의 접근을 제어 그 외 다양한 프록시 패턴의 변..

nowwater
'분류 전체보기' 카테고리의 글 목록 (4 Page)