CQRS(Command Query Responsibility Segregation) Pattern
·
📚 Data Architect/Design Pattern
📚 CQRS(Command Query Responsibility Segregation) PatternCQRS(Command Query Responsibility Segregation) 패턴은 DB로부터 읽기와 쓰기 작업을 분리하는 패턴입니다.이 패턴을 사용하면 어플리케이션의 성능,화장성,보안성을 극대화 시킬 수 있으며, 여러 요청으로부터 들어온 복수의 업데이트 명령에 대한 충돌을 방지할 수 있습니다.오늘은 프로젝트에 CQRS를 구현하기 전 CQRS가 무엇인지, 왜 사용해야 하는지, 사용하면 어떤 점이 개선되는지 먼저 공부해 보겠습니다.📚 CQRS 패턴을 사용하려는 이유CQRS를 채용하려는 이유는 현재 개발중인 로직중 RabbitMQ를 이용한 대규모 이벤트 데이터의 전처리 및 통계 처리와 RTSP St..
Factory Method Pattern
·
📚 Data Architect/Design Pattern
💡 Factory Method Pattern Factory Method Pattern을 사용하는 이유 객체 간 결합도 ↓ (유지보수성 증가, 불필요한 클래스 의존성 제거) 객체의 생성 처리를 서브 클래스로 분리&처리하도록 캡슐화 하는 패턴 특정 조건에 따라 객체를 다르게 생성해야 할 경우 서브 클래스(팩토리 클래스)에 객체 생성 위임 객체 간 결합도란? 클래스에 변경이 생겼을때 다른 클래스에 미치는 영향 (의존성) Factory Method Pattern을 사용하지 않는 경우 팩토리 메서드 패턴을 사용하지 않는 아래 코드의 문제점 중복 코드의 발생 객체 간 결합도 ↑ /* ----------------팩토리 메서드 사용 X--------------- */ // abstract 클래스를 정의하여 캡슐화 p..
Static Factory Method Pattern
·
📚 Data Architect/Design Pattern
💡 Static Factory Method Pattern Static Factory Method Pattern의 장점 Constructor Chaning으로 발생될 문제 방지 이름 설정 가능 -> 반환될 객체의 특성을 더 자세하게 묘사 불필요한 객체 생성 방지 -> 만들어놓거나 새로 만든 객체를 캐싱하여 재활용하는 방식 사용 서브 클래스 반환 -> 반환할 객체의 클래스를 유연하게 선택 파라미터에 따라 매번 다른 타입의 객체 반환 반환할 객체 클래스(구현체)가 없어도 됨 Static Factory Method Pattern의 단점 Sub Classing의 어려움 Documentation 불명확한 API로 인해 개발자가 일일이 인스턴스화 할 방법을 찾아야함 Static Factory Method Patter..
Builder Pattern
·
📚 Data Architect/Design Pattern
💡 빌더 패턴 Builder Pattern을 사용하는 이유 필요한 데이터만 설정 가능 유연성 가독성 변경 가능성의 최소화 Builder Pattern을 사용 안했을때 생기는 문제점 Entity의 필드에 변경사항이 생길 때, 생성자 & 정적 팩토리 메소드의 파라미터 수정 작업 필요 가독성 ↓ 유연성 ↓ 불필요한 변경 가능성 최소화가 안됨으로 인한 Setter 메서드 사용 & 객체 불변성 확보에 불리함 Builder Pattern 사용 예시 아래 코드에서 Builder Pattern의 장점 필요에 따른 각각 다른 객체 생성 시, 객체 생성의 유연함 필요에 따른 Entity 필드의 추가 & 수정 작업 필요 시의 편리함 Entity의 원본 필드에 final을 추가함으로써 객체 불변성 확보 (Setter 사용 지..