현재 프로젝트에서의 다중 서버 환경에서 발생한 embedded 캐싱 문제와 해결 방법에 대해 설명한다.
Access Control with AOP
어노테이션 기반 접근 제어를 AOP로 구현해보자.
[오브젝트] Chapter09. 유연한 설계
개방-폐쇄 원칙
소프트웨어 개체(클래스, 모듈, 함수 등등)은 확장에 대해 열려있어야 하고 수정에 대해서는 닫혀있어야 한다.
-- 마틴 파울러.
[오브젝트] Chapter07. 객체 분해
개요
사람이 수용할 수 있는 정보의 허용량을 넘어선 순간부터 문제 해결 능력은 급격하게 떨어지는 인지 과부하가 발생한다.
인지 과부하를 방지하는 가장 좋은 방법은 쏟아지는 정보의 양을 조절하는 것이다. 추상화는 문제 해결에 필요한 핵심만 남기고 불필요한 정보를 제거하는 것을 말한다.
[오브젝트] Chapter06. 메시지와 인터페이스
클래스는 객체지향 프로그래밍을 위한 도구로서 많은 개발자들이 객체지향에 대해 생각하면 떠오르는 키워드일 것이다. 그러나 클래스는 프로그래밍 도구일 뿐 설계를 클래스에 초점을 두어선 안된다.
정말 중요한 것은 객체들이 주고 받는 메시지이며 이 메시지가 객체의 퍼블릭 인터페이스를 결정하고, 클래스를 결정한다.
[오브젝트] Chapter05. 책임 할당하기. - GRASP Pattern
책임에 초점을 맞춰 설계할 때 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기 쉽지 않다는 것이다.
모든 책임 활동은 트레이드오프 활동이며, 여러 방법중 최선의 할당 방법을 선택하는 것이다.
[오브젝트] Chapter03. 역할, 책임, 협력.
객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration) 이다.
객체지향 설계의 핵심은 협력을 구성하기 위해 적쩔한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다.
[오브젝트] Chapter02. 객체지향 프로그래밍.
요구사항 확인
모든 설계가 그러하듯 요구사항을 확인하는 것이 우선이다. 요구사항 분석을 통해 필요한 객체를 정할 수 있고, 각 객체의 책임을 어떻게 분배할지 방향을 잡을 수 있다.
[오브젝트] Chapter01. 객체, 설계.
응집도와 캡슐화 (Encapsulation)
객체 내부의 상태를 캡슐화하고 객체 간에는 오직 메시지를 통해서만 상호작용하도록 만드는 것을 캡슐화(Encapsulation)이라 한다.
자신 이외의 객체는 내부의 상태, 구현등을 알 수 없어야 한다.
[Kafka] Chapter01. 카프카란 무엇인가.
개요
이번 장에서 카프카란 무엇인가, 동작 방식과 특징에 대해 알아볼 것이다.
[Kafka] Chapter03. 카프카 디자인
개요
이번 장에서는 카프카가 어떻게 디자인 되어있는지를 학습할 것이다.
카프카 디자인의 특징인 카프카의 분산 시스템과 페이지 캐시, 배치 처리를 알아 보고 카프카의 데이터 모델에서 토픽과 파티션, 오프셋을 이해하며, 카프카의 고가용성과 리플리케이션을 학습할 것이다.
또한 카프카 운영에 도움을 주는 주키퍼의 지노드 역할을 알아보고 학습을 마무리 할 것이다.