DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 카카오뱅크
  • Related reads#Kotlin
#Backend

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

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

Summary

카카오뱅크의 500줄짜리 거대 로직 구출 작전: 파이프라인으로 승부하다

GitLab CI/CD에서 힌트를 얻어 완성한, 변화에 유연하고 테스트가 쉬운 백엔드 아키텍처 개선기

복잡한 금융 데이터 가공 로직을 Pipeline, Job, Store라는 명확한 역할로 재설계하여 유지보수성을 극대화한 사례를 소개합니다. 기존의 거대한 서비스 함수를 조립 가능한 모듈로 분리함으로써 정책 변화에 기민하게 대응할 수 있는 구조를 구축했습니다.

  • 01GitLab CI/CD의 단계별 실행 철학을 비즈니스 로직에 성공적으로 이식
  • 02Pipeline-Job-Store 3요소를 활용한 관심사 분리 및 결합도 해소
  • 03새로운 정책 요구사항 발생 시 코드 수정 대신 Job 교체로 대응하는 유연성 확보
  • 04특정 단계의 상태를 Store에 세팅하여 복잡한 시나리오를 쉽게 재현하는 테스트 전략
  • 05금융 도메인처럼 정교한 데이터 추적과 신뢰성이 필요한 환경에 최적화된 설계

+RECOMMENDATION

복잡한 조건문과 긴 함수로 고통받는 백엔드 개발자에게 강력 추천하며, 특히 정책이 자주 변경되고 데이터 가공 단계가 명확한 도메인에서 확장성을 고민할 때 훌륭한 해결책이 됩니다.

The Problem

카카오뱅크의 대출 심사 과정에서 공공 마이데이터 가공 규칙이 복잡해짐에 따라 단일 함수가 500줄 이상으로 비대해졌으며, 로직 간 강한 결합으로 인해 유지보수와 테스트가 극도로 어려워졌습니다.

The Solution

GitLab CI/CD 파이프라인 구조에서 영감을 얻어, 흐름을 관리하는 Pipeline, 단일 책임을 가진 Job, 데이터를 공유하는 Store로 역할을 분리한 파이프라인 아키텍처를 도입했습니다.

The Result

정책 변경 시 특정 Job만 교체하는 방식으로 영향 범위를 최소화했고, 각 단계를 독립적으로 검증할 수 있는 단위 테스트 환경을 구축하여 개발 생산성과 시스템 안정성을 동시에 확보했습니다.

Trade-off

비즈니스 로직이 단순한 경우 클래스 구조가 복잡해지는 오버헤드가 발생할 수 있으며, Job 간의 암묵적인 데이터 의존성 관리 및 파이프라인 구성의 복잡도 증가에 대한 지속적인 관리가 필요합니다.

03

Key Concepts

Concept · 01

Pipeline

파이프라인 아키텍처의 전체 공정을 설계하고 조율하는 관리자 클래스로, Job들의 실행 순서와 흐름을 제어합니다.

  • initJob, jobs, finishJob으로 이어지는 고정된 실행 흐름을 정의함
  • 비즈니스 세부 로직을 알 필요 없이 오직 실행 순서와 책임 완수에 집중함
Concept · 02

Job

단일 책임 원칙을 따르는 최소 작업 단위로, 특정 데이터의 검증, 추출, 가공 등의 역할을 독립적으로 수행합니다.

  • InitJob(초기화), Job(중간 가공), FinishJob(마무리)으로 유형을 세분화함
  • 인터페이스 기반 설계를 통해 기존 로직을 수정하지 않고도 새로운 구현체로 교체 가능함
Concept · 03

Store

파이프라인 내의 여러 Job들이 서로 직접 참조하지 않고 데이터를 주고받을 수 있도록 돕는 공용 작업대 역할을 하는 데이터 컨테이너입니다.

  • Data Class를 사용하여 파이프라인 전반에서 공유되는 데이터의 가시성을 확보함
  • Job 간의 결합도를 낮추고 특정 시점의 상태를 테스트에서 쉽게 재현할 수 있게 함
Continue reading · same source

카카오뱅크More from 카카오뱅크

View all posts from 카카오뱅크
  • 금융사를 위한 AWS GameDay 2026: 카카오뱅크 2연패 이야기 🏆

    AWSDevOpsAI
    1개월 전
  • AI, 고객 행동의 순서를 읽다: 카카오뱅크 시퀀스 기반 FDS 모델 개발기

    Vision TransformerTime-series ClassificationMetric Learning
    2개월 전
  • 사람이 기다리지 않는 담보심사시스템 설계

    Deferred BatchAsynchronous ProcessingCore Banking
    3개월 전
  • 금융 보안 퀴즈, AI에게 풀게 해봤습니다: 2025 금융 AI Challenge 우수상 후기

    LLM OptimizationMoERAG
    5개월 전
  • Agentic AI의 시대, AWS re:Invent 2025 현장을 가다

    Agentic AIAWS re:Invent 2025Amazon Bedrock
    5개월 전

Related reads#Kotlin

Explore #Kotlin
Flex·Modularization

사람도 에이전트도, 덜 읽을수록 더 잘 고칩니다

#Kotlin1주 전
우아한형제들

기술블로그 세 번째 책 《요즘 우아한 백엔드 개발》 출간

#Kotlin3주 전
당근·Modular Monolith

천만 MAU를 지탱하는 커뮤니티 시스템을 소개해요

#Kotlin1개월 전
Flex·AI Coding Agent

[AI가 읽을 수 있는 코드베이스 2/5] 빌드 피드백이 AI를 가르친다

#Kotlin3개월 전
Flex·Hexagonal Architecture

[코드가 환경을 모르는 구조 4/7] 타임머신 — 시간 축을 교체한다

#Kotlin3개월 전

Source

카카오뱅크
카카오뱅크
Engineering Blog

Published · January 11, 2026

Topics

KotlinDesign PatternsClean ArchitectureRefactoringService Logic