레거시 결제/정산 백엔드 서비스 재구축
1. 프로젝트 소개
>프로젝트 목표:
현재 운영 중인 레거시 결제/정산 백엔드 시스템의 구조적 문제점(낮은 유지보수성, 강한 종속성, 불안정한 확장성)을 해결하고, 클린 아키텍처를 적용하여 고도로 안정적이며 변화에 유연하게 대응할 수 있는 차세대 결제/정산 시스템으로 전환하는 것입니다.
>주요 기능:
핵심 결제 로직 재구현: 안정적인 결제 승인, 취소, 환불 로직 처리.
정산 시스템 고도화: 일별/월별 정산 데이터 생성 및 관리, 복잡한 수수료 및 분배 로직 처리.
PG사 연동 모듈 분리: 다양한 외부 결제대행업체(PG사) 및 금융기관 연동을 위한 인터페이스(Gateway)를 명확히 분리하여, PG사 변경이나 추가에 유연하게 대응.
고성능 트랜잭션 처리: 대량의 결제 트래픽을 안정적으로 처리할 수 있는 성능과 트랜잭션 무결성 확보.
2. 클린 아키텍처 선택 동기
-기존 레거시 방식의 문제점
기존 레거시 결제/정산 시스템은 다음과 같은 구조적 문제점을 내포하고 있어, 장기적인 운영 및 개발에 심각한 어려움을 초래했습니다.
DB/프레임워크에 종속된 비즈니스 로직:
핵심 결제 및 정산 비즈니스 규칙이 데이터베이스 접근 코드(SQL, ORM)나 특정 웹 프레임워크(예: Spring Controller, Django View)의 구현체에 강하게 결합되어 있었습니다.
이로 인해 DB 스키마나 프레임워크 버전이 변경될 때마다 핵심 비즈니스 로직까지 대규모의 수정이 필요했습니다.
-낮은 유지보수성과 확장성:
시스템의 핵심인 결제 로직이 외부 기술과 얽혀있어, 새로운 결제 수단이나 복잡한 정산 정책이 추가될 경우 코드 전체를 건드려야 했으며, 이 과정에서 코드의 유연성과 유지보수성이 현저히 저하되었습니다.
-테스트의 어려움:
순수한 비즈니스 로직을 테스트하기 위해서도 반드시 데이터베이스 연결이나 웹 환경 설정이 필요하여, 단위 테스트 작성이 어렵고, 기능 변경 후 안정성을 신속하게 검증하기 어려웠습니다.
-클린 아키텍처 적용 동기
결제/정산 시스템은 회사의 수익과 직결되는 미션 크리티컬(Mission-Critical)한 핵심 도메인입니다. 클린 아키텍처는 이러한 핵심 도메인의 안정성과 장기적인 유지보수성을 극대화하는 최적의 솔루션입니다.
-핵심 비즈니스 로직 보호 (Independent of Frameworks, DBs, UIs):
클린 아키텍처는 핵심 비즈니스 규칙(도메인)을 DB, Web Framework, UI와 같은 외부 기술 요소로부터 완벽하게 분리하여 보호합니다.
이는 시스템의 생명주기가 길어질수록, 프레임워크의 변화나 DB 마이그레이션과 같은 외부적인 변화에도 결제/정산 로직의 안정성을 흔들림 없이 유지할 수 있게 합니다.
-높은 테스트 용이성 확보:
Use Case(유스케이스, Interactor) 계층에 비즈니스 로직을 집중하고, 이를 외부 인프라(DB Repository)의 구현체에 의존하지 않도록 설계합니다.
결과적으로 DB 연결 없이도 순수한 비즈니스 로직만을 독립적으로 테스트할 수 있어, 리팩토링 및 기능 확장 시 안정성을 매우 높일 수 있습니다.
-SOLID 원칙 준수 및 장기적인 유지보수 극대화:
클린 아키텍처는 SOLID 원칙을 자연스럽게 유도하며, 특히 SRP(단일 책임 원칙)와 OCP(개방-폐쇄 원칙)에 따라 시스템을 설계하도록 장려합니다. 이는 결제, 정산, 환불 등 각 기능별 유스케이스의 책임을 명확히 하고, 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있는 유연하고 확장 가능한 구조를 확립합니다.
댓글을 작성해보세요.