데브시스터즈 킹덤 서버팀이 신규 입사자를 위해 설계한 Scala 함수형 프로그래밍(FP) 온보딩 과정을 소개한다. Stage 1(FP 기초) → Stage 2(ZIO/ZPure) → Final Stage(실제 서비스 개발)의 단계적 구조로, 생소한 패러다임을 체계적으로 흡수할 수 있도록 설계됐다.
핵심 포인트- Scala의 불변성 원칙: Java처럼 기존 컬렉션을 수정하는 대신 새로운 상태를 생성해 반환한다
- 함수를 일급 객체로 취급 — 변수에 할당하고 다른 함수의 인자로 전달, 람다식으로 간결하게 표현
- ZPure: 부수 효과 없는 순수 계산 계층으로 "어떻게 변해야 하는가"만 기술한다
- ZIO: DB 조회·네트워크 통신 등 실제 부수 효과를 관리하는 실행 계층, 동시성 제어·재시도·에러 처리 제공
- 온보딩 Final Stage에서 유닛 테스트·시나리오 테스트 작성 후 실제 버그 수정 → 콘텐츠 개발 순으로 실무 기여
상세 정리- 배경: 킹덤 서버팀은 Scala 기반 FP를 채택해 운영하며, 객체지향 경험자에게는 패러다임 전환이 필요하다
- Stage 1 - 순수 함수: "동일 입력 → 동일 출력" 보장, 외부 상태 변경(부수 효과) 금지 원칙부터 학습한다
- Stage 1 - 불변성: 기존 값을 수정하지 않고 변환 결과로 새 값을 생성하는 스타일로 사고방식을 전환한다
- Stage 1 - 일급 함수: 함수를 변수에 저장하고 파라미터로 넘기는 패턴, 람다식으로 코드를 간결하게 만든다
- Stage 2 - ZPure: 외부 효과 없이 상태 변환 로직만 담당 — 비즈니스 규칙을 순수하게 표현할 수 있다
- Stage 2 - ZIO: 실제 실행 환경(DB, 네트워크)과 접하는 계층으로, ZPure와 분리해 테스트 가능성을 높인다
- Final Stage - 개발 사이클: 기획 → 설계 → 구현 → 코드 리뷰 → 배포 → 모니터링 전 과정을 경험한다
- 실제 사례 - Random 함수: 값이 결정되는 시점을 ZIO 계층에서 관리해야 동일 입력·동일 출력 보장이 가능함을 보여준다
- 결론: 생소한 기술 스택도 체계적인 온보딩과 팀 지원으로 충분히 흡수할 수 있다는 경험을 공유한다
왜 읽나Scala 또는 ZIO 생태계 진입을 고려하는 백엔드 개발자에게 FP 패러다임 전환의 실제 학습 로드맵 레퍼런스.