Skip to Content
Software ArchitectureBroadleaf 과제로 익힌 커머스 구조와 확장 방식
🏗️ Software Architecture2019년 11월 9일

Broadleaf 과제로 익힌 커머스 구조와 확장 방식

#e-commerce#into-commerce#broadleaf#breeze#software-architecture
Series 1 · Broadleaf / Breeze1 / 2Software Architecture
GS SHOP 이직 과제를 계기로 Broadleaf를 실행하고 관리자·도메인·권한·메시지 확장 지점을 살펴본 과정.

2019년 11월 GS SHOP 이직을 준비하며 Broadleaf Commerce 과제를 받았습니다. 커머스는 처음이었지만 더 큰 트래픽을 다뤄 보고 싶었고, 상품 검색부터 주문·결제·배송과 매장 연동까지 경험할 수 있다는 점도 관심이 갔습니다.

과제를 하면서는 낯선 플랫폼을 실행하고, 기본 기능 위에 필요한 변경을 어디에 추가할지 찾아야 했습니다. 입사 후 Broadleaf/Breeze 계열 제품을 다루게 되어 이때 살펴본 내용이 실제 업무와도 이어졌습니다.

데모와 로컬 실행

먼저 데모에서 사용자 화면과 관리자 화면을 확인했습니다. 상품과 주문, 관리자 메뉴가 어떤 단위로 구성되는지 본 뒤 문서와 코드를 따라갔습니다.

당시 과제 환경은 Broadleaf 5.2.10-GA와 Spring Boot 1.5 계열이었습니다. 실행 과정에서 Hibernate와 여러 persistence unit, SolrStarter와 별도 Solr 구성을 살펴봤습니다. 이 글은 당시 환경을 분석한 기록이며, 해당 버전을 새 프로젝트의 설치 기준으로 안내하는 내용은 아닙니다.

화면에서 본 기능을 실행 로그와 연결하면 확인할 코드의 범위를 좁힐 수 있었습니다. 모든 클래스를 읽기보다 과제에서 구현할 기능과 연결되는 설정부터 찾아갔습니다.

관리자 화면과 권한

관리자 기능을 추가할 때는 AdminBasicEntityController와 section key, 메뉴 구성을 함께 확인했습니다. 컨트롤러를 추가하는 것 외에 관리자 화면에서 기능을 찾고 접근할 수 있도록 연결해야 했습니다.

permission과 module 데이터를 등록하는 부분도 살펴봤습니다. 메뉴가 보이는지와 해당 기능에 접근할 권한이 있는지는 따로 확인할 항목이었습니다.

엔티티와 조회 구조

도메인을 확장할 때는 custom entity와 연관 관계, 조회 구문을 함께 봤습니다. 기본 모델이 제공하는 필드와 제품별로 추가할 필드를 구분해야 했습니다.

과제에는 locale 연관 관계와 named query, cacheable query를 살펴본 내용도 있었습니다. 화면에 필드를 추가하더라도 저장과 조회에서 같은 값을 사용할 수 있어야 하므로 엔티티와 조회 설정을 함께 따라갔습니다.

DB 기반 메시지 확장

메시지 처리에서는 MessageSource를 DB 기반으로 확장하고 관리자와 사용자 사이트에서 반영되는지 확인했습니다. 설정만 추가하는 것과 실제 요청에서 그 설정이 사용되는 것을 구분해 확인한 부분이었습니다.

기본 메시지와 DB에 등록한 메시지가 어떤 순서로 적용되는지, 필요한 화면 양쪽에서 같은 변경을 읽는지 확인해야 했습니다.

실제 제품 구조와의 연결

과제를 통해 관리자·도메인·권한·메시지를 확장하는 지점을 확인했습니다. 이후 Breeze를 읽을 때도 기본 기능과 제품별 추가 기능을 나눠 보는 데 도움이 됐습니다.

운영 기능에서는 여기에 로그와 배치, 외부 연동도 함께 따라왔습니다. 관리자가 값을 바꿀 수 있는지만 볼 것이 아니라 그 값이 주문이나 검색에 어떻게 반영되는지 확인해야 했습니다.

다음 글에서는 Breeze의 상품·재고·운영 구조를 살펴본 과정을 이어서 정리합니다.

Last updated on