Programmable Messaging에서 Verify API로 마이그레이션하기
Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.
요약 이어보기카카오스타일(크로키닷컴) 창업자가 2012년 회사 설립 당시 PHP, ASP, Spring, Rails, Node.js 중에서 Node.js를 선택한 기술 결정 과정과 그 이후의 경험을 공유한다. 단순 성능 논거가 아니라 이벤트 주도(event-driven) 프로그래밍 모델에 대한 철학적 선호에서 비롯된 결정이다.
핵심 포인트 - 선택 기준: HTTP 요청만 처리하는 앱 서버 용도, Rails의 "정해진 방식 강제"가 거슬림 - 핵심 이유: 이벤트 주도 방식이 스레드·락 모델보다 근본적으로 낫다고 판단 - 스레드의 문제: 컨텍스트 전환 비용 + 락을 안전하게 작성하는 어려움 - Node.js 강점: 플랫폼 태생이 이벤트 주도라 모든 API가 비동기로 설계됨 - 비교: Java NIO, Python asyncio는 추가 학습이 필요하고 기존 블로킹 API 혼용 위험 존재 - JavaScript의 단점은 CoffeeScript → TypeScript로, 콜백 지옥은 async → Promise로 단계적 해소
상세 정리 - 후보 탈락 이유: PHP(언어 완성도), ASP(Linux 부적합), Spring(컴파일 배포 거부감) - Rails: 기능 풍부하지만 "레일즈가 제시하는 방식대로" 만들어야 하는 제약이 거슬림 - 앱 서버이므로 웹 페이지 기능 불필요 → Express의 단순함이 오히려 적합 - 이벤트 주도 결정 근거: 스레드 컨텍스트 전환 비용 + 락의 복잡성 회피 - Node.js vs 타 언어 이벤트 방식: Java NIO, Python asyncio는 별도 API 학습이 필요 - 의도치 않은 블로킹 I/O 혼용 위험 → 플랫폼 태생이 비동기인 Node.js가 안전 - JavaScript 단점 인정: 프로토타입 상속, this 바인딩, 변수 스코프 등 혼란 요소 - CoffeeScript로 JavaScript 문법 단점 회피, 프로젝트 성장 후 TypeScript 전환 고려 중 - 콜백: async 라이브러리 → Promise 전환, TypeScript 후 async/await 예정 - 성능은 결정 요인이 아님: 언어 이벤트 모델이 같다면 컴파일 언어(Java)가 당연히 더 빠를 것 - 구인 어려움은 있지만 Node.js 선택에 만족하는 현재 시점 소감 포함
왜 읽나: 성능 벤치마크가 아닌 프로그래밍 모델(이벤트 주도 vs 스레드)의 설계 철학으로 언어/플랫폼을 선택한 사례로, 기술 결정의 근거를 어디서 찾아야 하는지 보여주는 글이다.
Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.
요약 이어보기포스타입 백엔드 엔지니어가 벡터 기반 개인화 추천 시스템을 실제 운영하며 맞닥뜨린 성능 장애와 용량 문제를 해결한 과정을 담은 2부다. 수백만 개의 벡터 KNN 검색이 피크 시간대에 전체 Elasticsearch 검색 성능을 흔드는 문제부터 클러스터 OOM 사태까지, 쿼리 최적화와 인프라 분리 두 가지 경로로 근본 해결에 이른다.
요약 이어보기포스타입이 태그 기반 추천의 한계를 극복하고 벡터 임베딩 기반 개인화 추천 시스템을 구축한 과정을 담은 1부다. 유사한 콘텐츠가 다른 용어를 쓰거나 동일한 태그가 전혀 다른 톤의 콘텐츠를 가리키는 문제를 임베딩 벡터로 해결하고, OpenSearch의 HNSW ANN 검색으로 수백만 벡터를 실시간 검색하는 시스템을 구축해 구매율 15% 향상을 달성했다.
요약 이어보기