Kotlin + Spring Boot 함수형 프로그래밍 인덱스

이 시리즈는 FP 핵심 개념 시리즈를 전제로 합니다. 개념 자체보다 Spring Boot 실무 코드베이스에 FP를 어떻게 적용하는가에 집중합니다.


1. Kotlin FP 기초 — data class, sealed class, 불변성

  • val 우선 원칙, immutable collection
  • data class — copy()로 상태 변경 표현
  • sealed class — 합 타입(Sum Type) 구현
  • when expression — 패턴 매칭
  • 기존 Java/Spring 코드와 비교

2. Arrow-kt 입문 — Option, Either, Raise

  • Arrow-kt 라이브러리 소개
  • Spring Boot 프로젝트에 Arrow 추가
  • Nullable vs Option 선택 기준
  • Raise DSL — Either를 더 읽기 쉽게

3. Either로 에러 처리하기

  • 예외 던지기 대신 Either<Error, Value>
  • 도메인 에러 sealed class 설계
  • 서비스 레이어 → 컨트롤러 에러 전파
  • Spring @ExceptionHandler와 조합

4. Railway Oriented Programming — Spring 서비스에 적용

  • 유효성 검증 → 비즈니스 로직 → 저장 파이프라인
  • flatMap 체인으로 흐름 구성
  • 중간 실패 시 조기 반환 패턴

5. Validated — 여러 에러 동시 수집

  • Either의 fail-fast vs Validated의 accumulate
  • DTO 검증 시나리오 (Bean Validation과 비교)
  • 여러 필드 에러를 한 번에 수집하는 패턴

6. 불변 도메인 모델 설계

  • data class로 도메인 모델 설계
  • JPA Entity와 도메인 모델 분리 전략
  • copy()로 상태 변경 표현 (mutation 없이)
  • Value Object 패턴

7. 순수 함수로 서비스 레이어 작성

  • 비즈니스 로직을 순수 함수로 분리
  • 부수 효과(DB, 외부 API)를 레이어 경계로 밀어내기
  • Mock 없이 단위 테스트하는 방법

8. Scope Functions 실전 활용

  • let, run, apply, also, with 차이와 선택 기준
  • null-safe 처리 패턴
  • Spring 빈 설정 / 체이닝에서의 활용

9. 확장 함수와 도메인 DSL

  • 확장 함수로 도메인 DSL 구성
  • Spring Security DSL / MVC DSL 구조 분석
  • 커스텀 QueryDSL Builder 확장 패턴

10. Coroutines — 함수형 비동기 처리

  • suspend 함수와 순수 함수의 관계
  • Flow — 함수형 스트림 처리 (map, filter, fold)
  • WebFlux vs Coroutines 선택 기준

11. 함수형 Spring WebFlux

  • RouterFunction / HandlerFunction (함수형 라우터)
  • Mono/Flux를 Either처럼 다루기
  • 에러 처리: onErrorResume vs Either 조합

12. 실전 프로젝트 — FP 패턴 통합

  • 주문 서비스 예제로 1~11편 패턴 통합
  • 레이어별 FP 적용 수준 결정 기준
  • 팀에 FP 도입 시 현실적인 전략