본문 바로가기

조영호7

[특강] 도메인 주도 설계의 사실과 오해 2부 소프트웨어는 도메인에 관련된 문제를 해결하는 것에 초점이 맞춰져 있다. 함께 개발하는 것. 원칙적으로는 그렇다. 도메인 주도 설계의 맥락에서 도메인 모델 = 코드 해결해야할 두 가지 연관된 문제 요구사항에 적합한 모습으로 도메인을 어떻게 모델링할 것인가? 도메인을 반영한 코드를 어떻게 개발할 것인가? = 올바른 모델이 찾는 것이 아니라, 유용한(수정하기 좋은/변경하기 좋은/코드짜기 좋은) 모델을 찾아야 한다. DDD 는 위 두가지를 계속 이야기한다. 도메인을 잘 분석하면 코드로 연결해주는 것을 도와주는 부분이 파트 2에서의 내용 도메인을 분석해서 넣는게 좋은 블록들이 ASSOCIATION / VALUE OBJECT / ENTITY / SERVICE / MODULE 이렇게 해놓고 실제로 동작하는 기능을 만.. 2024. 3. 7.
[특강] 도메인주도설계의 사실과 오해 후기 - 조영호 우리가 아는 '객체지향의 사실과 오해' 책에서 말하는 형식의 '도메인 주도 설계의 사실과 오해'가 아니다. 오늘의 특강 핵심 주제는 '도메인 주도 설계'가 어떻게 등장하게 되었는지에 대한 히스토리와 도메인 주도 설계와 객체 지향 프로그래밍에 대한 차이점 에 대해서 포문을 열었다. 우리가 말하는 도메인 주도 설계란? 무엇일까? 조영호님이 말씀하셨던 오해는 '대부분 우리가 말하는 도메인 주도 설계를 한다면?' 값객체, 엔티티, 팩토리, 애그리게이트 와 같은 것을 사용해야지만 도메인 주도 설계를 한다고 생각한다. 하지만 도메인 주도 설계란? 그렇지 어떤 기술적인/기법적인 것에 의존하는 것이 아니다. 그렇다면 도메인주도 설계란 무엇일까? 조영호님이 장표를 사전허가 없이 첨부할 수 없어 비슷하게 만들었습니다. 도.. 2023. 8. 18.
계약에 의한 설계(Contract By Design) 더 잘 활용하기(with java) 들어가기 계약에 의한 설계(Contract By Design) 라는 용어에 대해서 조영호님의 Object 책에서 처음 접하게 되었습니다. 계약에 의해 설계가 이루어지지 않는 코드에서 발생하는 문제점을 운영중인 프로덕트 코드에서 쉽게 발견할 수 있었고, 이를 계기로 사내에 '계약에 의한 설계' 라는 이름으로 세미나까지 하게 되었습니다. 발표자료 그러나, 발표를 하면서도 '실제 동작되는 코드에서는 어떻게 '계약에 의한 설계' 를 지킬 수 있을까?' 라는 생각을 했습니다. 실제로 계약에 의한 설계(Contract By Design) 를 준수하기 위해서 구글이 만든 cofoja 라는 라이브러리도 있고, vanilla4j 라는 라이브러리도 있었습니다. 하지만 이 두 개의 라이브러리를 적극적으로 활용하지 못한 이유.. 2021. 4. 5.
[책] 엘레강트 오브젝트(Elegant object) - 조영호 역 오랜만에 객체지향 프로그래밍에 대해서 당연시 여겼던 부분에 대해서 다시 한번 생각할 수 있게끔 도와준 책을 만났다. 읽고 생각하며, 직접 나의 생각을 적는 그 과정속에서, 이전에 내 몸에 내재화 되어있던 여러 개발 패턴들을 의심할 수 있었다. ‘getter, setter 메서드를 왜 써야 하는가?’, ‘C 언어에는 자료구조라고 선언할 수 있는 키워드가 있지만, 왜 자바는 없었을까?’ 이런 의구심 부터, ‘클래스 이름에 -er 이 붙은 객체들은 좋은 객체가 아니다.’ 라는 절로 여러 부분에서 생각할 수 있도록 만들어 준 책 이였다. 종종 저자는 말을 너무 강하게 해서 읽고 있는 내 생각마저도 휩쓸리는 경향이 있었지만,(러시아 사람들은 글을 강하게 쓴다고 한다.) 그러지 않기 위해서 남에게 나의 생각을 이야.. 2021. 2. 20.
Template Pattern(템플릿 패턴) VS Strategy Pattern(전략 패턴) Photo by Mike Meyers on Unsplash 들어가기 대부분의 디자인 패턴 책에서는 이 두가지를 비교해서 설명합니다. 왜 일까요? 이 두가지 패턴은 데이터를 은닉화 시켜 구현될 수 있도록 도와주는 패턴입니다. 각각의 쓰이는 상황은 다르지만, 결론부터 이야기하면 잘 짜여진 코드는 템플릿 패턴에서 전략 패턴으로 손쉽게 전환할 수 있고, 반대로 전략패턴에서 템플릿 패턴으로 손쉽게 변경가능하다고 합니다. 그럼 왜 그런지 한번 살펴봅시다. 템플릿 패턴이란 무엇인가? 하위 클래스에서 구체적으로 처리하는 디자인 패턴 개인적으로 패턴을 어렵게 생각하면 끝없이 어렵고 쉽게 생각하면 너무 쉽게 생각하는 경향이 있다고 생각합니다. 그런 예시로 템플릿 패턴도 포함됩니다. 부주제로 '하위 클래스에서 구체적으로 처.. 2020. 9. 27.
[동영상 정리]의존성을 이용해 설계 진화시키기 - 조영호 님 의존성을 어떻게 관리하는가? 그것이 핵심☢️ 의존성의 정의란 무엇일까? A가 B에 의존할수록 위 그림과 같이 점선으로 그린다. 이 그림의 의미는 B가 변경될 때 A도 같이 변경 될 수 있다. 라는 것을 의미한다. 그러므로, B가 뭐가 됐던 A가 같이 변경 될 수 있음을 의미합니다. B클래스의 변경에 따라서 A에 영향을 줄수 또는 안줄 수도 있다. 클래스 의존성의 종류 패키지 의존성 패키지에 포함된 클래스 사이의 의존성 import에 다른 패키지의 이름이 있다면 디팬던시가 있다고 생각하면 된다. 설계 할 때 좋은 규칙이 몇가지 있다. 양방향일 경우, 싱크를 맞추는데- 비용이 많이 든다. 패키지 세계에 사이클이 돈다라는 것은 하나의 패키지라고 봐야 한다. 의존성을 가장 쉽게 이해할 수 있는 방법은 역시 코드.. 2020. 8. 21.
[동영상 정리]애플리케이션 아키텍처와 객체지향 - 조영호님 영화관에서 영화를 상영하는 도메인을 예제로 OOP를 설명합니다. 아키텍처 프로젝트에 참여하는 개발자들이 설계에 대해 공유하는 이해를 반영하는 주관적인 개념 : 주관적이다... 중요한것? 변경하기 어려운 것? 일찍 변경 하기 어려운 것? 관심사의 분리 서로 다르고 관련이 없는 책임들을 분리 좀 더 세분화할수 있다.그러나 우리는 위 3가지로만 나눠서 시작하겠습니다. 여기서 가장 중요한 레이어는 도메인 레이어입니다. 대부분 2가지 종류의 도메인 레이어를 설계합니다. Transaction Script와 Domain Model의 차이점은 무엇일까? 도메인 레이어가 주도하기 때문에 도메인 레이어는 중요합니다. 아래는 도메인 컨셉입니다. 할인을 2가지 정책을 가질 수 있다. 퍼센트 또는 고정 할인가로 할 수 있다... 2020. 8. 21.