분류 전체보기(113)
-
호텔 데이터 마이그레이션 최적화 - 인덱스 & UPSERT
들어가며: 호텔 표준 데이터 최신화의 시작"36GB의 호텔 데이터 마이그레이션 해주세요."호텔 표준 데이터 최신화 프로젝트에서 마주한 첫 번째 과제였습니다. 호텔 데이터는 단순한 flat한 구조가 아닌, 6개의 테이블로 분산되어 저장되어야 했습니다:제가 생각한 이 마이그레이션의 핵심 요구사항은 "데이터 정합성"이었습니다. 하나의 호텔 데이터가 이 6개 테이블에 모두 성공적으로 저장되거나, 아니면 전혀 저장되지 않아야 했습니다("All or Nothing").또한 기존 데이터가 있을 수 있어 INSERT가 아닌 UPSERT를 사용해야 했죠.메모리 한계를 고려해 batch size를 100으로 설정했습니다. 36GB 전체를 한 번에 처리하는 것은 현실적으로 불가능했고, 실패 시 복구도 용이해야 했기 때문입니..
2025.02.16 -
알림톡과 예약 시스템의 트랜잭션 분리 - 아웃박스 패턴 도입기
문제 상황시작은 이랬습니다.“앤디(영어이름), 서버에 알림톡 에러 났다는 버그가 있던데요?”“앤디, 항공권이 예약이 제대로 안 됐다는데 확인좀 부탁드려요.”이런 문의가 들어왔을 때 가장 먼저 확인하는 것이 예약 상태입니다.일반적으로는 예약 실패시 즉시 사용자에게 피드백이 가야하는데, 해당 건은 예약도 실패했고 알림도 실패한 상황이었죠.로그를 확인해보니 ApiPlex(카카오 알림톡 대행사)와의 통신 오류로 인해 알림톡 발송에 실패했고, 이 실패가 예약 트랜잭션을 롤백시킨 것이었습니다.더 큰 문제는 사용자는 예약을 시도했다가 실패했다는 것조차 알 수 없었다는 점입니다.이는 출장 예약 시스템에서는 심각한 문제였습니다.항공권이나 호텔의 경우 실시간 재고(좌석, 객실)가 중요한데, 알림톡 장애로 인해 예약이 실패..
2025.01.29 -
비즈니스 확장성을 고려한 알림톡 발송 시스템 개선기: 전략 패턴의 실전 적용
알림톡이란?알림톡은 카카오톡이 제공하는 기업용 메시징 서비스입니다.일반적인 카카오톡 메시지와는 달리, 알림톡은 사용자가 해당 카카오톡 채널을 친구로 추가하지 않아도 정보성 메시지를 발송할 수 있다는 특징이 있습니다.기업들은 주로 주문 내역, 예약 확인, 배송 현황 등 사용자에게 꼭 필요한 정보를 전달하는 용도로 사용됩니다.알림톡의 장점은 다음과 같습니다:친구 추가가 없어도 발송 가능최대 1,000자까지 텍스트 전송 가능버튼을 통한 액션 유도 (최대 5개)높은 도달률과 신뢰도스팸이나 피싱의 위험이 낮음출장관리시스템에서의 알림톡 활용저희 회사가 만드는 출장관리시스템(이하 BTMS)에서는 다음과 같은 상황에서 알림톡을 활용하고 있습니다:항공권 예약 알림미확정(예약 실패)예약 완료 알림에약 취소발권 완료체크인 ..
2025.01.26 -
2024 회고, 그리고 2025 에는 목표보단 더 중요한 이것
최근 회고를 위해 휴대폰 갤러리를 통해 각 달에 대해 키워드를 뽑고 돌이켜보니, 2024 년에 나에게 정말 많은 일들이 있었다는 걸 깨달았다.특히 7월 1일 지금의 회사 입사 이전에 삶들이 마치 2,3 년이나 된듯한 일들처럼 느껴졌다. 그래도 당시에 내가 지인들이랑 대화하거나, 만났을 때 찍은 사진들이 이번 회고에 정말 많은 도움이 되었다. (앞으로 사진 많이 찍어야겠다 ㅎㅎ)갤러리를 통해 각 달마다 키워드 추출한 결과는 다음과 같았다.(오너스 템플릿 링크)위처럼 키워드 이후, 나온 대표적인 키워드 4 가지는 다음과 같았다.취준&뽀기술 (소프트, 하드)연애여행이 중 1,2 번에 대해서 회고를 이 글에서 하려고 한다.(3,4 번은 따로 개인 노트에 ㅎㅎ)1. 취준, 그리고 취뽀까지대학교 4학년, 그리고 추..
2025.01.05 -
코드 작성 가이드 리뷰: 실무에 바로 적용 가능한 개발자의 필독서
1. 책 소개코드 작성 가이드는 이시가와 무네토시가 발표한 Code Readability 강연 내용을 기반으로 만들어진 책입니다. 사실 이 책을 읽기 전에 그의 강연 PDF를 훑어본 적이 있었는데, 대략 700+ 장의 pdf 라서 읽을 엄두를 못 냈습니다 ㅠ하지만 저자는 서문에서 "이 책을 읽으면 강연을 듣지 않아도 된다"고 할 만큼 자신감을 드러낸만큼, 책을 읽는게 상당히 이득입니다!책은 단순히 코드를 짜는 기술을 넘어서, 팀 전체의 생산성을 높이는 "가독성 좋은 코드"를 작성하는 법을 알려줍니다. 시중에 나온 다른 클린 코드에 대한 책들을 읽으면, 방법적인 부분에 있어서는 다들 훌륭하다고 생각합니다.이 책은 마인드셋, 변수의 네이밍부터, 함수, 클래스 등등 모든 프로그래밍 전반에 있어서 작성 가이드를..
2024.12.22 -
Kibana 로그 파묘 및 부검 후, 사수님 양지바른 곳으로 매장(?)해드리기
> 이 글은 Elastic APM이 Kibana에 수집하는 데이터를 바탕으로, transaction 및 span 같은 주요 이벤트의 종류와 의미를 분석하며, 이를 통해 성능 병목 문제를 어떻게 확인하고 해결할 수 있는지에 대해 설명합니다. 또한, 실제 사례를 통해 문제가 발생한 원인을 추적하는 과정을 공유합니다.배경최근에 회사에서 검색을 개선하기 위해 저는 Elasticsearch 를 도입했었습니다.그래서 매번 Elasticsearch 관련 이슈가 생길때마다 항상 제가 도맡아 작업을 하게 됐는데,이러다 보니 팀원들에게 이제 Elastic? —> 채훈님? 이라는 인식이 강하게 박혀있던 찰나, 일이 생겼습니다.금주 개발 서버가 갑자기 원인 모를 이유로 매우 아파하는 이슈가 있었습니다.그리고 그럴때마다 항상 ..
2024.11.24