목록DDD (6)
개발일기

같이 하시는 분과 레이어드 형식 패키지에 대해서 이야기를 해보았다. 처음부터 DDD형식을 도입하는 것은 좋지 않다는 것을 이야기해보았다. 레이어드 아키텍처에서 도메인에 비즈니스 로직을 넣는 것이 좋다는 판단을 하였다. 레이어드 아키텍처 + 도메인 레이어를 추가한 것을 Onion 아키텍처로 시작하는게 어떠한가? 왜 Onion 아키텍처로 시작하는게 좋은가? 우리의 핵심 비즈니스 로직과 디비에 저장하는 로직이 항상 코드 사이에 결합되어 있는데, 이것을 해결하기 위해 Onion 아키텍처를 사용한다. 또한 기존의 헥사고날 아키텍처는 너무 큰 품이 든다. 처음부터 적용하기에는 문제가 있지 않나 싶다. 그래서 Onion아키텍처로 하는게 좋다. Onion Architecture란?제어의 역전 원칙을 기반으로 도메..
해당 Step에서 레거시 코드를 바탕으로 테스트코드를 작성하는 것을 연습한다. 해당 Step을 하면서 느낀 점은 기존의 코드를 변경하지 않고 테스트코드를 작성하니, 테스트코드에 비즈니스 로직이 많이 들어간다. 나의 생각은 좋은 테스트 코드는 최대한 테스트코드에서 비즈니스 로직을 작성하지 않는 테스트코드가 좋은 코드라는 생각이다. 물론 Mockito를 최대한 사용하지 않는 것도 좋은 테스트코드이다. 해당 Step을 하면서 테스트코드에서 객체를 생성 할 때, 생성자를 만든다면 해당 코드는 레거시 코드를 수정하는 행위이기에 TestFixture 사용하여 객체를 생성하는 것을 구현하였다. 이제 부터 본격적으로 내가 작성한 코드를 보여드리겠습니다. MenuGroupRestControllerTest.javapa..
코드를 작성하여 돌아가는 코드를 만드는 것 또한 굉장히 중요하다. 하지만 나는 코드를 작성하여 돌아가는 코드도 중요하지만, 견고한 설계및 요구 사항을 작성하여 견고한 코드를 작성하는 것이 가장 중요하다고 점점 코딩을 하면 할 수록 느낀다. 아래는 next-step DDD 세레나데를 수강하며 http 메서드 분석을 통하여 작성한 요구사항 설계이다. menu-group http 메서드###POST {{host}}/api/menu-groupsContent-Type: application/json{ "name": "추천메뉴"}###GET {{host}}/api/menu-groups menus http 메서드 ###POST {{host}}/api/menusContent-Type: application/js..

기존에 있던 프로젝트를 DDD기반으로 바꿔보려고 한다. 배운 것들이나, 적용해본 것들을 해당 프로젝트는 실력을 향상 시키는 용도이다. 지금까지 나는 요구 사항 정의서, ER Diagram 을 통하여 디비 테이블들을 만든 후 작업을 시작했었다. 어느새보면 내가 짠 테이블 컬럼과 나의 도메인에 있는 필드 값이 똑같은 형식으로 되어 있는 마법을 볼 수 있었다.. 저질스러운 마법 이것은 단순히 RDB 테이블을 class에 넣어 버린 것이기 때문에 객체지향이라고 부를 수 없다. 개발자는 전문직이고, 전문직은 충분한 설계를 바탕으로 그것을 만들어가는 것이라 생각한다. 그래서 나는 개발 중 가장 중요한 부분 중하나가 설계라는 생각이 들었다. 그래서 이번에는 새로 방법으로 접근하고자 한다. DDD 기반으로 할 때, ..

Account유저 입장에서는 계정, 은행 입장에서는 계좌 다양한 의미를 내포 Reward유저 입장에서 Reward는 item인가 Reward 보상 그 자체인가? challenge챌린지와 목표의 차이는 무엇? , 챌린지 이벤트 다른것? 위에처럼 한가지 단어에도 다양한 의미와 뜻이 내포되어있다. 이로 인해서, 개발자는 요구사항 or 모델링을 읽고 개발할 시에, 단어 뜻에서 있는 오류를 저지른다. 이러한 것을 해소하고자 유비쿼터스 언어(보편적 언어)를 사용한다. 유미쿼터스는 무엇인가?Ubiquitous Language(보편 언어)는 도메인 전문가, 아키텍트, 개발자 등 프로젝트 구성원 모두에게 공유된 언어를 뜻한다. 그럼 이제 어떤 방식으로 유비쿼터스를 사용하는지 알아보자. 매장 주문 방문한 손님 수n..

진정한 DDD는 설계에 있다는 것을 여러가지 블로그들을 통하여 깨닫게 되었다. 도메인 주도 개발 시작하기라는 책에서도 바운디드 컨텍스트가 언급된다. - http://www.yes24.com/Product/Goods/108431347 이제 부터 본격적으로 바운디드 컨텍스트(BOUNDED CONTEXT)에 대해 알아보자. BOUNDED-Context 란?우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 그런 식으로 계속 사용된다. 모델은 특정 컨텍스트(문맥)에서 완전한 의미를 갖음. 같은 제품이라도 카탈로그 컨텍스트와 재고 컨텍스트는 의미가 서로 다르다. 대표적인 예시를 들자면, Account로 표현 할 수 있다. 은행에서는 Account는 계좌이다. ERP 시스템에서 계정으로 ..