Skia Python 적용기
두줄요약
Skia를 Python에 바인딩한 SIPSkia로 ImageMagick 기반 카드 변환을 교체했습니다. 평균 4배 성능과 이미지 변환 서버 CPU 사용률 30~40% 감소를 확인했습니다.
문제 상황
- Python·Flask·Celery와 ImageMagick·Wand 기반의 대규모 카드 이미지 변환 처리
- 매일 수백만 장 업로드 환경에서 이미지 변환 서버의 CPU 비용 절감 요구
해결 방법
- Skia 기반 이미지 처리 라이브러리 SIPSkia 구현과 crop·resize·JPEG 인코딩 API 구성
- boost.Python으로 C++ Skia와 Python 바인딩, distutils setup.py 빌드 구성
- Celery 카드 변환 코드에 SIPSkia 머지 후 서버 배포
주의할 점
- Skia master 브랜치의 JPEG 인코딩 문제와 Chrome 릴리즈 브랜치 선택 필요
- JPEG 바이너리의 널 문자 처리, distutils 컴파일 옵션, Ubuntu용 PIC·PIE 빌드 설정 이슈
- imageFilterQuality 조정을 통한 이미지 안티앨리어싱 품질 문제 해결
성능/운영 포인트
- ImageMagick 대비 평균 약 4배, 최대 5배 이상의 이미지 변환 성능
- 무한 반복 변환 테스트로 메모리 누수 점검 및 수정
- 전체 업로드 중 변환 비중은 약 10%이나 이미지 변환 서버 CPU 사용률 약 30~40% 감소


