😄2022.03.29
일일 회고 48회차
할일 및 한일
경험 및 배움
DDD 세미나 발표 준비
오늘은 '유연한 설계'
라는 챕터를 노션에 정리를 진행했으며, 정리 완료된 내용은 다음 노션 페이지에 존재한다.
해당 챕터의 개요는 제대로 설계하지 않고 개발한 소프트웨어는 구현이 완료된 후, 유지보수가 진행될수록 개발자들이 코드를 수정하는 것을 두려워하게 되는 문제가 발생한다는 것이다. 이러한 문제를 해결하기 위해 유연한 설계가 필요하므로 유연한 설계가 무엇인지 그리고 유연한 설계를 하기 위해서는 어떻게 해야하는지에 대해 설명한다.
내가 정리한 유연한 설계를 위한 패턴들은 다음과 같다.
Intention Revealing Interface (의도를 드러내는 인터페이스)
Side Effect Free Function (부수효과가 없는 함수)
Assertion (단언)
Conceptual Contour (개념적 윤곽)
Standalone Class (독립형 클래스)
한 패턴씩 간단하게 정리하면 다음과 같다.
Intention Revealing Interface
는 클래스 이름이나 메서드 이름, 인자 이름에 수행 방법에 관해서는 언급하지 않고 결과와 목적만을 표현하여 시스템 추상화를 향상시키는 패턴이다.
Side Effect Free Function
은 데이터를 변경하는 메소드의 복잡한 로직을 Value Object로 옮겨서 의도하지 않은 부수효과가 발생하지 않도록 하며 도메인 지식을 명확하게 전달하는 패턴이다.
Assertion
은 단위 테스트에 사전조건과 사후조건을 기술하여 개발자들이 로직을 쉽게 이해하고 모순된 코드를 작성하는 위험을 줄이는 패턴이다.
Conceptual Contour
는 반복적인 리팩터링을 토대로 변경되는 부분과 변경되지 않는 부분을 탐색하고, 변경되는 부분을 분리시키는 패턴이다.
Standalone Class
는 많은 의존성에 대해 분석하여 정말 필요한 의존인지를 판단하여 제거함으로써 클래스들의 결합도를 낮추는 패턴이다.
해당 패턴들을 보다보니 지금 개발하고 있는 배터리 관제 시스템의 백엔드에 적용해보고 싶은 생각이들어, 이번에 CQRS를 적용할 때 적용해볼 예정이다.
개선 및 목표
배터리 관제 시스템에 CQRS 적용시 DDD 개념을 적용하여 구현하기
DDD 세미나 발표 자료 제작하기
Last updated