정산 시스템 단계적 오픈과 성과 분석

이번 포스팅에서는 무신사의 정산 시스템 단계적 오픈과 실제 운영 성과를 심층적으로 분석합니다. 막대한 양의 데이터를 처리하는 정산 시스템을 성공적으로 구현함으로써 발생한 변화를 살펴보며, 더 이상 야근하지 않아도 되는 환경을 만들어낸 비결을 소개합니다. 정산 시스템의 효과적인 혁신으로 인해 무신사는 운영 효율성을 크게 향상시킬 수 있었습니다. 정산 시스템의 단계적 오픈 전략 정산 시스템은 복잡한 데이터 처리와 다양한 규정이 얽혀 있어 한 번에 오픈하기에 리스크가 큰 시스템입니다. 이러한 이유로 무신사는 단계적 오픈 전략 을 채택하였습니다. 정산 시스템은 원천 데이터를 기준으로 단계적으로 기능을 오픈하며, 각 단계에서 발생하는 데이터 품질 이슈와 예외 케이스를 사전에 수정하는 과정이 필요했습니다. 이 전략의 첫 단계로는 원천 데이터 적재 모듈을 선배포하여 실제 운영 환경에서 발생하는 모든 케이스를 수집하였습니다. 이를 통해 수집 과정에서 발생할 수 있는 데이터 품질 문제와 오류를 미리 발견하고 수정할 수 있었습니다. 실제 운영 데이터의 세세한 수집이 이루어짐으로써, 정산 정책 수립에 필요한 엣지 케이스를 정리하고 기준을 확립할 수 있었습니다. 두 번째 단계는 실제 데이터 기반 QA 및 시뮬레이션입니다. 정산 시스템의 검증은 바로 실 운영 데이터를 활용한 리허설을 통해 이뤄졌습니다. 하드웨어 환경을 운영 환경과 동일하게 설정하여, 실제 데이터를 이용한 반복적인 정산 테스트가 이루어졌으며 이 단계에서 발생한 오류는 즉시 수정하여 시스템의 신뢰성을 높였습니다. 최종적으로, 모든 검증이 완료된 후에 전체 정산을 실행하고 이 과정을 통해 무결한 정산이 가능해졌습니다. 이러한 철저한 단계적 오픈 전략 덕분에 시스템 일정을 맞추며 정산 업무를 안정적으로 수행할 수 있었던 것입니다. 정산 시스템 성과 분석 정산 시스템의 성공은 단순히 기술적 오류가 없는 배치 마감에 그치지 않습니다. 정산의 성공률을 ‘완전한 정합성’으로 정의하고, 이를 기반으로 다양한 성공...

정산 시스템 설계와 구현 과정 분석

이번 글에서는 정산 시스템 구축 과정과 그에서의 설계 원칙과 기술 선택에 대해 자세히 살펴보겠습니다. 정산 시스템은 문제 해결이 복잡한 도메인으로, 이를 안정적인 구조로 구현하는 것이 핵심 과제입니다. 특히, 멱등성과 결정적 계산이라는 원칙을 바탕으로 정산 시스템이 어떻게 설계되었는지를 알아보겠습니다. 정산 시스템의 멱등성 기반 설계 정산 시스템의 가장 중요한 설계 원칙 중 하나는 바로 멱등성입니다. 멱등성이란 같은 연산을 여러 번 수행해도 결과가 변하지 않는 성질을 말합니다. 이를 기반으로 한 시스템 설계는 장애 발생 시 데이터의 무결성을 보장할 수 있는 중요한 요소로 작용합니다. MASS 정산 시스템은 이벤트 기반으로 운영되며, 이러한 이벤트는 종종 중복 수집이나 재처리를 겪게 됩니다. 따라서 이 시스템에서는 다음과 같은 조건을 갖추게 됩니다. 첫째, 이벤트 재시도(Retry)와 격리(DLT)를 명확히 분리하여 처리하는 것입니다. 이를 통해 복구 작업이 원활하게 이루어질 수 있습니다. 둘째, 서비스 수준에서 트랜잭션 식별자를 기준으로 멱등 갱신을 수행하여, 동일 이벤트가 여러 번 처리되더라도 결과는 항상 일정하도록 합니다. 이를 통해 정산 시스템은 장애가 발생하더라도 안전하게 재처리할 수 있는 기반을 마련하게 됩니다. 셋째, DLT가 발생하면 해당 이벤트는 정산 흐름에서 즉시 제외됩니다. 각 이벤트는 모니터링 시스템을 통해 관리되며, DLT 발생 시 운영자는 이를 즉시 인지할 수 있습니다. 이러한 설계 원칙을 통해 시스템은 더욱신뢰할 수 있는 환경으로 거듭나게 되며, 문제가 있는 이벤트가 전체 정산 흐름을 방해하는 것을 방지할 수 있습니다. 정산 시스템은 이처럼 밀접하게 설계된 멱등성 기반으로 운영됨으로써, 상시적인 데이터 무결성을 유지합니다. 정산 프로세스의 배치 처리 구조 정산 시스템에서 또 하나의 중요한 요소는 배치 처리입니다. MASS에서는 정산 집계, 마감, 리포트 생성을 담당하는 배치 애플리케이션이 설계되어, 전반적인 정산 프로세...

2025년 첫 번째 29QA 컨퍼런스 진행 후기

2025년 29CM QE팀은 첫 번째 29QA 컨퍼런스를 성공적으로 개최하였습니다. 이번 컨퍼런스는 팀원들의 고유한 레슨 러닝을 공유하고 외부 QA 팀과의 네트워킹을 도모하는 자리가 되었으며, 다채로운 주제로 총 13개의 세션이 진행되었습니다. 이 글에서는 29QA 컨퍼런스의 진행 과정과 의미, 강연 내용을 정리해 보겠습니다. 1. 컨퍼런스 준비와 팀워크의 중요성 29QA 컨퍼런스 준비는 한 달이라는 짧은 기간 동안 이루어졌습니다. 4명의 팀원이 각각 3개 이상의 세션을 준비해 총 13개의 세션을 진행하기 위해 모든 팀원이 협력하였습니다. 이러한 팀워크는 컨퍼런스의 성공에 결정적인 역할을 했습니다. 팀원들은 각자의 강점을 살려 질 좋은 발표 자료를 만들어내기 위해 긴밀하게 소통하였고, 결국 이 모든 과정이 훌륭한 컨퍼런스로 이어졌습니다.  컨퍼런스 준비 과정에서 팀원 각각의 역할이 중요했습니다. 준비 과정에서 세션 주제를 선정하고 자료를 준비하며 시간을 조율하는 등, 참석자들에게 의미 있는 콘텐츠를 제공하기 위해 많은 노력을 기울였습니다. 팀의 마스코트인 '큐엉이'가 포함된 굿즈와 홍보 배너의 제작은 행사 분위기를 더욱 고조시켰고, 이는 단순한 발표를 넘어서 하나의 이벤트로 자리잡는 데 큰 도움이 되었습니다. 각 발표가 진행될 때마다 팀원들은 서로 응원하며 발표의 질을 더욱 높이려 했습니다. 2. 다양하고 풍부한 세션 진행 이번 29QA 컨퍼런스의 가장 큰 특징 중 하나는 총 13개의 다양한 세션이 진행되었다는 점입니다. 각 세션은 주제의 다양성 뿐만 아니라, 발표자들의 전문성과 열정이 돋보이는 시간들이었습니다. 첫 번째 세션부터 열세 번째 세션까지 각각의 발표는 현업에서의 실질적인 경험과 노하우를 바탕으로 하여 참석자들에게 큰 영감을 주었습니다.  예를 들어, '25년 자동화 유지보수 여정' 세션에서는 지난 몇 년 간의 경험을 공유하며, 실수로 인한 Fail에 대한 원인 분석과 해결 방안을 제시하는 것이 인상 깊었습...

정산 시스템 설계와 신뢰성 확보 방안

정산 시스템의 필요성에 대한 고민은 단순한 계산을 넘어 효율성과 신뢰성을 확보하는 방향으로 발전해야 합니다. MASS는 이러한 요구를 충족시키기 위해 설계되었으며, 복잡한 정산 과정을 시스템이 완벽하게 처리하도록 돕습니다. 본 기사는 정산 시스템 설계의 중요성과 함께 신뢰성 확보 방안을 짚어보겠습니다. 정산 시스템 설계의 필요성 정산 시스템을 설계하는 것은 복잡한 계산 과정을 자동화하여 오류 가능성을 최소화하기 위해 매우 중요합니다. 특히, 기존의 수기 작업과 엑셀 검증으로 인한 높은 업무 부담은 조직의 효율성을 저해하고 오류를 증가시키는 요인으로 작용해 왔습니다. MASS는 이러한 문제의식에서 출발하여, 정산이 시스템의 책임으로 이관되는 방안에 초점을 맞추었습니다. 따라서, 정산 시스템은 수작업의 부담을 덜고 실시간으로 데이터를 처리하여 파트너 업체와의 정산 결과를 투명하게 공유하기 위한 필수적인 도구로 자리잡게 되었습니다. 이로 인해, 모든 관련자는 동일한 기준의 정산 결과를 확인할 수 있으며, 이를 기반으로 논쟁의 여지를 최소화할 수 있습니다. 결국, 정산 시스템은 단순한 숫자의 집계가 아니라, 복잡한 데이터와 다양한 기준을 조율하는 중추적인 역할을 하게 됩니다. 그러므로 정산 시스템 설계를 보다 철저하게 진행하여, 모든 구성원이 신뢰할 수 있는 결과를 얻는 것이 필수적입니다. 신뢰성을 확보하는 설계 원칙 정산 시스템의 신뢰성을 확보하기 위해 MASS는 몇 가지 핵심 설계 원칙을 설정했습니다. 첫 번째로, 정합성과 멱등성 을 강조했습니다. 이는 시스템이 동일한 원천 데이터와 계산 기준을 사용할 경우, 언제 다시 계산하더라도 동일한 결과를 내도록 보장하는 것입니다. 이를 위해 모든 원천 이벤트에 대해 트랜잭션 식별자를 활용하여 중복 수신이나 재처리로 인한 오류를 방지하는 구조를 마련했습니다. 두 번째는 결정적 계산 입니다. 모든 계산 로직은 입력값에만 의존하며, 외부 요인에 의해 영향을 받지 않도록 순수 함수 형식으로 설계되었습니다. 이는 정산 ...

Redis 대역폭 초과 장애와 대응 과정 공유

안녕하세요. 29CM의 Customer Engagement Engineering 팀에서 상품 전시 영역을 책임지고 있는 김송이입니다. 2025년 겨울, 29CM 최대 규모의 블랙프라이데이 행사인 이구위크에서 발생한 Redis 대역폭 초과 장애에 대한 이야기와 그 대응 과정에 대해 공유하고자 합니다. 이 글에서는 장애의 원인 분석, 즉각적인 대응 조치, 그리고 향후 재발 방지를 위한 개선 작업에 대해 자세히 설명하겠습니다. Redis 대역폭 초과 장애: 원인 분석 과정 이구위크가 시작된 첫날, 상품 전시 화면에서 장애가 발생했습니다. 초기에는 검색 결과와 상품 리스팅을 담당하는 서버의 일부 파드가 다운되면서 트래픽을 수용하지 못하게 되었습니다. 남아있는 파드는 처리 가능한 트래픽을 초과했고 결국 Netty 이벤트 루프의 포화 상태를 초래했습니다. 여기서 주목해야 할 점은, Redis의 헬스체크 실패 로그가 나타났다는 것입니다. 시스템 메트릭을 확인한 결과, CPU와 메모리는 정상 범위에 있었지만 Redis와의 통신에 실패한 이유를 찾기 위해 네트워크 지표를 살펴보았습니다. 이 과정에서 Redis 노드 타입이 cache.r7g.large로 설정되어 있었고, 이는 기본 네트워크 대역폭이 0.937Gbps라는 것을 알게 되었습니다. 이는 하루 동안 불규칙적인 트래픽의 증가로 인해 순간적으로 이 대역폭을 초과하게 되는 상황이 발생했습니다. 결과적으로 Redis의 버스트 크레딧이 소진되면서 Throttling이 제대로 작동하게 되었고, 이로 인해 장애가 발생했습니다. 대응 과정: 즉각적인 조치 및 수정 장애가 발생한 후, 신속하게 원인을 파악하고 대응하기 위해 노력했습니다. 장애가 발생한 시간인 20:58에 크레딧이 고갈되면서 발생한 Throttling으로 인해 Redis 연결과 명령 처리에 큰 지연이 발생하였습니다. 이 시점에서 획기적인 조치를 취하기로 결심했으며, Redis 노드를 스케일업하기로 결정했습니다. 기존의 cache.r7g.larg...

QA 자동화 데이터 관리와 분석의 힘

안녕하세요, 29CM QE팀의 자동화 전문가 강보민입니다. 본 포스트에서는 QA 자동화 결과를 데이터로 관리하는 방법과 그 과정에서 얻은 분석의 힘을 중심으로, Grafana Dashboard와 주간 분석을 통해 어떻게 자동화의 신뢰성을 높였는지에 대한 이야기를 나누고자 합니다. 이 글을 통해 데이터 기반의 QA 자동화 관리의 중요성과 실제 적용 사례를 살펴보겠습니다. QA 자동화 데이터 관리의 필요성 QA 자동화는 현대 소프트웨어 개발에서 필수적인 요소로 자리잡았습니다. 자동화 테스트를 통해 반복적인 작업을 줄이고, 코드 변경에 대한 신뢰성을 확보할 수 있습니다. 그러나 이 과정에서 단순히 자동화 도구를 사용하는 것을 넘어, 데이터를 체계적으로 관리하는 것이 무엇보다 중요합니다. 정확한 데이터 관리가 뒷받침되지 않으면, 자동화 테스트의 신뢰성과 품질은 언제든지 흔들릴 수 있습니다. 29CM QE팀은 2024년부터 자동화 수행 결과를 데이터베이스(DB)에 저장하기 시작했으며, 이를 통해 Grafana Dashboard에서 다양한 데이터를 시각화하고 있습니다. 데이터에는 일별 Fail률, 평균 수행 시간, Fail 발생 시나리오 카운트 등이 포함되어 있으며, 이를 통해 실시간으로 자동화 테스트의 성과를 평가하고 분석할 수 있습니다. 더 나아가, QA 자동화 데이터 관리의 일환으로 주간 분석을 통해 성과를 지속적으로 점검하고 있습니다. 이러한 방식은 팀의 신뢰성을 높이는 데 큰 도움이 되었으며, 팀원들이 각자의 역할에 책임감을 느끼게 만들었습니다. 데이터 분석을 통한 실패 사례 개선 데이터 분석도 QA 자동화의 핵심입니다. 29CM QE팀은 Grafana Dashboard를 이용해 실패 시나리오를 분석하고, 반복되는 문제를 해결하는 데 집중하고 있습니다. 예를 들어, 특정 시나리오에서 Fail률이 급증할 경우 그 원인을 분석하고, 개선을 위한 우선순위를 정할 수 있습니다. 세부적으로, 반복적으로 발생하는 Fail 사례를 식별하기 위해 월별...

무신사 POS 시스템 내재화 성공 사례

무신사는 최근 오프라인 매장을 위한 POS 시스템을 전면 내재화하는 성공적인 여정을 거쳤습니다. 이 과정에서 기존 외부 솔루션의 의존성을 제거하고, 자체적으로 개발한 MPOS(Musinsa POS) 시스템을 도입하였습니다. 본 포스팅에서는 무신사 POS 내재화 과정을 통해 얻게 된 교훈과 앞으로의 개선 방향에 대해 자세히 살펴보겠습니다. 1. POS 시스템 내재화의 필요성 무신사는 이전에 외부 3rd party POS 솔루션에 의존하였습니다. 초기에는 해당 솔루션이 매장 운영에 큰 도움이 되었지만, 시간이 지남에 따라 온라인과의 통합 및 비즈니스 요구에 빠르게 대응하기 어려운 상황에 직면했습니다. 이로 인해 운영의 유연성이 떨어지고, 외부 업체와의 협의 과정에서 개발 지연이 발생하는 문제가 생겼습니다. 이에 따라 무신사는 POS 시스템을 전면 내재화하기로 결정했습니다. 내부적으로 모든 기능을 직접 개발함으로써 비즈니스의 빠른 성장을 지원하고, 외부 의존성을 완전히 제거하기 위한 발판을 마련하게 되었습니다. 이러한 결정은 단순히 기술적인 자부심을 뛰어넘어, 운영 비용 절감 및 개발 효율성을 높이는 데 큰 기여를 하게 됩니다. MPOS 내재화는 무신사가 지닌 기술력과 문제 해결 능력을 극대화하는 방향으로 나아가게 해주었습니다. 내부 시스템으로의 전환이 이루어진 후, 무신사는 매우 긍정적인 변화를 경험했습니다. 모든 시스템이 통합적으로 관리됨으로써 개발자들은 직접적인 문제 해결을 통해 더욱 신속하고 효율적으로 운영할 수 있게 되었고, 그 결과 대처 속도와 커뮤니케이션의 질이 눈에 띄게 향상되었습니다. 이제는 외부 업체와의 협상이 필요 없는 환경에서 독립적인 운영 리듬을 구축하게 되었습니다. 2. Electron 선택과 그 이유 MPOS 시스템의 성공적인 내재화에 있어 핵심적인 역할을 한 것은 바로 Electron이라는 기술 스택입니다. 무신사 팀은 POS 시스템의 다양한 요구사항을 충족하고, 개발 속도를 높일 수 있는 기술을 찾고 있었습니다. 그 결...