스타트업 개발팀은 언제나 많은 변화를 겪게 됩니다. 저희 블럭스 팀도 마찬가지로 기존에 ‘누구에게 무엇을 보여줄까?’라는 문제를 해결하며 ‘초개인화 상품 추천’ 제품을 개발할 때와는 달리, 이제는 ‘누구에게 무엇을, 언제, 어떻게 보여줄까?’라는 CRM(고객 관계 관리, Customer Relationship Management) 문제를 해결하는 새로운 환경에 직면하게 되었습니다.
이 복잡한 문제를 풀기 위해 저희는 기존에 사용하던 개발 언어를 바꾸는 중요한 결정을 내렸습니다. 오늘은 이러한 결정을 내리게 된 배경과 이유를 이야기하려고 합니다. 이 글이 비슷한 고민을 하는 다른 회사들에게도 도움이 되길 바랍니다.
▶ 블럭스가 해결하는 CRM 문제가 궁금하다면?
새로운 제품과 새로운 개발 언어의 필요성
블럭스 팀은 AI 마케팅 솔루션 ‘블럭스’를 통해 ‘개인화 상품 추천’과 ‘개인화 CRM’ 제품을 제공하고 있습니다. 엔지니어 관점에서 볼 때 개인화 상품 추천은 클라이언트 플랫폼으로부터 추천 요청을 받아 블럭스의 AI 모델이 학습한 결과를 전달하는 서비스입니다.
AI 모델링 과정은 전문성과 복잡성이 요구되지만, 그 외 비즈니스 로직은 상대적으로 단순한 편입니다. 그래서 이 제품은 기존의 파이썬 기반 프레임워크인 ‘장고(Django, 파이썬 기반의 자유-오픈 소스 웹 프레임워크)’ 대신, 더 가벼운 ‘FastAPI’를 사용해 개발되었습니다. FastAPI는 파이썬 3.8 이상에서 HTTP 기반 서비스 API를 구축하는 데 적합한 웹 프레임워크입니다.
가볍고 빠른 FastAPI 덕분에 블럭스 팀의 엔지니어들은 AI 모델의 성능을 개선하고, 다양한 클라이언트 요구사항을 반영한 전처리와 후처리 모듈을 개발하며, AI 모델과의 통신 속도를 높이기 위한 ‘gRPC(구글이 개발한 오픈 소스 원격 프로시저 호출 시스템)’ 엔지니어링에 집중할 수 있었습니다.
또한 AI 모델링에 사용하는 프레임워크인 ‘텐서플로우(TensorFlow, 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리)’나 ‘파이토치(PyTorch, 파이썬을 위한 오픈소스 머신러닝 라이브러리)’에서 파이썬 언어를 그대로 활용해 머신러닝과 서버 엔지니어링을 소규모 인력으로도 효율적으로 운영할 수 있었던 것도 큰 장점이었습니다.
블럭스 팀은 ‘쿠버네티스(Kubernetes, 컨테이너화된 애플리케이션의 배포, 관리, 확장을 자동화하는 오픈 소스 플랫폼)’, ‘아파치 에어플로우(Apache Airflow, 데이터 공학 파이프라인을 위한 오픈 소스 워크플로 관리 플랫폼)’, ‘Kinesis Data Stream(실시간 스트리밍 데이터를 저장하고 수집하는 서버리스 데이터 스트리밍 서비스)’ 등 다양한 인프라 스택을 도입하며 빠르게 성장해 왔습니다. 이를 통해 더 큰 규모의 클라이언트, 즉 수십만에서 수백만 건의 데이터를 보유한 기업들에게도 개인화 상품 추천 제품을 안정적으로 제공할 수 있게 되었습니다.
▶ 블럭스의 엔지니어링 시스템 구경하기
Kinesis Data Streams로 실시간 스트리밍 데이터 S3에 적재하기
그렇게 상품 추천 제품을 고도화하는 데 집중하던 중 많은 클라이언트로부터 CRM 시장의 문제에 대한 이야기를 자주 듣게 되었습니다. 비슷한 논의가 반복되면서, 블럭스가 상품 추천 시장에서 해결하려는 문제와 CRM에서 마주한 문제들이 본질적으로 크게 다르지 않다는 점을 깨달았습니다. 이에 저희 블럭스 엔지니어팀은 이 새로운 문제를 해결하기 위해 추가 제품을 개발하기로 결심했고, 그 결과가 바로 블럭스의 CRM 마케팅 제품인 ‘Blux Message’였습니다.