카
카카오뱅크
February 21, 20251회
Exposed에서 도망 간 Escape를 찾습니다 (feat. MySQL)

간단 소개
Exposed와 MySQL 환경에서 발생한 Escape 문자열 처리 오류를 디버깅을 통해 해결하고, 근본적인 해결책을 모색한 과정을 공유합니다.
AI Summary
- SQLSyntaxErrorException 발생 및 원인 분석
- 카카오뱅크 홈 화면 서비스에서
SQLSyntaxErrorException발생, 원인은 Exposed와 MySQL 간의 Escape 문자열 처리 오류였음 - Exposed는 JPA 대비 가볍고 러닝 커브가 낮아 사용되었으나, \ 문자 처리에서 문제 발생
- 카카오뱅크 홈 화면 서비스에서
- 문제 해결 과정 및 디버깅
- Exposed Github Issue에서 유사 문제 확인, 로그에 찍힌 쿼리와 실제 실행 쿼리가 다를 수 있음을 인지
- 디버깅을 통해 MySQL Connector가 INSERT 시에는 Escape 처리를 하지만, UPDATE 시에는 하지 않음을 확인
- 원인은 upsert DSL에서 INSERT는 값, UPDATE는 Expression 타입만 인자로 허용하는 데 있었음
- 해결책 및 최종 결정
- 3가지 해결책 고민: 1) DSL에서 Escape 처리, 2) JPA처럼 변경, 3) Exposed에 이슈 제보
- 최종적으로 3번을 채택, 우선 2번으로 Workaround 처리 (SELECT 후 INSERT or UPDATE)
- DBA를 통해 QPS 문제 없음을 확인, 동시성 문제 방지 조치
Next Feeds

신뢰성 향상을 위한 SLI/SLO 도입 1편 - 소개와 필요성
SRE의 역할, SLI/SLO의 개념과 정의, 측정 방법, 그리고 오류 예산을 통한 리스크 관리 및 실제 운영 업무 활용 방안을 소개합니다.
SRESLISLO오류 예산신뢰성
2025. 2. 21.
LY Corp

배포 자동화 툴 개발을 위한 AWX 활용
AWX를 활용한 배포 자동화 툴 개발 방법과 고려사항을 제시하고, 배포 자동화의 중요성 및 AWX의 장점을 강조합니다.
배포 자동화AWXAnsibleKubernetesDevOps
2025. 2. 21.
skplanet
테스트 자동화의 시작 - Cypress 기반 E2E 테스트 도입기
카카오모빌리티 웹 FE 개발팀의 Cypress 기반 E2E 테스트 도입 및 활용 사례, 그리고 테스트 자동화 전략을 소개합니다.
E2E 테스트Cypress테스트 자동화API Mockingtesting-library
2025. 2. 20.
카카오모빌리티

사용자 모르게 리멤버 UI icon 개선하기
리멤버 UI 아이콘을 사용자 인지 없이 개선하여 VOC 감소 및 제작 리소스 절감 효과를 얻고, 브랜드 가치를 UI에 자연스럽게 녹여냄.
UI icon리멤버Pretendard사용자 경험디자인 시스템
2025. 2. 20.
리멤버
MongoDB WiredTiger의 B+Tree
MongoDB WiredTiger의 B+Tree 구조, 리프 페이지 관리 방식, InnoDB와의 비교 분석을 통해 데이터 관리 방법을 심층적으로 설명합니다.
MongoDBWiredTigerB+TreeInnoDBMVCC
2025. 2. 20.
카카오
VM Blue-Green 전환으로 효율적인 개발 환경 만들기 (feat. Property 주입)
VM Blue-Green 전환과 Property 주입을 통해 CI/CD 효율성을 높이고 개발 환경을 개선한 경험 공유.
Blue-Green 배포CI/CDProperty 주입DockerSpring Boot
2025. 2. 19.
현대자동차