전체 글
-
새해 맞이 잡담잡담 2026. 1. 1. 07:51
https://www.youtube.com/watch?v=P8N385SfLWk저번 편을 재밌게 봐서 챙겨봤다. 저번 편이 더 재밌긴 했다.auth랑 my(users)를 클린 아키텍처+Persistence Offloading으로 갈아놓은 PR을 묵혀두고 유튜브 뒤적이는 중이다.토큰값도 걱정이고.. 대학생 시절 영화 보던 때 생각도 나서 이런 토크 보면 향수 아닌 향수가 찬다. 가짜 노스텔지어의 일종이다.영화를 딥..?하게 보거나, 많이 본 건 아니고 600-800편 정도로 좀 편향적이게 봤다. 그래서 본 편수가 상대적으로 적음에도 나름의 개인화된 취향을 가진 편이라고 생각한다. 고딩시절 영화 동아리 때 신기한 걸 많이 봐서 대학생까지 취향을 쭉 갈고 닦았었다.'그 시간에 학점을 챙겼으면 지금 이렇게까진 안..
-
이코에코(Eco²) Clean Architecture #6: My->Users 리팩토링.MD이코에코(Eco²)/Clean Architecture Migration 2026. 1. 1. 01:38
작성일: 2025-12-31Opus 4.5와의 문답을 거치며 작성한 문서이며 My->Users 리팩토링 과정의 초안이 됩니다.핵심 변경 사항변경AS-ISTO-BE도메인명myusers라우팅/api/v1/user/me/api/v1/users/meUser 소유권auth + my (분산)users (단일)auth -> 회원가입직접 DB 접근, Auth에서 수행gRPC, Users에서 수행마이그레이션 목표목표설명계층 분리Presentation, Application, Domain, Infrastructure 분리의존성 역전Port/Adapter 패턴으로 외부 의존성 추상화gRPC 통합auth ↔ users 도메인 간 gRPC 통신, 도메인 명확히 분리CQRS 적용읽기(Query)와 쓰기(Command) 분리데이터..
-
이코에코(Eco²) Clean Architecture #5: Message Consumer이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 19:53
개요웹 서버가 아닌 메시지 컨슈머(Worker)에서 Clean Architecture를 적용한 과정을 기록합니다.HTTP API 서버에서는 Controller → Use Case → Repository 패턴이 익숙하지만, MQ 기반 워커에서는 "어디까지가 Presentation이고, 어디서부터 Application인가?"가 모호합니다. 이 글에서는 auth-worker 구현을 통해 메시지 컨슈머에 Clean Architecture를 적용한 방법을 서술합니다.핵심 질문Presentation Layer가 필요한지, 웹 서버와는 어떻게 다른지ack/nack은 누가 결정하는지Infrastructure와 Application 경계는? etc. RabbitMQ 연결은 어디에 두나?설계 원칙1. Composition..
-
이코에코(Eco²) Clean Architecture #4 Auth Persistence Offloading이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 17:54
개요인증 서비스(auth-api)에서 직접 수행하던 영속성 작업을 별도의 워커(auth-worker, auth-relay)로 분리한 과정을 기록합니다. 느슨한 결합(Loose Coupling), 확장성(Scalability), 유지보수성(Maintainability)을 우선 가치로 삼았습니다.배경기존 아키텍처의 문제점기존 auth-api는 다음과 같은 영속성 작업을 동기적으로 수행했습니다:┌─────────────────────────────────────────────────────────────┐│ auth-api ││ ..
-
이코에코(Eco²) Clean Architecture #3: Auth 버전 분리, 점진적 배포이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 03:27
배포 전략: Canary리팩토링된 코드를 바로 배포해 클라이언트로 노출하는 것은 위험. Canary 배포로 일부 트래픽만 새 버전으로 라우팅하여 검증, PR에 부착된 Canary 라벨을 감지해 Canary 태그를 부착한 채로 패키징.┌─────────────────────────────────────────────────────────┐│ Istio VirtualService │├─────────────────────────────────────────────────────────┤│ X-Canary: true → auth-api-canary (version: v2) ││ (default) → auth-api (v..
-
이코에코(Eco²) Clean Architecture #2: Auth Clean Architecture 구현 초안이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 03:26
아키텍처 개요계층 구조와 의존성 방향의존성 규칙(Dependency Rule): 모든 의존성은 바깥에서 안쪽으로만 향한다.핵심 원칙 설명:Domain 독립성: 비즈니스 로직이 프레임워크나 DB에 종속되지 않음의존성 역전(DIP): Application이 Port(Interface)를 정의하고, Infrastructure가 구현테스트 용이성: 각 레이어를 Mock으로 대체하여 격리 테스트 가능유연한 교체: Redis → Memcached, PostgreSQL → MongoDB 전환 시 Infrastructure만 변경현재 디렉토리 구조apps/auth/├── main.py # FastAPI 앱 진입점├── setup/│ ├── config/settings...
-
이코에코(Eco²) Clean Architecture #1: Auth 문제사안 도출, 리팩토링 전략이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 03:24
기존 구조의 문제점폴더 구조domains/auth/├── tasks/ # 워커│ └── blacklist_relay.py├── database/ # DB 연결/세션├── interfaces/ # 추상화 인터페이스└── services/ # 비즈니스 로직문제 1: God Objectclass AuthService: def __init__( self, session: AsyncSession = Depends(get_db_session), token_service: TokenService = Depends(TokenService), state_store: OAuthStateStore = Depends(OAu..
-
이코에코(Eco²) Clean Architecture #0: Auth 리팩토링.MD이코에코(Eco²)/Clean Architecture Migration 2025. 12. 31. 01:10
작성일: 2025-12-31Opus 4.5와의 문답, 자료조사를 거치며 디벨롭한 문서이며 리팩토링 전 과정의 초안이 됩니다.1. 개요1.1 목표현재 domains/auth/ 구조를 Clean Architecture 원칙에 따라 apps/auth/로 리팩토링합니다.1.2 주요 변경사항항목현재목표루트 경로domains/auth/apps/auth/아키텍처혼합된 레이어드Clean Architecture의존성 방향양방향단방향 (안쪽으로만)ORM 결합Entity = ORM 모델Entity/ORM 분리2. 현재 기능 분석2.1 AuthService 메서드 → Use Case 매핑현재 메서드목표 Use Case타입파일authorize()OAuthAuthorizeInteractorCommandcommands/oauth_..