logo
logo
백엔드
Sanic
파이썬 asyncio를 이용하여 만들어진 비동기 기반 웹 프레임워크이며, Fast API와 비슷하게 성능에 초점을 맞추어 제작 됨
StackOverflow 질문 수: 212
Github Stars : ★ 18076
사용 기업
소셜/컨텐츠
교육
techstack-logo
짠컴퍼니
techstack-logo
매스프레소
기술 블로그 글
카카오페이
이미지 처리를 위한 파이썬 서버 프레임워크 선정기 with Django, FastAPI, Sanic
안녕하세요. 카카오페이 데이터실 Jenson, Todd입니다.카카오페이에서는 얼굴을 탐지하고 검증하는 기술을 활용해 고객 편의성과 안정성을 제공하고 있습니다. 저희는 얼굴 탐지 및 검증 기술을 서비스에 제공하는 프로젝트에서 서버를 개발하고 있습니다. (카카오페이 개발자센터에서 얼굴 인식 API를 제공하고 있으니 사용해보세요. ?)저희 서버는 현재 kotlin + spring boot 를 사용하고 있습니다. 하지만 이미지 처리 코드 포팅 및 결과값 정합성 등의 이유로 Python 기반의 서버 프레임워크를 사용하는 것으로 결정하였고, 어떤 프레임워크를 사용할지에 대한 고민과 결정을 공유드리고자 합니다.아래의 고민을 하고 있는 분들에게 많은 도움이 될 것 같습니다. ?이미지 처리를 담당하는 서버를 구축해야 하는데, 언어/프레임워크 선정부터 고민이야.java(kotlin)+spring boot를 사용하고 있는데, 개발 생산성이 부족한 것 같아. 다른 프레임워크 맛이나 볼까?왜 저희가 Python 기반의 서버 프레임워크를 사용하게 되었는지 말씀드리겠습니다.현재 저희 개발 Flow 입니다.모델 학습 및 검증 (By data scientist) 이미지 처리 로직 Python 으로 작성 (By data scientist) Python 으로 작성된 코드 kotlin 으로 포팅 (By ML engineer) 결과 정합성 검증 (By data scientist & ML engineer) 서버 개발 (By ML engineer) 실제 서비스 적용kotlin + spring boot 로 이미지 처리 서버를 개발하기 때문에 3, 4번과 같이 포팅, 정합성 검증하는 flow가 반드시 필요합니다. kotlin 에서의 이미지 처리는 OpenCV를 자바에서 사용하기 쉽게 래핑한 JavaCV를 사용했고, 행렬 처리는 native code로 작성했습니다. 아무래도 kotlin 에서는 이미지 처리 작업이 main job이 아니기 때문에 정보도 적고, 지원하지 않는 기능인 경우 native code로 작성하는 경우가 발생했습니다. 간단하게 예를 들어보면, 행렬의 축을 바꾸는 전치 코드를 Python 에서 kotlin 으로 포팅하여 비교해보겠습니다.Python 코드import numpy as np np. transpose (array)kotlin 코드fun Array. transpose (): Array < IntArray > { val cols = this .first().size return this .fold( List (cols) { IntArray ( 0 ) }) { list, arr -> list.zip(arr.toList()) { a, b -> a + b } }.toTypedArray() }위와 같이 Python numpy에서 제공하는 행렬 연산들을 kotlin으로 포팅하기 위하여 native code를 작성하거나 JavaCV의 연산을 사용하게 됩니다. 포팅이 끝나면 이어서 결과값 검증을 진행합니다. 검증이 한번에 잘 끝나면 좋겠지만, 다르게 나오는 경우에는 과장을
fastapi
kotlin
python
sanic
연관 기술 스택
techstack-logo
FastAPI
techstack-logo
Flask
techstack-logo
Python
Copyright © 2024. Codenary All Rights Reserved.