피드로 돌아가기
Dev.toInfrastructure
원문 읽기
리소스 프로필 격리를 통한 시스템 가용성 및 응답성 최적화 설계
Building InternFlow (Part 1): Why I Chose a Microservice Architecture for a Student Project
AI 요약
Context
Job Crawler, AI 분석, RAG 서비스 등 서로 다른 리소스 요구사항을 가진 기능들을 단일 FastAPI 프로세스에서 운영할 때 발생하는 리소스 경합 문제 분석. 특히 무거운 AI 요청이 사용자 API 응답 속도를 저하시키는 병목 현상과 단일 장애 지점(Single Point of Failure)으로 인한 낮은 신뢰성 해결 필요.
Technical Solution
- 리소스 특성에 따른 서비스 분리: Network I/O 중심의 Crawler, CPU/Memory 집약적인 AI Service, Latency 민감한 Web API를 독립된 프로세스로 격리
- Docker Compose 기반의 서비스 오케스트레이션: 개별 Dockerfile 및 환경 변수 설정을 통한 서비스 간 독립성 확보
- 내부 네트워크 통신 구조 설계: Shared Internal Network를 통한 서비스 간 통신과 동시에 개별 서비스의 실패가 전체 시스템으로 전이되지 않는 Isolation 구조 채택
- 서비스 경계 조기 설정: 기능별 리소스 프로필 분석을 통해 초기 설계 단계에서 Microservice Architecture를 적용하여 향후 리팩토링 비용 최소화
실천 포인트
- 기능별 리소스 프로필(Network-heavy, Compute-heavy, Latency-sensitive) 분석 및 분류 - 서로 다른 워크로드의 서비스가 동일한 Thread Pool을 공유하는지 검토 - 단일 프로세스 내 장애가 전체 서비스 중단으로 이어지는 구조인지 확인 - 초기 설정 비용보다 분리 후 얻는 디버깅 효율성과 확장성 이득 산출