컨퍼런스&기술블로그
글또
-
결제 시스템 전환하기
들어가며안녕하세요.이번에는 기존 결제 시스템의 문제를 해결하고, 새로운 결제 시스템을 설계한 이야기를 해보려 합니다. 일반적인 온라인 결제는 구매 시점에 즉시 결제가 이루어집니다. 반면 저희 서비스는 Buy Now Pay Later(BNPL) 모델을 기반으로, 먼저 주문을 생성하고 이후에 정산하는 구조였습니다.이 구조는 유연하다는 장점이 있었지만, 결제 불이행 시 회사가 직접 리스크를 부담해야 한다는 문제가 있었습니다.이러한 이유로 점차 즉시 결제 모델을 도입하게 되었고, 그 과정에서 다양한 문제를 마주하게 되었습니다.이 글에서는 그 문제와, 이를 해결하기 위해 어떤 구조를 선택했는지 정리해 보겠습니다. 기존 결제 구조기존 결제 시스템은 BNPL(Buy Now Pay Later) 모델을 기반으로 설계되..
-
2025 회고
들어가며 안녕하세요. 이번에도 한 해를 마무리하며 회고를 작성해보려 합니다. 작년과 마찬가지로, 일상과 커리어 두 가지 카테고리로 나누어 정리해 보았습니다. 일상 철인 삼종 이번 연도에 잘했다고 말할 수 있는 것이 있습니다작년 회고 때 해보고 싶다고 말했던 철인삼종에 도전한 것인데요.서울시에서 주최하는 행사였고, 초급 코스로 도전해 완주했습니다.한강 물이 차가워서 수영할 때 많이 당황했던 기억이 나네요. 이번 연도에도 주최한다면 또 도전해 볼 생각입니다.재밌었어요. 수영 중급반 접영을 잘하지 못해 초급반에 오래 머물러 있었는데, 이제 중급반으로 올라가게 되었습니다.접영은 아직도 몇 바퀴만 돌아도 힘들어 자세가 무너지지만, 이전보다는 할 만해졌습니다.수영을 다닌 지도 어느덧 3년이 되어가는데, 미..
-
커스텀 메트릭 사용해보기
들어가며 안녕하세요.이번 글에서는 모니터링에 대해 다뤄보려고 합니다. 최근 회사에서 여러 서비스와 연동되는 기능을 개발하던 중, 기능 테스트 과정에서 “테스트 과정에서 보이는 수치들을 시각화할 수 있다면 검증이 훨씬 수월하겠다”는 생각을 하게 되었습니다.우선 1차적으로는 그라파나를 활용해 모니터링 환경을 구축했습니다. 각 DB에 직접 연결해 SQL을 조회하고, Mixed 패널을 통해 여러 DB 데이터를 한 화면에서 확인할 수 있도록 했습니다. 하지만 이 방식에는 빈틈이 있었습니다. 구현 상 DB에서 하드 딜리트된 데이터는 로그로만 남아 검증에서 누락되는 경우가 있었고, 이를 추적하기가 까다로웠습니다.이 문제를 해결하기 위해 로그로 남는 정보들을 메트릭화할 수 없을까 고민하다가 알게 된 것이 바로 커스텀 ..
-
리팩토링
회사에서 문제 많던 기능이, 흘러흘러 결국 나에게 왔다.기능을 정상화하라는 요구였다.중요한 기능이지만, 릴리즈 때마다 말썽을 부렸고, 예측 못 한 문제들이 자주 터졌다 먼저 해야 할 일을 정리했다.기능이 정확히 뭔가?지금까지 어떤 문제들이 있었나?이전 작업자가 정리해둔 문서나 이슈는 없나?코드를 보면서 전체 흐름을 파악하고, 예외 케이스들을 정리한다 기능이 무엇인가?이건 리팩토링 이전에 일을 대하는 자세이기도 하다.왜 이 기능이 필요한지, 어떤 문제를 해결하려는 건지 이해하는 게 중요하다.요구사항을 다른 해결방안으로 풀 수도 있기 때문이다.기능과 요구사항을 충분히 이해하고 있으면, 비슷한 문제를 다시 만났을 때 훨씬 빠르게 대응할 수 있다.나중에 유지보수할 때도, 기능의 컨텍스트로 쉽게 돌아올 수 있다..
-
높은 트래픽 환경에서의 현재 재고 처리 구조 고민
들어가며안녕하세요.이번 글에서는 가상의 시나리오를 통해 회사의 아키텍처를 어떻게 개선할 수 있을지 고민해 보고자 합니다. 저희 회사에는 주문 서비스와 창고 서비스가 존재합니다.이커머스에서 재고를 관리해 주문 수량을 제한하는 건 흔한 패턴입니다.하지만 저희 시스템은 고객이 주문할 때 재고를 실시간으로 확인하지 않습니다.이는 "무조건 배송"이라는 비즈니스 모델을 반영한 설계입니다.그렇다면, 만약 주문 시점에 재고를 체크해야 하고, 동시에 높은 트래픽이 몰린다면 어떤 문제가 발생할까요? 현재 구조현재 주문은 주문 서비스에 누적되며, 당일 주문 마감 시간이 되면 그제야 창고 서비스로 전달되어 배송 작업이 시작됩니다.창고 서비스는 사용자 트래픽을 직접 받지 않기 때문에 특정 시간 제외하고 트래픽으로부터 안전합니..
최신 글
-
2026.10.24 ~ 25 기록장 멱등키TIL 2026.10.24 22:37
https://brandur.org/idempotency-keys Implementing Stripe-like Idempotency Keys in PostgresBuilding resilient services by identifying foreign state mutations and grouping local changes into restartable atomic phases so that every request can be driven to completion.brandur.org 멱등키를 이용하는 방법 중 다른 관점으로 문제를 해결하는 방식이다.우리는 만료 시간을 둬서 그 이후의 요청은 사용자에게 주문 내역을 확인해 보라고 한다.이 글에서는 만료 시간보다는 잠금 시간을 사용한다. 예로 Leas..
-
2026.10.23 기록장TIL 2026.10.23 23:07
SEO요즘 AI로 인해 검색량이 줄긴 했지만, 의미 있는 작업이다.Nuxt같은 SSR 프레임워크가 SEO에 이점이 있다.요즘 봇들이 JS까지 실행해서 인덱싱을 한다고는 하지만, 권장은 HTML에 쓰는 것이다.우리의 사이트는 CSR로 작업되어 있다. SEO 작업을 하기 위해서 SSR로 뒤집는 것 말고 다른 작업이 필요했다.기존 SSR 프레임워크들은 클라 요청받으면 서버의 API응답을 받아 HTML을 그려 내린다.뭐 이걸 구현하면 된다. SEO용으로만.대부분 상세 페이지를 인덱싱하니, 상세 페이지 요청 시 node앞단에서 요청을 가로채 API호출하고 HTML을 그려주도록 하면 된다.결과적으로 상세 API가 2번 호출되는 것이긴 하지만, 실보다 득이 많다. 부하가 있다면 적절한 캐싱도 해볼 수 있다.
-
2026.10.22 기록장TIL 2026.10.22 23:04
https://zzsza.github.io/diary/2026/09/24/2026-developer-career-worries/ • 시간이 지나도 중요한 것 ◦ 문제 정의: 모호한 요구를 풀 수 있는 문제로 바꾸는 능력. Agent는 정의된 문제를 잘 풀지, 문제를 정의해주진 않음 ◦ 도메인 이해: 우리 비즈니스에서 뭐가 중요한지. 이걸 Agent에게 넣어줘야 좋은 결과가 나옴 ◦ 평가: 이게 잘 됐는지 판단하는 기준을 만드는 능력 ◦ 시스템 설계와 운영 감각: 실패하면 어떻게 되는지, 비용은 얼마인지, 어디서 깨지는지 ◦ 커뮤니케이션: 현업, 대표, 팀원에게 “이게 왜 필요하고 뭐가 좋아지는지”를 설명하는 것 https://terriblesoftware.org/2026/10/02/the-brain-sa..
-
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나 또한 아직 모르는 것에 대해서 글을 쓴다.흥미를 이어가기 위해서는 알게 된 것을 바로바로 써야 한다. 정리된 글은 아니지만, 글의 목적이 보여주기 위함이 아닌 흥미 유지이기 때문에 가능하다.또 그것들이 모여서 결론에 도달했다면 정리된 글을 작성한다.이를 통해 얻을 수 있었던 ..