

레거시를 대물림하지 않는 아키텍처: flex의 5년간의 여정
플렉스팀이 5년간 Monolith에서 MSA까지 아키텍처를 진화시키며 레거시를 줄인 과정을 공유했습니다. 변경 파급효과를 줄이기 위한 구조 분리와 Auto Configuration 활용이 핵심이었습니다.


플렉스팀이 5년간 Monolith에서 MSA까지 아키텍처를 진화시키며 레거시를 줄인 과정을 공유했습니다. 변경 파급효과를 줄이기 위한 구조 분리와 Auto Configuration 활용이 핵심이었습니다.

두 상속 트리의 암묵적 대응 관계가 타입 안전성 문제를 만들 수 있음을 설명했습니다. 상속 대신 컴포지션을 쓰거나 제네릭으로 반환 타입을 명시하는 방법을 제안했습니다.

Flowise와 LLM으로 서버 에러 원인 분석과 해결 가이드를 자동화한 사례를 소개했습니다. 요청 정보, API 스펙, 스택 트레이스를 함께 활용해 슬랙 알림과 협업 효율을 높였습니다.

카카오페이 여신코어를 DDD와 멀티모듈 구조로 내재화한 과정을 공유했습니다. 도메인 경계, 공통 언어, Entity 분리를 통해 복잡한 여신 업무를 견고하게 설계한 사례입니다.

가변 속성을 개별적으로 바꾸면 이전 값이 남아 버그가 생길 수 있었습니다. 정책 객체로 묶어 상태 갱신 시점과 조합을 제한하는 방식이 더 안전했습니다.

비대면 금융의 개인화 부족을 해결하기 위해 AI 대출 음성 상담 챗봇을 개발했습니다. 합성 데이터와 RAG, AWS AI 서비스를 결합해 실시간 상담과 추천 흐름을 구현했습니다.


Kotlin과 JPA의 한계를 빌링 시스템 고도화 과정에서 정리하고 jOOQ와 JDBC로 전환한 사례를 소개했습니다. 복잡한 쿼리 표현력, 불변 객체 설계, 운영 안정성을 함께 개선했습니다.

수신 객체의 상태를 확인하는 로직은 해당 함수 내부로 옮기는 편이 더 안전할 수 있다고 설명했습니다.콜백보다 반환값으로 결과를 드러내면 호출 흐름도 더 명확해집니다.

양방향 변환은 한쪽 로직을 기준으로 다른 쪽을 유도하는 편이 안전했습니다. 중복 값과 누락은 테스트로 보강하는 방식이 유효했습니다.

컬렉션 반환값의 읽기 전용과 변경 가능성은 다를 수 있어 주의가 필요했습니다. 상황에 따라 요소 접근, 스냅샷 복사, 직접 참조 반환을 구분해 사용해야 했습니다.


권한 기능 추가를 계기로 JWT 인증 방식을 개선하고 Refresh Token Rotation과 하위 호환 인증을 도입했습니다. 또한 Spring Security 권한 체크를 유연하게 바꾸며 기술 부채도 함께 정리했습니다.


Kotlin Multiplatform으로 Android와 iOS의 비즈니스 로직을 공유하는 구조를 소개했습니다. 플랫폼별 UI는 유지하면서 공통 모듈과 expect/actual, Ktor, SKIE로 연동하는 흐름을 설명했습니다.