Skip to main content

Posts

Showing posts from April, 2025

MCP 아키텍처 선언 — 플랫폼의 새로운 청사진

1. MCP(Modular Cloud Platform) 개요 MCP는 REINDEERS의 핵심 인프라 아키텍처로, 모든 기능을 독립된 모듈로 분리하고, 각 모듈이 자체 CI/CD 파이프라인을 통해 배포되며, 장애 시 자동으로 재배포 및 복구되는 구조를 목표로 설계되었다. 모듈화: 모든 서비스(API, AI, 물류, 결제, WMS 등)는 컨테이너 단위로 격리 복제: 리전 간 데이터 실시간 복제 (DTS + GTID 기반) 자동화: Drone CI/CD, COS 업로드, CDN 캐시 자동 무효화 보안: IAM 최소 권한, HTTPS + mTLS 내부 통신, VPC 내 Private Endpoint MCP라는 이름에 "Modular"가 들어간 이유는 명확하다. REINDEERS는 단일 서비스가 아니다. 거래 플랫폼(REINDEERS), 물류 SaaS(DVRP), 생산/재고 관리(POP), 문서 자동화(Document AI), 업무 자동화(Workflow AI)까지 5개의 플랫폼이 하나의 생태계를 이루고 있다. 이 플랫폼들이 독립적으로 배포되면서도 데이터와 이벤트를 공유하려면, 처음부터 모듈 간 경계가 명확하게 정의되어야 한다. MCP는 이 경계를 인프라 수준에서 강제하는 구조다. 2. 왜 이벤트 드리븐인가 — 일반 커머스 플랫폼과의 차이 일반적인 이커머스 플랫폼은 요청-응답(Request-Response) 패턴으로 충분하다. 사용자가 주문하면 서버가 처리하고 결과를 돌려준다. 하지만 B2B 무역 플랫폼은 다르다. 하나의 거래가 견적 → 주문 → 인보이스 → 선적 → 통관 → 정산이라는 긴 생명주기를 가지며, 각 단계마다 다른 주체(바이어,...

새로운 출발을 위한 점검 — 4년의 코드를 다시 열어보다

1. 초기 상황 — AWS 싱가포르, 복잡하게 얽힌 실험의 흔적 REINDEERS 초기 버전은 AWS ap-southeast-1 (Singapore) 리전 위에서 운영되었다. 하지만 이는 서비스 운영을 위한 구조가 아니라 "학습" 중심의 환경에 가까웠다. EC2, S3, RDS, CloudFront, Lambda 등 AWS 주요 기능이 모두 혼재했지만, 어떤 구성요소도 서로 명확히 연결되어 있지 않았다. 인프라 구성 예시 (기존 AWS) VPC (10.0.0.0/16) ├── Subnet-Public (10.0.1.0/24) │ ├── EC2: react-build-server │ └── EC2: spring-api-server ├── Subnet-Private (10.0.2.0/24) │ ├── RDS: mysql-v1 │ └── ElasticCache: disabled └── SecurityGroup: default (80/443 open to 0.0.0.0/0) IAM은 Root Key로 접근했고, Auto Scaling Group은 설정만 되어 있을 뿐 실제 트리거가 비활성화되어 있었다. CloudFront는 S3 버킷에 연결되어 있었지만, TTL(캐시 수명) 설정이 24시간으로 고정되어 실시간 반영이 어려웠다. API 응답 속도는 태국에서 평균 620ms, 말레이시아에서 710ms로 측정됐다. 이 수치는 글로벌 B2B 플랫폼으로는 치명적이었다. 감사(audit) 과정에서 가장 먼저 확인한 것은 인프라의 가동률이었다. Auto Scaling이 비활성화되어 있다는 것은, 트래픽 증가에 대한 대응 능력이 사실상 없다는 의미였다. 태국과 말레이시아의 바이어가 동시에 접속하는 시간대(오전 9시~11시 현지 시간)에 서버 부하가 집...