SW/마이크로서비스

마이크로서비스 : Spring Boot : 도메인 모델 구현 방법 : 개요, 개념, 정의

얇은생각 2020. 5. 29. 07:30
반응형

업무기능 추가

Account에 간단하게 아이디와 이름, 주소와 이메일 주소만을 갖는 간단한 객체로 설계하고 구현을 해보았습니다. 모델이 코드로 어떻게 구현되는지 또 어떻게 테스트해 볼 수 있는지 이해할 수 있었습니다. 그래서 이번에는 Account Domain Model 전체로 확장해서 구현하고 테스트를 해보았습니다.

초기 하나의 문자열 정보로 관리했던 주소는 주소와 우편번호로 구체화하여 별도 객체로 분리하였습니다. 또한 쇼핑몰 서비스를 사용하는 회원은 판매자, 구매자로 회원 유형을 분리하였고, 또한 판매나 구매 실적에 따라 등급이 부여될 수 있어야 하므로 별도 MembershipLevel을 추가합니다.

따라서 초기의 간단했던 Account는 화면과 같이 Account, Address, Membertype, MembershipLevelType으로 도메인을 표현할 수 있습니다. 이 도메인 모델을 구현하면, Account-Domain-Model 패키지 안에 각 객체에 해당하는 클래스를 생성해서 구현합니다.

 

 

비즈니스 로직 계층 구현

Account 클래스는 Entity로 정의하며, Entity라는 것을 정의하는 어노테이션을 추가합니다. Address는 주소와 우편번호를 저장하는 객체로 Entity로 정의한 Account를 설명하는 객체로 이런 객체를 값 객체라고 합니다. 이 값 객체는 Embeddable 어노테이션을 추가함으로써 값 객체라는 것을 정의합니다.

값 객체는 식별성이 없습니다. 값 객체를 구현한 코드를 보면 앞에서 설명한 Entity와 다르게 ID가 없습니다. 즉 ID를 통해 객체가 식별되지 않고 값 객체 전체가 생성되어 대체되는 형태로 변경이 된다는 것을 알 수 있습니다. 표준 타입은 대상의 타입을 나타내는 객체로 자바의 열거형, 즉 Enum을 사용합니다.

MemberType은 판매자인지 구매자인지의 회원 유형을 구현한 것으로 Enum 타입으로 구현을 하였습니다. MemberType과 같이 MembershipLevelType도 Enum 타입으로 정의하여 구현을 하였습니다.

 

 

프리젠테이션 계층 구현

Spring Data JPA에서 제공하는 Repository Interface의 선언으로 REST API가 자동으로 생성됩니다. 그러므로 도메인 모델을 코드로 모두 구현한 후 변경사항을 저장합니다. Run As의 Maven Install을 눌러 Maven Build를 수행합니다. Build가 정상적으로 수행되면 방금 Build했던 shop-account를 Start를 눌러 서비스를 시작시킵니다. 이 서비스가 정상적으로 동작하는지 확인하기 위해 웹브라우저에서 localhost:11001/Accounts를 접속해서 출력되는지 확인합니다.

 

 

Swagger를 활용한 API 명세 & 테스트

웹브라우저에서 LocalHost의 Swagger UI에 들어가면 화면과 같이 REST API가 생성되어 제공되고 있는 것을 확인할 수 있습니다. 그럼 데이터 생성을 테스트하기 위해 POST 메서드를 통해 주소, 우편번호, 이메일주소 등 Account를 생성하기 위한 정보를 입력하고 Execute를 눌러 데이터를 생성합니다.

POST 메서드가 정상적으로 실행되었다면 화면과 같이 입력한 데이터가 Account에 정상적으로 추가된 것을 확인할 수 있습니다. 물론 Swagger UI의 GET 메서드를 통해서도 입력한 데이터가 정상적으로 추가된 것을 확인할 수 있습니다. 같은 방법으로 더 많은 Account 정보를 추가할 수 있습니다.

POST 이외에 GET, PUT, DELETE를 활용해서 데이터의 수정과 삭제도 해볼 수 있습니다. 지금까지 Account를 구현하고 테스트한 방법으로 Product, Purchase, Delivery, Return, Review Service도 개발했던 Account와 같은 방법으로 개발하고 테스트해 볼 수 있습니다.

 

 

서비스별 설정 정보

마이크로서비스 : Spring Boot : 도메인 모델 구현 방법 : 개요, 개념, 정의

 

Product, Purchase, Delivery, Return, Review Service를 구현하고 테스트하는 것을 설명하지는 않았습니다. 각 서비스의 개발은 화면과 같이 프로젝트 이름과 Group ID, Artifact ID 그리고 포트를 설정해서 구현합니다. 마이크로서비스 아키텍처를 설명할 때 각 폴리그랏한 서비스 구성이 가능합니다. 각각의 마이크로서비스를 개발할 때 데이터베이스를 다르게 선정해서 진행해보는 것도 좋습니다. 간단하게 구성했던 Account 모델을 실제 설계했던 Account Service의 전체 도메인 모델로 확장해서 구현해보았습니다.

반응형