시작하며;
최근 생성형 AI 워크플로우를 운영하면서 ComfyUI 기반 서버 구조를 개선하는 작업을 진행했다. 구조적으로는 프롬프트를 전달하는 Proxy 서버와 실제 모델을 실행하는 ComfyUI 서버로 분리되어 있다. 그러나 기존 AI/ML 엔지니어께서 구성한 배포 파이프라인에서는 ComfyUI 모델을 Proxy 서버에서 관리하고 있었고, 이는 역할 분리 관점에서 불필요한 결합이라고 판단했다. 일정 내 마무리를 위해 직접 뛰어들어 구조를 단순화하고 배포 효율을 높이는 개선 작업을 마무리했다.
기존 구조의 문제;
- Proxy 서버는 원래 요청을 받아 ComfyUI 서버로 전달하는 역할만 담당한다.
- 기존 배포 프로세스는 Proxy 가 모델 다운로드와 관리까지 수행했다.
- Proxy 와 ComfyUI 는 본질적으로 역할이 다르기 때문에, Proxy가 모델까지 관리했다.
개선 작업 — 역할 분리;
구조 개선의 핵심은 모델 관리 책임을 ComfyUI 서버로 이관하는 것이었다. 기존에는 Proxy 서버의 배포 과정에서 모델을 직접 내려받고, system_stat 같은 체크 로직으로 모델이 정상적으로 다운로드되었는지 검증하는 단계까지 포함되어 있었다. 하지만 이는 Proxy 서버의 역할과 무관한 작업이었고, 배포 파이프라인을 불필요하게 복잡하게 만들고 있었다.
개선 이후에는 Proxy 서버가 오직 프롬프트 요청 전달만 담당하도록 단순화되었고, 모델 다운로드/로딩/검증은 전부 ComfyUI 서버에서만 수행하게 되었다. 덕분에 Proxy 서버의 배포 과정에서 더 이상 대용량 모델을 내려받거나 상태를 확인하는 로직이 사라졌고, 구조와 파이프라인 모두 한층 가벼워지고 직관적으로 정리되었다.

모델 관리 최적화 과정;
1. S3 Gateway Endpoint 적용;
모델은 S3 에 저장되어 있었고, 서버는 Private Subnet 내부에 배치되어 있었다. NAT 를 거치지 않고 바로 접근할 수 있도록 S3 Gateway Endpoint 를 적용했다.
- 기대 효과: 다운로드 속도 향상
- 실제 결과: 속도는 큰 차이가 없었고, 비용 최적화 효과가 더 컸다
- 결론: 네트워크 측면 최적화보다는 비용 절감이 핵심이었다고 판단했다.
2. EBS 성능 향상 (w/ Terraform);
모델 다운로드 후 압축 해제와 로딩에서 I/O 병목이 발생한다고 판단하여, EBS 성능을 상향 조정했다.
ebs {
volume_size = 100
volume_type = "gp3"
iops = 12000
throughput = 500
delete_on_termination = true
}
gp3 기본 스펙으로는 모델 다운로드와 로딩 과정에서 충분한 성능을 확보하기 어려웠다. 따라서 IOPS 와 Throughput 값을 크게 높여 스토리지 I/O 성능을 강화했다. 그 결과, 기존에는 모델을 모두 내려받고 로딩하기까지 약 8분이 소요되었으나, 튜닝 이후에는 동일한 과정을 2분 이내로 마칠 수 있었다. 물론 이러한 설정은 비용 증가로 이어지지만, 일정 내 안정적으로 배포를 완료하는 것이 더 중요하다고 판단했고, 결과적으로 비용을 감수하더라도 성능을 확보하는 것이 합리적인 선택이라고 보았다.
3. 멀티파트 + 병렬 다운로드 적용;
S3에서 모델을 내려받을 때 단일 쓰레드 awscli 방식은 속도가 한계가 있었다. 이를 해결하기 위해 s5cmd 를 도입하여 멀티파트 병렬 다운로드를 적용했다. sync 모드를 사용해 이미 존재하는 파일은 건너뛰고 필요한 파일만 가져오기 때문에 반복 배포 환경에서도 효율적이었다.
4. 도커 이미지 최적화;
모델 다운로드 및 로딩 최적화 외에도, 도커 베이스 이미지 교체 작업을 진행했다. 기존에는 nvidia/cuda:12.4.0-devel-ubuntu22.04 이미지를 사용했는데, 이 이미지는 거의 모든 패키지가 기본으로 포함되어 있어 빌드 사이즈가 크고 불필요한 의존성이 많았다.
이를 더 경량화된 런타임 전용 이미지로 교체하여, 이미지 크기를 줄이고 빌드 및 배포 속도를 단축하고 불필요한 의존성으로 인한 보안 리스크를 줄이는 효과를 얻었다.
마무리하며;
이외에도 AMI에 모델을 사전 내장하거나 EFS 같은 공유 스토리지를 도입하는 방법 등 여러 가지 대안이 존재한다. 다만 서비스 출시 일정이 얼마 안 남았고 실제 트래픽 규모를 가늠하기 어렵기 때문에, 앞으로는 부하 테스트와 성능 검증에 더 많은 비중을 두어 안정성을 확보할 예정이다.
return;
'DevOps' 카테고리의 다른 글
| Terraform 으로 만든 비공개 인프라: 외부는 막고 내부는 연다 (1) | 2025.07.27 |
|---|