Programmable Messaging에서 Verify API로 마이그레이션하기
Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.
요약 이어보기카카오스타일(크로키닷컴)이 2012년부터 REST API를 기본으로 사용하면서 실제 서비스를 만들다 마주친 REST의 한계 사례를 정리한 글이다. 교과서적 REST와 실무 API 설계의 간극을 솔직하게 드러내고, 최종적으로 GraphQL 전환을 검토하게 된 배경까지 이어진다.
핵심 포인트 - REST API는 HTTP 동사·리소스 URI 명명 관습이지만, Roy Fielding의 원 REST 아키텍처와는 다름 (HATEOAS, stateless 미적용) - 로그인/로그아웃 같은 동사성 액션은 REST URL로 표현하기 어려워 non-REST 스타일 혼용 - 여러 리소스를 한 번에 가져오거나 필드를 선택적으로 요청하는 경우 REST URL 설계가 번거로움 - 같은 리소스 URI지만 쿼리 인자에 따라 처리 코드가 다른 경우 REST 명명이 어색함 - 현실 결론: REST를 기본으로 하되, 맞지 않는 케이스는 RPC 스타일(/getProductPrices 등) 혼용 - 마이크로서비스 간에는 Thrift 도입, 클라이언트-서버도 통일하기 위해 GraphQL 탐색 중
상세 정리 - 쿠키 사용(stateless 위반), HATEOAS 미구현, Accept 헤더 미인식 등 현실적 타협 설명 - 로그인 처리 딜레마: /users/me/login 은 동사, POST /sessions 는 어색함 → non-REST API로 별도 처리 - non-REST API 실제 사례: /login, /acceptJoinRequest, /ignoreJoinRequest, /joinMatch, /linkWithFacebook - 여러 리소스 한 번에: GET /events/123?add=attendances,place 처럼 add 인자로 처리 - 배열 조회: GET /products/1,6,29,35/price 는 URL 길이 제한에 걸릴 위험 → /getProductPrices RPC 스타일 - 필드 선택: fields 인자로 추가 DB 접근이 필요한 필드만 선택 요청하는 규칙 - 같은 /products 라우트지만 검색어 검색·카테고리 검색 처리 코드가 다른 어색함 - /resources/valid, /resources/my-query 같은 상태·검색 URI 명명의 어려움 (GitHub 사례 언급) - 현재 상태: REST 기본 + 마이크로서비스 간 Thrift + 클라이언트-서버 GraphQL 실험 중
왜 읽나: REST API를 교과서대로 설계하다 현실 요구사항에 맞지 않는 경우를 반복해서 겪은 개발자라면, 비슷한 고민의 실전 사례와 프로젝트가 실제로 어떤 판단을 내렸는지 확인할 수 있다.
Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.
요약 이어보기포스타입 백엔드 엔지니어가 벡터 기반 개인화 추천 시스템을 실제 운영하며 맞닥뜨린 성능 장애와 용량 문제를 해결한 과정을 담은 2부다. 수백만 개의 벡터 KNN 검색이 피크 시간대에 전체 Elasticsearch 검색 성능을 흔드는 문제부터 클러스터 OOM 사태까지, 쿼리 최적화와 인프라 분리 두 가지 경로로 근본 해결에 이른다.
요약 이어보기포스타입이 태그 기반 추천의 한계를 극복하고 벡터 임베딩 기반 개인화 추천 시스템을 구축한 과정을 담은 1부다. 유사한 콘텐츠가 다른 용어를 쓰거나 동일한 태그가 전혀 다른 톤의 콘텐츠를 가리키는 문제를 임베딩 벡터로 해결하고, OpenSearch의 HNSW ANN 검색으로 수백만 벡터를 실시간 검색하는 시스템을 구축해 구매율 15% 향상을 달성했다.
요약 이어보기