모든 블로그
flex

flex

도메인flex.team
주요 카테고리 아키텍처 · AI · DevOps

활동 요약

대표 인기 포스트[미래를 담아낸 뼈대 5/7] 코드가 환경을 모르는 구조454 조회
최근 30일
3개
평균 조회
56
누적 조회
4,626
전체 글
83개
마지막 발행
2026. 11. 5.
블로그 방문

flex 기술 블로그 글 (83)

아키텍처

QA 팀이 아니라 Quality Platform 팀을 만든 이유

AI 에이전트로 늘어난 코드 변경에 맞춰 QA 외주화 구조를 Quality Platform 방식으로 전환했습니다. 개발자가 테스트·데이터·회귀 검증 도구로 품질과 성능을 직접 확인하도록 지원합니다.

#Spring Boot#CI/CD#test
5600

백엔드

상태 전이마다 테스트가 없으면, 운영 가이드가 빌드되지 않습니다

상태 전이·운영 안내·테스트 참조를 YAML 선언으로 통합하고 CI에서 검증했습니다. 테스트 없는 전이와 잘못된 참조를 빌드 단계에서 차단해 가이드 신뢰성을 높였습니다.

#YAML#CI/CD#test
1800

데브옵스

팀 이름을 DevOps가 아니라 Cloud Platform으로 지은 이유

Cloud Platform 팀을 별도 운영 대행 조직이 아닌 셀프서비스 플랫폼 조직으로 정의했습니다. Terraform·CI 검증으로 개발자와 AI 에이전트의 안전한 인프라 변경을 지원합니다.

#cloud#Kubernetes#Terraform
3500

아키텍처

코딩 에이전트가 Spring을 못 짠다면, component scan부터 걷어내 보세요

component scan으로 테스트 설정이 자동 등록돼 발생한 빈 충돌을 분석했습니다. 명시적 빈 등록과 컨텍스트 검증으로 에이전트 작업의 예측 가능성을 높였습니다.

#Spring Boot#Kotlin#component scan
5200

아키텍처

설정값에서 OpenFeature까지, 피처 플래그는 어떻게 바뀌어 왔을까요

피처 플래그가 설정값에서 용도별 관리와 OpenFeature 표준 API로 발전한 과정을 정리했습니다. 배포·공개 분리의 장점과 오래된 플래그, 배포 누락을 관리하는 방법을 설명합니다.

#OpenFeature#OFREP#피처 플래그
1900

백엔드

Spring Boot 4.1까지 나온 지금, 무엇이 바뀌었고 무엇을 먼저 준비해야 할까요

Spring Boot 4 이행 시 자동 설정 분리와 Jackson 3 전환으로 발생하는 호환성 문제를 정리했습니다. 특히 JSON 직렬화 비교와 컨텍스트 로딩 테스트를 사전 안전장치로 권장했습니다.

#Spring Boot#migration#Jackson
10800

백엔드

"다 됐습니다" 알림, 대체 언제 보내야 맞나

배치 완료 알림이 너무 일찍 나가는 문제를 해결한 사례를 다루셨습니다. 처리 순간의 사실을 기록하고 실제 조회 가능 시점을 기준으로 완료를 판정하셨습니다.

#batch#비동기#cache
3300

백엔드

@TransactionalEventListener는 왜 조용히 무시될까

`@TransactionalEventListener`는 커밋 이후 실행이 아니라 트랜잭션이 있을 때만 등록됩니다. 트랜잭션 밖 발행 누락은 `fallbackExecution`과 발행 지점의 트랜잭션 검사를 성격에 맞게 선택해야 합니다.

#Spring Boot#transaction#event
8700

AI

격리 안 된 테스트의 초록불은, 에이전트가 믿을 수 없습니다

AI 에이전트가 스스로 수정하려면 먼저 테스트 결과를 믿을 수 있어야 했습니다. 그래서 테스트 격리와 실행 경로 통일로 오염과 환경 차이를 줄였습니다.

#test#격리#CI/CD
3600

아키텍처

모놀리식인데, 도메인 하나만 따로 띄웁니다

모듈러 모놀리식에서 이슈 도메인만 따로 기동하는 standalone 구조를 소개했습니다. 빌드 조립과 트랜잭션 경계 분리를 통해 빠른 검증 환경을 만드는 방법을 설명했습니다.

#모듈러 모놀리식#MSA#Spring Boot
5700

백엔드

@Scheduled 한 줄로 버티다, 트리거를 밖으로 꺼낸 이야기

@Scheduled 기반 배치가 Pod 확장 시 중복 실행과 유실 문제를 드러내자, 트리거를 애플리케이션 밖으로 분리했습니다. 실행은 선점과 체크포인트로 나눠 맡겨 여러 Pod가 작업을 분담하도록 전환했습니다.

#Spring Boot#Kubernetes#Redis
7800

AI

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

도메인별 모듈 경계가 에이전트의 탐색 범위를 줄여 덜 읽고 더 잘 고치게 하는 사례를 소개했습니다. 로그 분석과 연구 결과를 통해 컨텍스트 효율의 중요성을 설명했습니다.

#Kotlin#AI 에이전트#module
6000

아키텍처

헥사고날 아키텍처, Adapter만 바꾸면 될까

AWS S3에서 다른 오브젝트 스토리지로 이전하며, Adapter 교체가 성립하려면 어떤 전제가 필요한지 확인했습니다. 헥사고날 아키텍처는 애플리케이션 코드를 지켜주지만 인프라와 데이터 이전은 별도로 대응해야 했습니다.

#헥사고날 아키텍처#AWS S3#오브젝트 스토리지
4000

아키텍처

경계를 빌드로 못 박으면, 경계를 옮기는 일도 빌드가 붙잡습니다

Gradle 멀티모듈로 경계를 강하게 고정하면 잘못된 의존은 막을 수 있지만, 경계를 옮기는 비용도 커졌습니다. 그래서 함께 바뀌는 리듬을 기준으로 모듈 경계를 다시 설계하는 방법을 정리했습니다.

#Gradle#멀티모듈#refactoring
3400

백엔드

사람은 떠났는데 권한은 남았다

관계 원천과 인가 튜플을 Outbox·CDC·Kafka로 동기화해 잔존 권한 문제를 줄이는 구성을 다뤘습니다. 부분 실패, 캐시, 감사 이력까지 함께 고려한 운영 포인트도 정리했습니다.

#Kafka#CDC#Outbox
5100

기타

AI가 하한선을 올린 순간, 저희는 직무를 다시 그리기로 했습니다

AI로 직무 경계가 낮아진 상황에서 FE·BE 통합 실험을 통해 프로덕트 엔지니어 역할을 재정의하려고 했습니다.교차 온보딩, 페어링, 회고로 가능성과 한계를 점검하며 기술이 제품의 경계를 막지 않게 하려 했습니다.

#FE#BE#프로덕트 엔지니어
6300

백엔드

DDL이 코드 밖에서 온다면, 테스트 DB 구성을 빌드 안에 선언한다

Liquibase 기반 스키마를 테스트에서 다루기 위해, 테스트 DB 구성을 빌드의 variant로 선언하는 구조를 정리했습니다. 실제 마이그레이션 검증과 덤프 캐시를 함께 써서 정확성과 속도를 모두 확보했습니다.

#Liquibase#Testcontainers#Gradle
4600

기타

제품을 만드는 시스템을 만드는 사람

Platform Engineer를 제품 개발을 받치는 시스템 설계자로 설명하며, 표준화와 자동화로 조직의 기준선을 높이는 역할을 강조했습니다. 추상화, 안전, 확산 가능성을 함께 판단하는 역량을 중요하게 보았습니다.

#Platform Engineer#SDK#배포 자동화
4200