$백엔드 개발자 Rueun의 기술 블로그|Java · Spring · 클린 아키텍처🌱
blog/Architecture

Architecture

15의 글

#Development@2026-03-19
운영 중인 서비스를 왜 지금 리팩토링하기로 했나

운영 중인 서비스를 왜 지금 리팩토링해야 했는지, 그리고 왜 전면 재작성 대신 점진적 전환을 선택했는지를 정리합니다.

#Legacy#Refactoring#Spring Boot#Gradle
#Development@2026-03-19
왜 Spring Boot, Gradle, React Router v7로 방향을 정했나

왜 Spring Boot, Gradle, React Router v7 SSR을 선택했고, 왜 /backend와 /frontend 구조를 먼저 만들었는지 정리합니다.

#Legacy#Refactoring#Spring Boot#Gradle
#Development@2026-03-19
AI가 잘 이해할 수 있는 구조를 먼저 만들었다

AI를 실무 파트너처럼 활용하기 위해 왜 코드 구조를 먼저 정리해야 했는지, 그리고 /backend, /frontend, 멀티모듈 구조를 먼저 잡은 이유를 정리합니다.

#Refactoring#Monorepo#Multi Module#AI
#Development@2026-03-19
Gradle 전환과 미사용 코드 정리부터 시작한 이유

왜 코드 개선보다 먼저 Gradle 전환과 미사용 코드 정리부터 시작했는지, 그리고 그 순서가 왜 중요했는지 정리합니다.

#Gradle#Refactoring#Legacy#Spring Boot
#Development@2026-03-19
domain과 infra를 나누며 백엔드 리팩토링을 시작했다

거대한 service 중심 구조를 한 번에 전면 분해하지 않고, posting 도메인부터 domain과 infra로 분리하며 Spring Data MongoDB를 도입한 과정을 정리합니다.

#Domain#Infrastructure#Spring Data MongoDB#Refactoring
#Development@2025-11-05
프로젝트 회고: 잘한 설계, 아쉬운 설계

클린 아키텍처로 문서 분석 시스템을 구축하면서 내린 설계 결정들을 돌아봅니다. 잘한 것과 아쉬운 것을 솔직하게, 그리고 다시 만든다면 무엇을 바꿀지 이야기합니다.

#Clean Architecture#Spring Boot#Java#Retrospective
#Development@2025-10-30
QueryDSL로 복잡한 동적 검색 쿼리 설계하기

상태, 카테고리, 날짜 범위, 도메인을 조합하는 복잡한 동적 검색 요구사항을 QueryDSL로 해결하고, 소프트 딜리트와 인덱스 설계까지 고민한 경험을 공유합니다.

#Clean Architecture#Spring Boot#Java#QueryDSL
#Development@2025-10-21
Dead Letter Queue로 장애를 설계 레벨에서 대비하기

외부 API 호출 실패를 조용히 삼키지 않고, Dead Letter Queue 패턴과 Google Chat 알림으로 운영 가시성을 확보한 경험을 공유합니다.

#Clean Architecture#Spring Boot#Java#Resilience
#Development@2025-10-13
느리고 큰 외부 API 응답, 스트리밍으로 처리하기

AI 분석 API의 느린 응답을 Reactor의 Flux 스트리밍으로 처리하고, AbstractApiClient 추상 클래스로 공통 관심사를 분리한 경험을 공유합니다.

#Clean Architecture#Spring Boot#Java#WebFlux
#Development@2025-10-02
Redis Streams로 비동기 분석 파이프라인 설계하기

Kafka, RabbitMQ, Redis Streams 중 Redis Streams를 선택한 이유와 트레이드오프, TransactionalEventListener로 데이터 정합성을 지키는 방법, Consumer Group으로 at-least-once를 보장하는 구조를 정리합니다.

#Clean Architecture#Redis Streams#Async#Event Driven
#Development@2025-09-22
Port & Adapter 패턴으로 외부 스토리지 연동하기

파일 업로드/다운로드 설계에서 Presigned URL 방식을 선택한 이유와, FileStorage 인터페이스(Port)와 CephFileStorage(Adapter)로 기술 독립성을 확보한 과정을 정리합니다.

#Clean Architecture#Port and Adapter#Java#Spring Boot
#Development@2025-09-12
상태 머신을 도메인 객체로 표현하는 방법

AnalysisStatus와 AnalysisStep Enum으로 분석 파이프라인의 상태 전이 규칙을 캡슐화한 설계를 소개합니다. 정보전문가 패턴과 상태 머신을 결합해 잘못된 상태 전이를 도메인 수준에서 차단하는 방법을 다룹니다.

#Clean Architecture#Domain Driven Design#State Machine#Java
#Development@2025-09-03
멀티 모듈 프로젝트, 왜 클린 아키텍처로 시작했나

Spring Boot 3.5 + Java 21 기반 문서 분석 시스템을 설계하면서 클린 아키텍처와 Gradle 멀티 모듈 구조를 선택한 이유와 그 과정을 정리했습니다.

#Clean Architecture#Spring Boot#Java#Gradle
#Development@2025-05-12
Reader/Writer 패턴으로 가볍게 시작하는 CQRS

공고 목록 3초 로딩과 151개 쿼리를 겪고, Repository를 Reader/Writer로 분리해 200ms까지 줄인 이야기

#CQRS#Clean Architecture#JPA#Spring Boot
#Development@2024-11-18
Strategy + Factory 패턴으로 정렬 전략 깔끔하게 관리하기

정렬 방식 3개째가 추가되면서 Service가 50줄을 넘긴 순간, Strategy + Factory로 분리한 이야기

#Design Pattern#Strategy Pattern#Factory Pattern#Java