장애대응
-
유료 구독이 자동 만료됨장애대응 2023. 4. 28. 00:01
오류 시나리오 고객이 무료 상품 가입 무료 상품 취소 무료 상품 만료 유료 상품 구독 유료 상품이 자동 만료 (무료 상품의 만료 event가 한번 더 온 것으로 추정) 에러 케이스 분석 1단계: 에러 데이터 찾기(voc 인입) 2단계: 해당 고객분의 영수증 정보 찾기 먼저 온 무료의 만료 이벤트 나중에 온 유료의 만료 이벤트 3단계: 만료 요청이 온 영수증 구글 api로 호출 4단계: 호출 결과로만 비교/분석하기는 불가능 해결을 위한 가설 세우기 만료 event가 들어왔을 때 이전과 동일한 purchase-token과 만료 notification type(13)이 들어온 경우라면 무시한다 유료가 정상적으로 만료된 회원의 정보를 찾아 탐색해보자 정상 케이스 분석 시나리오 무료를 취소하지 않고 유료로 전환되..
-
SMS 메시지 중복 발송(kafka 메시지 중복 발행)장애대응 2023. 4. 3. 00:01
개요 무료 구독은 만료되면 자동으로 유료로 전환됩니다. 이때 아직 구독 취소를 하지 않은 사용자에게 3일 전에 알림을 주기 위해 메시지를 발송하는 로직이 존재했습니다. 어느 날, 메시지 발송이 여러번나갔다는 VOC가 인입되었으며 원인을 파악해보고자 합니다. 현재 시스템 구조 매일 오전 10시에 배치 어플리케이션에서 구독 취소를 하지 않은 사용자를 추출하여 Kafka 메시지를 발행합니다. 이후 notification system에서 Kafka 메시지를 consume 한 뒤 SMS 메시지를 전송합니다. 첫 번째 원인 파악 SMS 메시지를 발행하는 기능은 평소에 문제없이 잘 돌아가고 있었습니다. 첫 번째로 배치 애플리케이션에서 문제가 발생했을 수 있기 때문에 배치 애플리케이션의 로그를 살펴보았습니다. 하지만 ..
-
구글 구독시 3일 후 자동 환불 대응장애대응 2023. 3. 31. 00:01
환불이 일어나는 근본적인 원인 해결 우선 acknowlege가 끊어지게 되면 N번을 retry를 통하여 재시도하는 로직으로 대처 추후 개선 사항 서버와 클라이언트의 재설계를 통해 acknowlege가 승인된 이후 구독상품에 대한 정보를 저장하도록 변경해야 함 잘못된 데이터 처리 (서비스가 오픈한 시점 ~ hotfix가 일어난 시점) 까지는 데이터가 잘못되어 있을 수 있습니다. 또한 N번 retry 하더라도 데이터가 잘못되어 있을 수 있습니다. 우선 전체회원의 영수증 조회를 할 수 없으니 대상 군부터 추출하고자 했습니다. 우선 특정기간 동안에 AOS 상품들에 대해 가입되어 있는 회원 군에 대해 추출합니다. 이후 영수증정보를 가지고 google api를 통해 acknowlegementState가 0(권한을 ..
-
구글 구독시 3일 후 자동 환불 케이스 분석장애대응 2023. 3. 23. 00:01
개요 및 영향범위 분석 사용자가 구독상품을 결제한 뒤 3일 뒤에 자동으로 환불되는 경우가 발생하였습니다. 서버로직에서는 사용자가 결제한 구독상품에 대한 정보를 저장하고, 해당 상품의 구독 정보를 제3의 외부 저장시스템에 저장합니다. 이때 무료상품에 대한 만기일은 1 달이지만 유료상품에 대한 만기일은 무기한입니다. 이런 경우 사용자는 구독중이라고 뜨지만 실제로 구독을 해지하러 가는 경우 구글 플레이스토어에서는 구독 중인 상품이 보이지 않습니다. (이미 자동으로 환불되었기 때문) 사용자에게는 실제로 돈은 청구되지 않지만 구독중이며 N월 N일부터 매월 N원 자동 결제 예정이라는 문구가 표기됩니다. 이로 인해 사용자는 혼란에 빠질 수 있으며 VOC가 발생합니다. (문구를 보고 구독을 취소하러 갔지만 구독 중인 ..