컴포저블 엔터프라이즈 구현을 위한 PBCs(Packaged Business Capabilities)
개요
PBC는 이미 구현된 특정 비즈니스 기능을 독립적인 모듈로 패키징하여 제공하는 개념으로, 마치 비즈니스 기능을 조립할 수 있는 블록처럼 모듈화한 것으로 볼 수 있습니다.
MSAEZ는 도메인 중심 설계 모델링(이벤트스토밍, Eventstorming)에 PBC 마켓플레이스를 추가해 마이크로서비스를 더욱 효과적으로 구성하고, 비즈니스 로직을 유연하게 조합할 수 있게 되었습니다. 분석/설계 단계에서 선택된 PBC는 이미 비즈니스 로직과 UI 구현이 완료된 상태로 제공되어, 개발자는 별도의 코딩 없이도 즉시 사용 가능한 완성된 기능 모듈을 조합하여 서비스를 구축할 수 있습니다.
이를 통해 알림 시스템, 사용자 리뷰 관리, 결제 처리와 같은 복잡한 기능도 검증된 방식으로 빠르게 구현할 수 있어 개발 품질 향상과 업무 효율화를 동시에 달성할 수 있습니다.
수행 방법
복잡한 결제 처리 기능도 검증된 모듈로 쉽게 적용할 수 있는 방법을 결제 PBC 적용 예시를 통해 설명하겠습니다. 특히 차량호출 서비스에서 운행이 완료되었을 때 사용자가 요금을 토대로 결제를 진행할 수 있도록 하는 분석/설계, 구현 방법을 상세히 살펴보겠습니다.
분석/설계
1. 이벤트스토밍 모델 캔버스의 좌측 팔레트에서 PBC를 Drag&Drop하여 MSAEZ에서 제공하는 기존 PBC 리스트에서 원하는 기능을 선택하고 적용할 수 있습니다.
(결제시스템이 필요한 상황이니 marketplace에서 payment-system을 적용)
2. 배차 boundedContext 하단에 PaymentSystem이라는 PBC 초안이 생성되면, 빈 화면으로 나오는 PBC모델을 더블 클릭합니다.
3. PBC 패널에서 PBC 모델에 구현된 기능과 관련된 ReadModel, Command, Event 스티커를 선택할 수 있는데, 이 중 해당 서비스에 사용될 기능과 관련된 스티커를 선택합니다.
4. PBC 패널 창을 닫으면 선택된 스티커만 가져온 것을 확인할 수 있고, 위 화면과 같이 PaymentSystem에 대한 PBC모델 생성이 완료되는 것을 확인할 수 있습니다.
5. 이후, 기존 마이크로서비스와 PBC간의 통신이 가능하도록 relation을 연결하여 결제가 완료되면 운행정보에서 결제상태와 결제 ID에 대한 정보를 업데이트하고 추후 영수증 조회가 가능하도록 처리합니다.
<차량호출 서비스에 결제시스템 PBC를 적용한 전체 모델 화면>
구현
1. 코드뷰어를 열면 PaymentSystem이라는 폴더가 생성되고, 생성된 폴더에 있는 ReadMe파일의 instruction대로 따라하시면 구현레벨까지 생성이 됩니다.
2. 구현된 UI에서 좌측 하단 결제 버튼을 클릭하면 결제 세부 페이지가 뜨고, 다시 결제를 누르면 PG사에서 제공하는 결제 UI가 나옵니다.
3. 결제 완료시 paymentId와 paymentStatus가 등록되며 영수증조회 버튼이 생성되고, 영수증 조회를 클릭한 후 조회 주문번호 입력에 paymentId를 입력 및 조회버튼 클릭시, 결제정보를 확인할 수 있습니다.