추가 배포 없이 API의 case 통일시키기 / if(kakaoAI)2024
if kakao 카카오 · YouTube
AI 핵심 요약
카카오톡 마이구독은 여러 서비스와 레거시 DTO에 카멜 케이스와 스네이크 케이스가 섞여 있어, MSA 환경에서 API 형식을 바꾸려면 호출자와 호출 대상 서버를 순서대로 배포해야 했다. 이를 줄이기 위해 Spring MVC의 `RequestBodyAdvice`와 Jackson 커스텀 디시리얼라이저를 적용해 요청·응답을 각 서버가 원하는 케이스로 파싱하도록 했고, JSON 키만 변환하며 어노테이션과 제네릭 타입을 기준으로 처리 형식을 판단했다. 모든 서버에 호환 모듈을 먼저 적용한 뒤 케이스를 일원화하고, 로그를 모니터링한 후 모듈을 제거해 약 900개의 DTO를 서비스 중단 없이 변경했다. 케이스도 API 프로토콜의 복잡성을 키울 수 있으며, 이런 변경을 수월하게 하려면 팀의 코딩 컨벤션이 기반이 되어야 한다고 설명했다.
- 요청 본문을 컨트롤러에 매핑하기 전에 바꾸려면 필터나 인터셉터보다 Spring MVC의 `RequestBodyAdvice`가 적합하다.
- 파싱 실패 여부만으로 입력 형식을 판별하면 Jackson의 `FAIL_ON_UNKNOWN_PROPERTIES` 설정에 따라 누락 필드가 오류 없이 `null`이 될 수 있다.
- JSON 키만 변환하려면 Jackson의 `JsonNode`를 활용하고, 값 문자열은 그대로 두도록 처리한다.
- Jackson 디시리얼라이저는 캐싱될 수 있으므로 제네릭 타입을 인스턴스 필드에 보관한다면 `createContextual`에서 새 인스턴스를 반환해야 한다.
- 리플렉션 기반 변환은 성능을 고려해야 하며, `RequestBodyAdvice` 방식은 Spring MVC에 한정된다.
소개
운영이력이 쌓이면서 DTO들의 case들이 다양해진 상황에서, 개발 효율을 높이기 위해 case를 snake case로 일원화하기 위한 과정을 소개합니다. 24/7 상용환경과 MSA로 구성된 서버환경에서 Jackson 라이브러리를 활용해 서비스 중단없이 변경하려 고군분투한 일화입니다. #Spring #MSA #JAVA #DTO #Parsing 카카오톡 마이구독에서 백엔드 개발을 맡고 있는 Luis입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-83 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
이 자료가 담긴 로드맵
커뮤니티에서 더 보기비슷한 학습 자료
컨퍼런스 if kakao
카카오톡 펑 개발기 / if(kakaoAI)2024
컨퍼런스 if kakao
숏폼, 휘발성 컨텐츠 서비스인 “카카오톡 펑” 개발 과정을 소개합니다. 성능 최적화, 비디오/이미지 데이터 처리 등을 위한 경험을 공유합니다. #카카오톡펑 #개발기 #최적화전략 #실시간데이터 카카오톡 플랫폼 개발하는 Ocean입니다. 카카오톡 플랫폼을 개발하는 Hoodie입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-87 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
웹 개발 백엔드
컨퍼런스 if kakao
좌충우돌: 사장님 플러스 앱 아키텍처 전환기 / if(kakaoAI)2024
컨퍼런스 if kakao
유명한 Airbnb MVI프레임워크과 슬랙사의 Circuit을 카카오T와 픽커앱에 접목시킨 재미난 개발기와 presentation layer에서 겪었던 상태 관리 프레임워크 적용기를 소개합니다. 카카오T픽커 android 공통개발을 담당하고 있는 Roy입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-54 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
모바일 앱 개발
컨퍼런스 if kakao
업무 효율화를 위한 카카오 사내봇 개발기 / if(kakaoAI)2024
컨퍼런스 if kakao
카카오 내에 수많은 데이터에서 원하는 데이터를 빠르게 찾아주는 '0depth 사내봇 개발기'를 공유합니다. #Data #AI #LLM #RAG 카카오 데이터 조직의 Tory입니다. 실용적이고 사용자 친화적인 AI Application을 만드는 것에 관심이 많습니다. 카카오 내에 다양한 AI 프로덕트를 생산하는 Jennie입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-27 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024
AI에이전트 개발
컨퍼런스 if kakao
ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 / if(kakao)2022
컨퍼런스 if kakao
Legacy Server의 포팅을 위해 Domain Driven Design을 적용하여 MSA 화 한 사례를 공유합니다. #MSA #DDD 카카오 엔터테인먼트에서 백엔드 개발자로 일하고 있는 셜록입니다. git blame을 열면 혹시나 제가 짠 코드일까 두근두근하면서, 레거시 서버로 고통받았던 나날과 함께 backlog를 열심히 청소하는 중입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-37 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022
백엔드
컨퍼런스 if kakao
10년간 카카오톡 메시지 릴레이를 책임져온 C++ 기반 서버를 JVM 기반 언어(JAVA 및 Kotlin)로 포팅하는 이야기를 합니다. 위 프로젝트를 진행하게 된 계기를 소프트웨어 엔지니어링 측면으로 설명하고, 현재까지 진척 상황에 대한 이야기를 공유합니다. #카카오톡 카카오톡 메시징 시스템을 개발 및 운영하는 시리우스 입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-28 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022
백엔드 프로그래밍 언어