4P by neo 7달전 | favorite | 댓글 1개

결제 시스템 버그 수정 완료

  • 오늘 아침 긴급하게 진행된 작업 끝에, 월간 구독자에게 잘못하여 추가 일자에 대한 요금을 부과하는 버그를 결제 팀이 수정함.
  • 모든 테스트 스위트가 현재 통과되었으며, QA가 2028년에 수정 사항을 확인한 후 SRE가 사후 분석을 예정함.

GN⁺의 의견

  • 이번 버그 수정 사례는 소프트웨어 개발에서 QA(Quality Assurance)의 중요성을 강조함. QA 프로세스를 통해 발견되지 않은 버그가 실제 운영 환경에서 문제를 일으킬 수 있으며, 이는 고객 만족도에 직접적인 영향을 미침.
  • 사후 분석(postmortem) 절차는 시스템 장애나 버그 발생 후 원인 분석과 재발 방지를 위한 중요한 과정임. 이를 통해 팀은 문제 해결 능력을 향상시키고, 비슷한 문제가 다시 발생하지 않도록 예방책을 마련할 수 있음.
  • 비슷한 기능을 제공하는 다른 결제 시스템으로는 Stripe, PayPal 등이 있으며, 이들은 각각의 보안 및 안정성 기능을 갖추고 있음. 사용 전 각 서비스의 특징과 비용을 비교해보는 것이 좋음.
  • 기술 도입 시 고려해야 할 사항으로는 시스템의 안정성, 사용자 경험, 비용 효율성 등이 있음. 또한, 장애 발생 시 신속한 대응과 투명한 커뮤니케이션도 중요함.
  • 이 기술을 선택함으로써 얻을 수 있는 이점은 고객의 신뢰 회복과 시스템의 안정성 향상이지만, 반면에 긴급한 버그 수정으로 인한 작업 중단과 같은 단기적인 비용이 발생할 수 있음.
Hacker News 의견
  • 중국에서 친구가 들은 이야기: 결혼 증명서 예약 앱에서 나이 계산 부분에 버그가 있어서 법적 최소 연령인 22세를 연도에서 빼는 계산을 했을 때 존재하지 않는 2002년 2월 29일이 결과로 나왔음. 앱은 이 날짜를 사용자의 생년월일과 비교하려 했으나, 모든 오류를 비교에서 발생한 것으로 가정하는 오류 처리 코드 때문에 사용자들이 결혼하기에 너무 어리다며 모든 결혼 증명서 예약을 거절함.
  • ChatGPT API를 사용하는 제품이 있으며, 3.5 터보 버전을 사용함. 쿼리에 일부 날짜가 포함되어 있는데, 보통 텍스트를 반환하는 대신 오늘은 2024년 2월 29일이 유효하지 않은 날짜라고 생각하여 오류를 반환함. 웹 인터페이스를 통해 때때로 쉽게 재현할 수 있으며, 처음에는 유효하지 않은 날짜라고 말한 후 설명하는 과정에서 실수를 깨닫고 가끔 스스로 정정함.
  • Cloudflare에서 오늘 청구서를 보냈는데, 첨부된 PDF 파일 이름이 cloudflare-invoice-1970-01-01.pdf로 되어 있었음.
  • 스웨덴의 ICA 스토어에서 목요일 아침에 카드 결제를 받을 수 없었음. 대신 현금, Swish 또는 앱을 통해 결제해야 했음. 문제의 원인은 2월의 추가 날짜, 즉 윤일로 인한 ICA 결제 시스템 내부 문제였음. ICA는 스웨덴에서 가장 큰 식료품점 체인임.
  • 일부 소프트웨어가 날짜별로 데이터를 회전 디렉토리에 기록하는데, 테스트 시스템에서 수동 디버깅을 하던 중 2월 29일 UTC에 처음으로 디렉토리를 생성할 때 실패함. 디스크 공간이 부족해서 그런 것으로 밝혀졌지만, 한 시간 이상 윤년 버그로 확신함.
  • 샌프란시스코의 일일 날씨 기록을 Mastodon에 게시하는 봇이 있음. 오늘 예정대로 게시하지 않았음. 1875년부터 현재까지의 오늘 날짜에 대한 최고 기온, 최저 기온, 강수량을 살펴보는데, 1875년 2월 29일이라는 날짜가 없어서 오류가 발생함.
  • 반대로! 윤년이 아닌 해에는 생일을 축하해주지 않는 몇몇 서비스들이 오늘 축하해줌. 2월 29일에 태어남.
  • 구체적인 예로, Theatrhythm Final Bar Line이라는 리듬 기반 파이널 판타지 게임이 윤일에 대처하는 방법을 처리하지 않아서 오늘은 사람들이 게임을 할 수 없게 함. 게임을 시작할 수는 있지만 실제로는 플레이할 수 없음.
  • Rails 6 앱이 있고, time_ago_in_words(1.year.from_now)가 "약 1년"을 반환하기를 기대하는 테스트가 있음. 테스트가 실패했고, 흔들리는 테스트라고 생각했지만 로컬에서 재현할 수 있었음. 윤일에 해당 코드를 실행하면 "거의 1년"을 반환하기 때문임. Rails 콘솔에서 테스트할 수 있음.
  • 뉴질랜드의 몇몇 주유소에서 결제 소프트웨어의 "윤년 글리치"로 인해 목요일에 주유 펌프가 작동하지 않았음. 주유소와 결제 서비스 제공업체가 이를 확인함.