컨퍼런스&기술블로그
글또
-
결제 시스템 전환하기
들어가며안녕하세요.이번에는 기존 결제 시스템의 문제를 해결하고, 새로운 결제 시스템을 설계한 이야기를 해보려 합니다. 일반적인 온라인 결제는 구매 시점에 즉시 결제가 이루어집니다. 반면 저희 서비스는 Buy Now Pay Later(BNPL) 모델을 기반으로, 먼저 주문을 생성하고 이후에 정산하는 구조였습니다.이 구조는 유연하다는 장점이 있었지만, 결제 불이행 시 회사가 직접 리스크를 부담해야 한다는 문제가 있었습니다.이러한 이유로 점차 즉시 결제 모델을 도입하게 되었고, 그 과정에서 다양한 문제를 마주하게 되었습니다.이 글에서는 그 문제와, 이를 해결하기 위해 어떤 구조를 선택했는지 정리해 보겠습니다. 기존 결제 구조기존 결제 시스템은 BNPL(Buy Now Pay Later) 모델을 기반으로 설계되..
-
2025 회고
들어가며 안녕하세요. 이번에도 한 해를 마무리하며 회고를 작성해보려 합니다. 작년과 마찬가지로, 일상과 커리어 두 가지 카테고리로 나누어 정리해 보았습니다. 일상 철인 삼종 이번 연도에 잘했다고 말할 수 있는 것이 있습니다작년 회고 때 해보고 싶다고 말했던 철인삼종에 도전한 것인데요.서울시에서 주최하는 행사였고, 초급 코스로 도전해 완주했습니다.한강 물이 차가워서 수영할 때 많이 당황했던 기억이 나네요. 이번 연도에도 주최한다면 또 도전해 볼 생각입니다.재밌었어요. 수영 중급반 접영을 잘하지 못해 초급반에 오래 머물러 있었는데, 이제 중급반으로 올라가게 되었습니다.접영은 아직도 몇 바퀴만 돌아도 힘들어 자세가 무너지지만, 이전보다는 할 만해졌습니다.수영을 다닌 지도 어느덧 3년이 되어가는데, 미..
-
커스텀 메트릭 사용해보기
들어가며 안녕하세요.이번 글에서는 모니터링에 대해 다뤄보려고 합니다. 최근 회사에서 여러 서비스와 연동되는 기능을 개발하던 중, 기능 테스트 과정에서 “테스트 과정에서 보이는 수치들을 시각화할 수 있다면 검증이 훨씬 수월하겠다”는 생각을 하게 되었습니다.우선 1차적으로는 그라파나를 활용해 모니터링 환경을 구축했습니다. 각 DB에 직접 연결해 SQL을 조회하고, Mixed 패널을 통해 여러 DB 데이터를 한 화면에서 확인할 수 있도록 했습니다. 하지만 이 방식에는 빈틈이 있었습니다. 구현 상 DB에서 하드 딜리트된 데이터는 로그로만 남아 검증에서 누락되는 경우가 있었고, 이를 추적하기가 까다로웠습니다.이 문제를 해결하기 위해 로그로 남는 정보들을 메트릭화할 수 없을까 고민하다가 알게 된 것이 바로 커스텀 ..
-
리팩토링
회사에서 문제 많던 기능이, 흘러흘러 결국 나에게 왔다.기능을 정상화하라는 요구였다.중요한 기능이지만, 릴리즈 때마다 말썽을 부렸고, 예측 못 한 문제들이 자주 터졌다 먼저 해야 할 일을 정리했다.기능이 정확히 뭔가?지금까지 어떤 문제들이 있었나?이전 작업자가 정리해둔 문서나 이슈는 없나?코드를 보면서 전체 흐름을 파악하고, 예외 케이스들을 정리한다 기능이 무엇인가?이건 리팩토링 이전에 일을 대하는 자세이기도 하다.왜 이 기능이 필요한지, 어떤 문제를 해결하려는 건지 이해하는 게 중요하다.요구사항을 다른 해결방안으로 풀 수도 있기 때문이다.기능과 요구사항을 충분히 이해하고 있으면, 비슷한 문제를 다시 만났을 때 훨씬 빠르게 대응할 수 있다.나중에 유지보수할 때도, 기능의 컨텍스트로 쉽게 돌아올 수 있다..
-
높은 트래픽 환경에서의 현재 재고 처리 구조 고민
들어가며안녕하세요.이번 글에서는 가상의 시나리오를 통해 회사의 아키텍처를 어떻게 개선할 수 있을지 고민해 보고자 합니다. 저희 회사에는 주문 서비스와 창고 서비스가 존재합니다.이커머스에서 재고를 관리해 주문 수량을 제한하는 건 흔한 패턴입니다.하지만 저희 시스템은 고객이 주문할 때 재고를 실시간으로 확인하지 않습니다.이는 "무조건 배송"이라는 비즈니스 모델을 반영한 설계입니다.그렇다면, 만약 주문 시점에 재고를 체크해야 하고, 동시에 높은 트래픽이 몰린다면 어떤 문제가 발생할까요? 현재 구조현재 주문은 주문 서비스에 누적되며, 당일 주문 마감 시간이 되면 그제야 창고 서비스로 전달되어 배송 작업이 시작됩니다.창고 서비스는 사용자 트래픽을 직접 받지 않기 때문에 특정 시간 제외하고 트래픽으로부터 안전합니..
최신 글
-
2026.09.26 기록장TIL 2026.09.26 15:27
https://news.hada.io/topic?id=32517&utm_source=slack&utm_medium=bot&utm_campaign=T74H5245A 아직 이해하지 못한 것에 대해 블로그를 써라 | GeekNews머릿속으로만 생각할 때는 이해했다고 착각하기 쉽지만, 실제 문장으로 옮기면 "이게 정말 맞나?"라는 빈틈이 드러남. 글쓰기는 자신의 이해도를 검증하고 더 조사하게 만드는 방법이 됨 게시하news.hada.io나 또한 아직 모르는 것에 대해서 글을 쓴다.흥미를 이어가기 위해서는 알게 된 것을 바로바로 써야 한다. 정리된 글은 아니지만, 글의 목적이 보여주기 위함이 아닌 흥미 유지이기 때문에 가능하다.또 그것들이 모여서 결론에 도달했다면 정리된 글을 작성한다.이를 통해 얻을 수 있었던 ..
-
2026.09.09 대사 취소TIL 2026.09.09 23:27
어제 이야기하던 것처럼..대사 시 우리 측 결제 대기 건이 있을 경우는 확인 사항으로 row를 남기도록 한다.이는 취소 스케줄러가 제대로 동작하지 않았음을 의미하니, 어드민 확인이 필요하다.취소 또한 1:1로 비교한다. 취소 대기 또한 대사와 다를 시 하나의 행으로 적재할 수 있다. 대사는 00시에 바로 시작하는 것이 아닌 00시 30분에 실행한다.이때까지 문제인 거래들은 남기는 것이 좋다. https://juspay.io/blog/payment-reconciliation-across-multiple-psps-architecture-that-proves-every-rupee
-
2026.09.08 대사 경계TIL 2026.09.09 00:12
거래 대사를 만들게 되다고 했을 때 고려해야 하는 것은 경계이다.23:59분에 결제를 시작했고, 완료했다고 한다.하지만 우리 DB에 업데이트를 하지 못했다고 해보자.대사는 00시 30분에 이뤄진다.이때까지 DB업데이트가 실패하거나, 성공 상태가 너무 오래 방치되었기 때문에 취소로 돌리는 스케줄러에 의해 취소되었다고 해보자.1. 00시 30분 까지 DB업데이트가 실패우리 DB에는 pending 상태로 남아있을 것이고, PG대사에는 성공으로 남아있을 것이다.이는 우리쪽에서 취소 스케줄러가 취소를 했어야 했지만, 못한 케이스이다.일단 대사 알림 확인 테이블에 적재를 하자.대사 알림 확인 테이블은 대사 시 어드민이 확인해야하는 정보를 쌓는 테이블이다. 하나 있으면 좋을 거 같아서.2. 취소 스케줄러가 정상적으로..
-
2026.09.07 대사, 코드TIL 2026.09.07 21:31
https://news.hada.io/topic?id=33178&utm_source=slack&utm_medium=bot&utm_campaign=T74H5245A 원격근무가 아니라 서투른 비동기 소통이 문제다 | GeekNews원격근무의 장점을 유지하려면 사무실 복귀보다 비동기 소통 방식을 개선해야 하며, 이를 통해 유연성과 생산성을 함께 지킬 수 있음 7,700명 대상 연구에서는 원격근무자의 웰빙이 높고 이직률news.hada.io 그렇지 않다면 맥락을 보충하고 다음 네 요소를 분명히 해야 함 ◦ 무엇이필요한지 ◦ 왜필요한지 ◦ 어떤 방식으로필요한지 ◦ 언제까지필요한지 기본안으로 의사결정 단축하기• “어느 선택지를 선호하는가”라고 묻는 대신 “다른 의견이 없으면 옵션 A를 사용하며, 동의하지 않으면 ..
-
2026.08.31 설계TIL 2026.08.31 21:56
이번에 책을 내셔서, 구매를 했다.요즘 결제에 빠져있기 때문에 결제를 어떻게 처리하셨을까, 궁금해 그 부분을 빠르게 읽어보았다.나머지 부분은 처음부터 읽고 있다.나와 다르게 생각하는 부분도 있고, 동일하게 생각하는 부분도 있었다. 책 소개글에 아래의 영상을 보는 것을 추천한다길래 보고 있다. https://www.youtube.com/watch?v=HCB8jgAfG44 대출 시스템에 대한 이야기이다.신청과 실행등을 개념, 도메인으로 뺀다. 또 연체라는 개념이 나온다.단순 신청, 대출, 연체 등등을 상태로 관리하지 않고 개념으로 뺀다.나라면 어땠을까? 도메인에 대한 이해도 없고, 영상만 봤을 때는 어느 정도 상태로 빼지 않았을까? 하는 생각이다. 뭐 도메인으로 빼는게 더 좋았을 수 있으나, 나의 생각이 거..