전체 글
-
이코에코(Eco²) Clean Architecture #11: Character 도메인 마이그레이션이코에코(Eco²)/Clean Architecture Migration 2026. 1. 4. 20:08
Character 도메인에 Clean Architecture를 적용하고, 로컬 인메모리 캐시 레이어를 통합한 과정을 기록합니다.AI Assistant: Claude Opus 4.5 (Anthropic)작업 일자: 2026-01-041. 마이그레이션 배경1.1 기존 구조 (domains/character)domains/character/├── api/v1/endpoints/│ ├── catalog.py # HTTP 엔드포인트│ └── internal_reward.py├── services/│ ├── character_service.py # ~400줄, 조회 + 캐시 + 매칭│ └── reward_evaluator.py├── repositories/│ └── charact..
-
FastAPI Lifespan: 애플리케이션 생명주기 관리Knowledge Base/Python 2026. 1. 4. 04:13
1. Context ManagerFastAPI Lifespan을 이해하기 위해서는 먼저 Python의 Context Manager 패턴을 이해해야 합니다.1.1 with 문과 Context Manager# 파일 처리 - 가장 흔한 Context Manager 사용 예with open("file.txt", "r") as f: content = f.read()# 여기서 파일이 자동으로 닫힘with 문이 하는 일:1. 진입: __enter__() 호출 → 리소스 획득2. 본문: 블록 내 코드 실행3. 퇴장: __exit__() 호출 → 리소스 해제 (예외 발생해도 실행)1.2 Context Manager 프로토콜Context Manager는 두 개의 메서드로 정의됩니다:class FileManager: ..
-
이코에코(Eco²) Clean Architecture #10: Auth/Users 스키마 정규화이코에코(Eco²)/Clean Architecture Migration 2026. 1. 2. 18:22
Auth와 Users 도메인의 스키마 통합 과정에서 정규화 수준을 결정하고, 데이터 타입을 개선한 과정을 기록합니다.1. 스키마 통합 배경AS-IS: 분산된 사용자 정보문제: auth.users.id와 user_profile.users.id 수동 동기화 필요문제점문제설명ID 동기화auth.users.id와 user_profile.users.id 수동 동기화 필요트랜잭션 분리회원가입 시 두 스키마에 걸쳐 원자적 삽입 어려움조인 복잡성프로필 조회 시 cross-schema JOIN 필요데이터 불일치동기화 실패 시 orphan 레코드 발생 가능TO-BE: 통합 스키마통합 결과auth.users + user_profile.users → users.accountsauth.user_social_accounts → ..
-
이코에코(Eco²) Clean Architecture #9: Presentation Layer 정제이코에코(Eco²)/Clean Architecture Migration 2026. 1. 2. 13:23
Presentation Layer의 gRPC 구조를 정제하고, 횡단 관심사를 인터셉터로 분리한 과정을 기록합니다.1. 판단 기준Presentation Layer 내부 폴더 구조를 결정할 때 적용한 판단 기준:1.1 폴더 분리 기준기준질문분리 조건역할 분리이 파일의 책임은 무엇인가?서로 다른 책임 → 다른 폴더변경 주기언제 이 파일이 수정되는가?다른 시점에 변경 → 다른 폴더생성 방식수동 작성인가, 자동 생성인가?자동 생성 파일 → 별도 폴더재사용성여러 서비스에서 공유되는가?공유 가능 → 별도 폴더1.2 gRPC 폴더 구조 결정파일 종류역할변경 주기생성 방식재사용결론*_pb2.py메시지 정의proto 변경 시자동 생성Xprotos/*_pb2_grpc.py서비스 스텁proto 변경 시자동 생성Xprotos/..
-
이코에코(Eco²) Clean Architecture #8: Infrastructure Layer 정제이코에코(Eco²)/Clean Architecture Migration 2026. 1. 2. 12:39
Opus 4.5, GPT 5.2와의 문답, 자료조사, 학습을 거치며 Infrastructure 계층을 기술 단위로 분리하고, gRPC를 Infrastructure Layer에서 Presentation Layer로 재정의한 과정을 기록합니다.1. 계층별 분류 철학Application Layer와 Infrastructure Layer는 서로 다른 기준으로 폴더를 분류한다.1.1 Application Layer: 기능(Feature) 기준application/├── oauth/ ← "OAuth 인증"이라는 비즈니스 기능├── token/ ← "토큰 관리"라는 비즈니스 기능├── users/ ← "사용자 관리"라는 비즈니스 기능└── audit/ ..
-
이코에코(Eco²) Clean Architecture #7: Application Layer 정제이코에코(Eco²)/Clean Architecture Migration 2026. 1. 2. 05:20
Clean Architecture 초안을 바탕으로 Opus 4.5, GPT 5.2와의 문답, 자료조사, 학습을 거치며 Application 계층을 정제하고 적용한 과정을 기록합니다.1. 문제 정의AS-IS 구조apps/auth/application/├── common/│ ├── dto/ ← 모든 DTO│ ├── exceptions/ ← 모든 예외│ └── ports/ ← 모든 Port (14개 파일)├── commands/ ← 기능 구분 없이 모든 Command└── queries/ ← 기능 구분 없이 모든 Query문제점문제설명common 비대화14개의 Port가 common에 혼재. 기능별 응집도 낮음기능 파악 불가bl..
-
새해 맞이 잡담잡담 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) 분리데이터..