카카오뱅크, 파이프라인 아키텍처로 복잡한 비즈니스 로직을 효율적으로 관리

by DD
4개월 전
조회수 92

카카오뱅크 뱅킹서버팀 개발자가 대출 심사 비즈니스 로직의 가독성 저하 및 유지보수 어려움을 겪고, 파이프라인(Pipeline) 구조를 도입

공공 마이데이터(Public MyData)를 활용한 대출 심사 로직에서 500줄에 달하는 코드 덩어리(Code Blob)를 파이프라인 구조로 재설계

파이프라인 구조는 Pipeline, Job, Store의 세 가지 핵심 요소로 구성되며, 코드의 가독성(Readability) 및 유지보수성(Maintainability) 향상에 기여

정책 변경 시 특정 Job만 교체하여 변경 영향 범위(Impact Radius) 최소화 및 테스트 용이성을 확보

개발자들은 코드 구조 개선을 통해 심리적 부담 감소(Reduced Psychological Burden)와 팀 협업 효율성 증대 효과를 경험

파이프라인(Pipeline) 아키텍처의 핵심 요소

파이프라인 아키텍처는 Pipeline, Job, Store의 세 가지 핵심 요소로 구성된다. Pipeline은 전체 공정을 관리하는 매니저(Manager)로서, Job들의 실행 순서와 흐름을 제어한다. Job은 단일 책임을 갖는 작업자(Worker)로, 각자 명확한 역할을 수행하며, Store를 통해 데이터를 주고받는다. Store는 Job 간의 데이터 공유를 위한 공용 작업대(Workspace) 역할을 하며, 데이터의 흐름을 가시화한다. 이러한 구조는 금융 도메인과 같이 복잡한 비즈니스 규칙과 단계별 처리가 필요한 환경에 적합하다.

기존 코드의 문제점과 파이프라인 구조의 장점

기존 코드에서는 모든 로직이 하나의 함수에 집중되어 있어, 중간 단계의 상태 확인 및 단위 테스트가 어려웠다. 새로운 정책이 추가될 때마다 코드의 길이가 무한히 길어지고, 최종 결과만 테스트해야 하는 한계가 있었다. 파이프라인 구조는 이러한 문제를 해결하기 위해, 각 Job의 단일 책임 원칙(Single Responsibility Principle)을 강조하고, Store를 통한 데이터 공유(Data Sharing)를 통해 Job 간의 결합도를 낮췄다. 그 결과, 코드의 가독성 및 유지보수성이 향상되었고, 정책 변경에 유연하게 대처할 수 있게 되었다.

파이프라인 구조를 활용한 정책 변경 대응

파이프라인 구조는 정책 변경에 유연하게 대응할 수 있도록 설계되었다. 기존 로직을 수정하는 대신, 새로운 정책을 반영한 Job을 추가하거나 기존 Job을 교체하는 방식으로 변경을 적용한다. 예를 들어, 현직장 판단 로직 변경 시, ExtractCurrentCompany Job을 ExtractCurrentCompanyV2로 교체하는 것만으로 새로운 정책을 적용할 수 있다. 이로 인해 변경의 영향 범위(Impact Radius)가 최소화되고, 테스트의 부담(Testing Burden) 또한 감소한다. 또한, Job 단위의 테스트를 통해 검증의 명확성을 확보할 수 있다.

파이프라인 구조 적용 후 얻게 된 효과

파이프라인 구조 도입 후, 정책 변경에 대한 유연성이 향상되었고, 개발자들은 코드 수정에 대한 심리적 부담을 줄일 수 있었다. 또한, 팀 내에서 새로운 비즈니스 요구사항 분석 및 테스트가 용이해져, 개발과 검증의 피드백 사이클이 단축되었다. 특히, 코드의 가독성(Readability) 및 유지보수성(Maintainability) 개선을 통해 장기적인 시스템 운영의 안정성을 확보할 수 있었다. 결과적으로, 개발 생산성 향상과 시스템의 지속 가능한 발전을 이끌어낼 수 있었다.

파이프라인 구조 설계 시 고려사항

파이프라인 구조는 복잡한 비즈니스 로직을 효과적으로 관리할 수 있지만, 몇 가지 고려해야 할 사항이 있다. Job 간의 의존성이 복잡해지면, 파이프라인 구성의 복잡도가 증가할 수 있다. 따라서, Job의 역할 분담을 명확히 하고, Store를 통해 데이터 공유 방식을 신중하게 설계해야 한다. 또한, Job 간의 결합도를 낮추기 위해, 인터페이스 기반 설계(Interface-based Design)를 활용하는 것이 좋다. 마지막으로, 파이프라인 구조는 모든 상황에 정답이 아니므로, 팀의 상황과 도메인 특성을 고려하여 적절한 구조를 선택해야 한다.

복잡한 비즈니스 로직, 파이프라인으로 다듬기