이종관
Back to Projects

선별 제어 소프트웨어 개발 및 안정화

초당 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. 배운 점

  1. Python 멀티프로세싱 심화 이해 - GIL의 실제 영향 범위
  2. 실시간 시스템 설계 - 백프레셔 처리, 그레이스풀 셧다운
  3. 리소스 관리 - 메모리 누수 방지, 프로세스 라이프사이클 관리