선별 제어 소프트웨어 개발 및 안정화
초당 8개 × 300MB 이미지 실시간 처리 시스템
에이오팜·2021.04 - 2023.07·백엔드 개발
Python
Flask
멀티프로세싱
IPC
1. 문제
AI 기반 농산물 선별 시스템에서 고해상도 이미지를 실시간으로 처리해야 했습니다.
기존 상황
- 단일 프로세스 구조로 처리 병목 발생
- 이미지 1개당 300MB, 초당 8개 처리 필요
- CPU 6코어, RAM 32GB 환경의 리소스 한계
비즈니스 임팩트
- 처리 지연 → 선별 라인 전체 정체
- 데이터 유실 → AI 모델 학습 데이터 부족
- 시스템 불안정 → 현장 운영 신뢰도 저하
2. 내가 맡은 역할
선별 시스템의 핵심 소프트웨어 개발을 전담했습니다.
| 영역 | 담당 업무 | |------|----------| | 설계 | 멀티프로세싱 아키텍처 설계 | | 구현 | 이미지 처리 파이프라인 개발 | | 최적화 | IPC 통신 구조 최적화 | | 안정화 | 메모리 관리 및 예외 처리 |
3. 핵심 기술 선택
멀티프로세싱 vs 멀티스레딩
| 항목 | 멀티프로세싱 | 멀티스레딩 | |------|-------------|-----------| | GIL 영향 | ❌ 없음 | ⚠️ 있음 | | CPU 활용 | 모든 코어 활용 | 단일 코어 | | 메모리 | 프로세스별 독립 | 공유 |
선택: 멀티프로세싱
- Python GIL로 인해 CPU-bound 작업은 멀티스레딩 효과 없음
- 이미지 처리 + AI 연산 모두 CPU-intensive
- 6코어 모두 활용해야 목표 처리량 달성 가능
4. 성능 결과
| 지표 | Before | After | 개선 | |------|--------|-------|------| | 처리량 | 2개/초 | 8개/초 | 4x ↑ | | CPU 활용 | 1코어 | 6코어 | 전체 활용 | | 안정성 | 잦은 크래시 | 24시간 무중단 | 안정화 | | 데이터 유실 | 30% 이상 | 0% | 완전 해결 |
5. 배운 점
- Python 멀티프로세싱 심화 이해 - GIL의 실제 영향 범위
- 실시간 시스템 설계 - 백프레셔 처리, 그레이스풀 셧다운
- 리소스 관리 - 메모리 누수 방지, 프로세스 라이프사이클 관리