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 시스템의 다양한 요구사항을 충족하고, 개발 속도를 높일 수 있는 기술을 찾고 있었습니다. 그 결...

AI 인프라 구축과 지속 가능성 탐구

우리는 달에 가기로 했습니다. 무신사가 AI 인프라를 구축하고, 하이브리드 환경에서의 혁신을 통해 지속 가능성을 탐구한 여정을 담은 글입니다. AI 기술이 단순한 트렌드가 아닌 생존의 조건이 되는 시대에, 어떤 기술을 선택해야 할지, 그리고 그 과정에서 어떤 질문을 던져야 할지를 고민합니다. AI 인프라 구축의 필요성 이해하기 AI 인프라 구축은 단순히 기술을 도입하는 과정이 아닙니다. 이는 지속 가능한 운영 모델을 만드는 것이며, 비용 효율성을 극대화하는데 필수적입니다. 무신사는 AI 인프라를 구축하면서 “우리는 지금 올바른 결정을 하고 있는가?”라는 질문을 지속적으로 던졌습니다. 이렇게 질문을 통해 각 기술의 선택이 필요해진 이유를 고민하면서, 진정한 의미의 AI 인프라를 구현하고자 했습니다. AI 인프라 구축 과정에서 가장 중요한 것은 기술의 선택보다 그 선택이 이루어진 배경입니다. 예를 들어, 특정 GPU를 선정하는 과정에서 예산, 전력 소모, 배치 용이성 등을 고려해야 했습니다. 초기 설치는 RTX 4090에서 시작해 H100, H200, 그리고 블랙웰 기반 장비로 발전했습니다. 이 모든 과정에서 지속 가능한 AI 인프라를 구축하기 위한 전략과 실행이 필요했습니다. 또한, AI 인프라의 최적화를 위해 클라우드와 온프레미스 환경의 하이브리드 구조를 설계했습니다. 이는 비용 절감과 성능 향상을 동시에 이루기 위한 전략이었습니다. 예를 들어, AWS의 EKS HybridNode 기능 도입은 이러한 하이브리드 환경을 구축하는 데 큰 도움이 되었습니다. 지속 가능성을 고려한 운영 방안 AI 인프라에서 지속 가능성은 비용 관리를 넘어 모든 운영의 핵심이 됩니다. AI는 구축 후에도 지속적인 비용이 발생하는 시스템이기 때문입니다. 무신사는 AI 운영비를 효과적으로 관리하기 위해 온프레미스를 도입하였고, GPU 운영을 통해 안정적인 비용 절감을 이루었습니다. 이와 같은 접근법은 갈수록 증가하는 트래픽과 추세에 대응하기 위해 필수적이었습니다. ...

하나의 ID로 통합된 회원 시스템 구축 이야기

팀 무신사는 통합 회원 시스템을 성공적으로 런칭하며 고객 경험의 혁신을 이루어냈습니다. 고객은 이제 무신사, 29CM, 솔드아웃 플랫폼에서 하나의 ID로 간편하게 로그인하고 필요한 서비스를 이용할 수 있게 되었습니다. 이를 통해 팀 무신사는 회원 데이터의 통합 관리와 사용자 맞춤화를 실현하며, 고객에게 더욱 향상된 쇼핑 경험을 제공합니다. 무중단 전환: 고객 경험의 최우선 기준 새로운 통합 회원 시스템의 가장 큰 도전 과제 중 하나는 무중단 전환이었습니다. 수천만 명이 사용할 이커머스 시스템의 ‘심장’인 회원 시스템을 교체하면서도, 고객은 이 과정을 전혀 느끼지 못해야 했습니다. 이는 ‘엔진이 켜진 비행기의 엔진을 교체하는’ 것과 같은 복잡하고 리스크가 큰 과제였습니다. 고객이 언제 어디서든 로그인할 수 있는 환경을 보장하기 위해, 무신사는 24시간 운영되는 회원 시스템을 구축했습니다. 이 과정에서 멤버 시스템은 단순히 비즈니스 로직을 처리하지 않습니다. 실제로 주문, 혜택, 반품과 같은 이커머스의 핵심 구성 요소들과 깊이 연결되어 있습니다. 시스템 간의 데이터 불일치나 지연은 즉각적으로 큰 장애로 이어질 수 있으므로, 모든 요소가 쉽게 통합될 수 있도록 하는 아키텍처 설계가 필요했습니다. 이러한 복잡성을 극복하기 위해 팀 무신사는 ‘Core Member System’이라는 통합 시스템을 도입하여, 높은 확장성과 고가용성을 동시에 확보하게 되었습니다. 결국 통합 회원 시스템의 도입으로 고객은 편리하게 하나의 ID로 다양한 서비스에 접근할 수 있게 되었으며, 팀 무신사는 안정적인 회원 관리 환경을 구축했습니다. 이 모든 과정은 무신사가 고객 경험을 최우선으로 고려하고 있다는 증거입니다. 효율적인 데이터 관리: 통합의 핵심 통합 회원 시스템의 또 다른 중요한 성과는 효율적인 데이터 관리입니다. 기존에는 고객 데이터가 무신사와 29CM, 솔드아웃으로 각각 나뉘어져 있었습니다. 이는 사용자 맞춤형 서비스를 제공하는 데 있어 큰 제...

AI와의 협업으로 완성된 맞춤형 TMS 개발

29CM QE팀이 상용화된 Testcase Management System(TMS)의 비효율성과 높은 비용으로 인해 AI와 협업을 통한 맞춤형 TMS인 29TMS를 개발하게 된 과정을 소개합니다. 이 프로젝트는 3개월 동안 진행되었으며, 완성된 시스템을 통해 다양한 기능을 구현하여 실제 업무에서 활용하고 있습니다. 본 글에서는 이 과정에서의 어려움과 성공적인 구현을 공유하며, AI와의 협업의 중요성을 강조하고자 합니다. AI와의 협업으로 탄생한 TMS의 시작 버그 수정과 지원의 느림은 상용 TMS의 한계로, 우리가 겪어온 가장 큰 문제 중 하나였습니다. 이러한 문제를 해결하기 위해, AI와의 협업을 결심하게 되었습니다. 많은 사람들이 AI 기술에 열광하는 이유를 직접 체험해보고 싶었고, 이를 통해 우리가 필요로 하는 TMS를 직접 만들 수 있을 것이라는 희망이 생겼습니다. 처음에는 React 기술을 선택했으나, 이 분야에서의 경험이 부족한 제가 과연 잘 해낼 수 있을까 하는 걱정이 많이 들었습니다. 하지만 AI의 도움으로 프로그래밍을 시작하게 되었고, 처음에는 쉽고 빠른 결과에 감탄하게 되었습니다. 그러나 진행할수록 AI의 한계를 느끼며, 저 자신이 AI와 소통하는 방법에 대해 많은 것을 배울 수 있었습니다. 이 과정을 통해 AI의 공백을 메우고, 설계와 구현의 디테일을 확실히 이해해야 한다는 점도 깨닫게 되었습니다. 이 단계에서, AI는 다양한 기능 구현에 중요한 역할을 했지만, 항상 올바른 결과를 제공하는 것은 아니었습니다. 대신, 프롬프트를 세밀하게 작성하고, 제 의도를 명확히 전달하는 기술이 필수적임을 깨달았습니다. 그 덕분에 AI와의 협력이 더욱 원활해졌고, 원하는 기능들을 구현한 29TMS가 성공적으로 탄생하게 되었습니다. 문제를 해결하는 29TMS의 유용성 29TMS의 개발 과정이 끝난 후, 우리는 다양한 기능을 추가하여 실무에서 효과적으로 사용하기 시작했습니다. 기존의 상용 TMS보다 훨씬 더 빠르고 효율적으로 API의 응답을...

매크로 코딩으로 시니어 성장의 벽 넘기

궁극적으로 시니어 개발자로서의 성장을 위한 ‘벽’은 매크로 코딩을 통해 극복할 수 있습니다. 이 글에서는 마이크로 코딩을 넘어서 매크로 코딩으로의 관점을 확장하는 것이 왜 중요한지를 살펴보며, 어떻게 시니어 엔지니어로서의 성장에 도움이 되는지 이야기하고자 합니다. 이를 통해 독자들이 매크로 코딩의 중요성을 이해하고 적용하도록 유도하는 것이 목표입니다. 1. 매크로 관점으로 나아가기 시니어 개발자로 성장하기 위해선 매크로 관점을 가지고 문제를 바라보는 것이 매우 중요합니다. 많은 엔지니어들이 자신이 작성한 코드의 품질이나 로직에만 집중하며 성장을 고민합니다. 하지만 매크로 관점에서는 코드가 전체 시스템과 비즈니스에 미치는 영향을 이해하고 고려하는 것이 필수적입니다. 예를 들어, 우리가 개발하는 기능이 특정 비즈니스 KPI에 어떤 기여를 하는지를 생각해볼 필요가 있습니다. 이는 단순히 제대로 작동하는 기능을 만드는 것을 넘어서, 기능이 비즈니스 목표에 부합하는지, 혹은 더 나은 대안은 없는지를 스스로 질문하게 만듭니다. 매크로 관점은 개발자에게 비즈니스 문제를 기술적으로 해결할 수 있는 기회를 제공합니다. 단순히 코드의 세부 사항에만 집중하는 것이 아니라, 팀원이나 이해관계자와의 소통 능력을 향상시키고, 그들의 필요를 이해하여 해결책을 제시하는 능력을 키워주는 것입니다. 결국 이러한 매크로 관점은 시니어 엔지니어로서의 가치를 높이게 되고, 연봉 협상에서도 직접적인 영향을 미치게 됩니다. 매크로 관점의 사고를 통해 조직 내에서의 역할과 영향력을 확대하며, 더 높은 성과를 창출하는 데 기여할 수 있습니다. 이처럼 매크로 관점으로 나아가는 것은 한 단계 더 성장하는 데 필수적입니다. 2. 문제 해결의 흐름을 이해하라 또 다른 중요한 요소는 문제 해결의 흐름을 이해하는 것입니다. 전통적인 방식에 얽매여 ‘어떻게’ 문제를 해결할지를 생각하기보다는 ‘왜’ 이 문제를 해결해야 하는지를 먼저 검토하는 접근이 필요합니다. 매크로 코딩에서는 비즈니스 문제를 해...

QA 리포트 자동화로 업무 효율성 개선하기

```html 29CM QE팀의 정다정입니다. QA 리포트의 자동화를 통해 업무의 효율성을 개선하기 위해 Slack Bot 개발을 시작했습니다. 처음으로 다양한 문제를 극복하고 협업자들이 빠르고 쉽게 QA 진행 상황을 확인할 수 있는 시스템을 구축하게 되었습니다. QA 리포트 자동화를 위한 준비 리포트 자동화를 위한 첫 단계는 팀원들과 함께 리포트의 항목과 형식을 정하는 것이었습니다. 이를 통해 협업자들이 어떤 정보를 가장 빠르게 확인해야 하는지를 미리 고려했습니다. 예를 들어, 리포트에는 테스트 대상, 테스트 진행률, 이슈 개수, 특이사항 등을 포함해야 합니다. 이 과정에서 각 항목의 순서와 표현 방식을 논의하여 협업자들이 쉽게 이해할 수 있도록 구성하였습니다. 결정된 내용을 바탕으로 UI 템플릿을 설계하고, Bot이 어떤 값을 받아서 어떻게 가공해 보여줄지를 함께 구상했습니다. 이 단계에서는 대화형 UI와 직관적인 디자인을 중시하여 사용자 경험을 향상시키기 위한 노력을 기울였습니다. 각 항목이 정확하고 일관되게 나타날 수 있도록 필요한 정보를 신중하게 선택했습니다. 이를 통해, 테스터와 QA 담당자가 필요한 정보를 최소한의 시간으로 효율적으로 전달할 수 있도록 하는 것이 저희의 목표였습니다. 이처럼 철저한 준비 단계를 거치며, QA 리포트의 자동화를 위해 Slack Bot의 개발 방향성을 명확히 할 수 있었습니다. 이는 이후 구현 단계에서 겪게 될 다양한 문제를 미리 예측하고 준비하는 데 도움을 주었습니다. 팀원 간 원활한 소통과 협업을 바탕으로 QA 리포트 자동화의 기반을 다지게 되었습니다. Slack Bot 개발 과정에서의 문제 해결 Slack Bot을 개발하기로 한 이후에도 여러 가지 문제들이 발생했습니다. 특히, Jira API 호출에서 느린 속도와 타임아웃 문제가 있었습니다. 이전에는 동기 방식으로 API를 호출했기 때문에, 사용자의 요청에 대한 응답이 지연될 경우 Slack과의 연결이 끊어지는 상황이 종종 발생하였습니다. 이를 ...

무신사머니 결제 시스템 연동의 안정성 및 혁신

```html 29CM Purchase & Post Purchase 팀이 무신사머니 결제 시스템 연동을 통해 고객의 결제 경험을 혁신적으로 개선할 예정입니다. 무신사머니는 선불결제 방식으로, 이를 통해 결제 전환율을 높이고 고객 유치를 극대화할 수 있습니다. 본 글에서는 무신사머니 결제 시스템의 안정성과 혁신에 대해 자세히 살펴보겠습니다. 안정성을 기반으로 한 무신사머니 결제 시스템 무신사머니 결제 시스템의 구조는 여러 요소를 고려하여 설계되었습니다. 고객이 주문서를 작성할 때 필요한 정보는 여러 데이터 소스에서 수집되며, 이를 통해 무신사머니의 가입 여부, 잔액, 첫 결제 여부 등의 정보를 제공합니다. 이러한 정보를 통해 고객은 무신사머니를 hassle-free하게 사용할 수 있게 되며, 우리는 장애 발생 시에도 안정적인 결제 경험을 보장하기 위해 점진적 기능 저하(Graceful Degradation) 를 채택했습니다. 이 체계적인 접근을 통해 결제 과정에서 필수 정보가 누락되더라도 주문 처리가 가능하도록 기능을 최적화했습니다. 또한 비즈니스 연속성을 높이기 위해 필수 정보와 선택 정보를 구분하여, 필수 정보가 누락될 경우 무신사머니 결제수단 자체를 비활성화하고, 선택 정보는 최대한 지원하는 형태로 시스템을 운영합니다. 결과적으로 필요한 데이터가 완비되지 않더라도 고객의 결제가 안정적으로 진행되고, 사용자 경험이 향상되는 효과를 얻었습니다. 이런 안정성 확보는 문제 해결을 용이하게 만들어 줍니다. 예를 들어, 필요한 정보가 조회되지 않을 경우에도 적절한 폴백 전략을 통해 사용자가 헷갈리는 일이 없도록 다양한 UI 정책을 마련했습니다. 이러한 안정성이 결제 시스템의 성공에 있어 핵심 요소로 작용하고 있으며, 고객의 신뢰를 얻는 데 큰 주효하고 있습니다. 혁신적 개선으로 고객 경험 향상 무신사머니 결제 시스템의 도입은 단순히 결제 수단을 늘리는 데 그치지 않습니다. 우리는 고객을 유치하고 리텐션을 높이기 위한 전략적 기능을 통합하...

AI와 사람의 협업을 위한 VLMOps 어드민 구축기

AI 기술이 급속도로 발전하면서 다양한 산업 분야에 자동화가 도입되고 있습니다. 특히 무신사에서는 AI를 활용해 상품 데이터를 효율적으로 분류하고 속성을 추출하여 서비스 품질을 높이고자 노력하고 있습니다. 이 글에서는 Human-in-the-loop 방식으로 기능을 향상시키기 위해 구축한 VLMOps 어드민에 대해 자세히 소개합니다. AI와 사람의 협업으로 강화된 모델 관리 무신사의 VLMOps 어드민은 AI와 사람의 협업을 한층 더 강화하기 위한 필수 시스템으로 자리매김하고 있습니다. 이 어드민은 모델 및 프롬프트 관리 과정을 웹 UI 형태로 제공하여, 데이터 오퍼레이션팀이 엔지니어와의 특별한 커뮤니케이션 없이도 최적의 실험을 진행할 수 있도록 합니다. 이렇게 축적된 의료 데이터를 통해 AI 추론의 결과를 개선하는 과정이 자동화되어 업무 효율성과 데이터 품질이 현저히 향상되었습니다. 특히, VLMOps 어드민은 OpenAI와 Google 등 외부 API와도 원활하게 연동되어 다양한 실험이 가능하다는 장점이 있습니다. 이를 통해 데이터 오퍼레이션팀은 엔지니어의 도움 없이도 원하는 프롬프트와 모델을 자유롭게 선택하여 실험할 수 있습니다. 결과적으로, 반복적인 요청과 대기 시간 없이 빠르게 모델 실험을 수행하고, 데이터 품질을 지속적으로 개선할 수 있는 환경이 조성되었습니다. 이러한 변화는 무신사가 AI 기반의 데이터 자동화와 품질 관리에 대한 새로운 접근 방식을 도입하도록 만들어 주었으며, 결과적으로 더 나은 고객 경험을 제공하기 위한 중요한 발판이 되고 있습니다. 신속하게 이루어지는 모델 추론과 검증 VLMOps 어드민은 모델 추론 과정에서도 AI와 사람의 협업을 극대화할 수 있는 기능을 표현합니다. 자동 생성되는 초안 라벨을 통해 데이터 오퍼레이션팀은 더욱 신속하게 결과를 분석하고 검증할 수 있습니다. 이렇게 생성된 추론 결과는 여러 번의 클릭만으로 즉시 처리되며, 다양한 조합의 모델과 프롬프트를 비교할 수 있는 체계가 마련되어 있습니다. 이러한 ...

테스트 자동화 환경 개선과 Master Jenkins 구축

```html 29CM QA팀은 테스트 자동화 환경을 효과적으로 개선하기 위해 여러 가지 구조적 변화를 시도했습니다. 그 결과, Master Jenkins를 통해 모든 자동화 작업을 중앙에서 관리할 수 있는 환경을 구축하게 되었습니다. 이번 포스트에서는 이러한 개선 과정과 성공적인 통합을 이룬 비결에 대해 자세히 살펴보겠습니다. 테스트 자동화 환경 개선을 위한 구조적 변화 29CM QA팀은 초기 테스트 자동화 환경을 설정할 때 Mac Mini 한 대를 사용하여 iOS 및 Android 기기에서 자동화를 시작했습니다. 그러나 자동화 시나리오의 증가와 함께 전체 테스트 시간이 길어지는 문제를 겪으면서, 팀 내에서 정해진 20분 이내의 테스트 완료 기준을 맞추기 위한 환경 개선이 절실해졌습니다. 이러한 배경 속에서 QA팀은 여러 가지 대응책을 마련하게 되었는데, 그 중 첫 번째로 기기를 두 대씩 병렬로 연결하여 수행시간을 최적화하는 구조로 변경했습니다. 또한, 개인정보 유출 문제를 해결하기 위해 테스트용 API 서버를 구축하고, 이를 통해 API 요청으로 계정을 안전하게 관리할 수 있는 환경을 마련했습니다. 원격 근무가 잦아진 상황에서는 STF(Smartphone Test Farm)를 활용해 테스트 기기를 원격에서 조작할 수 있도록 하였으며, 마지막으로 Postgresql과 Grafana를 통한 데이터베이스화 및 대시보드를 구축하여 테스트 결과를 시각화하고 추적할 수 있게 되었습니다. 이러한 다각적인 환경 개선 노력으로 QA팀은 보다 빠르고 안전한 테스트 자동화가 가능하게 되었습니다. Master Jenkins 구축을 통한 운영 효율성 향상 자동화 환경 개선에도 불구하고, QA팀은 여전히 Mac Mini와 Mac Studio에서 발생하는 퍼포먼스 저하 문제를 겪고 있었습니다. 이에 따라 새로운 자동화 머신을 도입하기로 결정했으며, Mac Studio를 활용하여 기존 Mac Mini와의 겹치는 환경을 최소화하는 작업을 진행했습니다. 이 과정에...

AI와 테스트 코드 자동화의 혁신적 협업

안녕하세요. 본 포스트에서는 AI와 함께 테스트 코드 작성하는 과정과 그로 인해 이루어진 리팩토링과 PR 자동화 등의 내용을 다룹니다. 무신사의 프론트엔드 개발팀이 AI 코딩 에이전트를 통해 테스트 코드 작성 시간을 단축하고, 개발 안정성을 향상시킨 경험을 공유하고자 합니다. 특히, AI가 실제로 테스트 코드 작성에 얼마나 실질적인 도움을 줄 수 있는지를 살펴보겠습니다. AI와 테스트 코드 작성의 혁신적인 협업 AI의 도입이 개발 과정에서 큰 변화의 바람을 불러일으키고 있습니다. 특히 테스트 코드 작성의 자동화는 개발자들이 겪는 불안감, 즉 무슨 코드가 잘못되어 버그가 발생할까 하는 두려움을 상당히 감소시키고 있습니다. AI는 반복적이고 패턴이 명확한 작업을 신속하게 수행할 수 있는 장점을 가지고 있기 때문에, 복잡한 비즈니스 로직을 처리하면서도 더 높은 품질의 코드를 생성할 수 있습니다. 이러한 AI의 기능을 적극 활용함으로써 우리는 테스트 코드 작성 시간을 대폭 단축시킬 수 있었습니다. 리팩토링과 PR 자동화의 과정에서도 AI는 중요한 역할을 합니다. 기존의 복잡한 코드 구조에서도 AI는 코드의 가독성과 유지보수성을 개선하는 데 크게 기여할 수 있습니다. 이는 AI가 특정한 패턴과 코드 스타일을 학습하고 적용함으로써 일어나는 현상으로, 시간이 지날수록 개발자들이 직접 수행해야 했던 많은 반복적인 작업들을 대신해 줄 수 있는 가능성을 지니고 있습니다. AI의 도움은 또한 코드 리뷰 과정에서도 유용하게 쓰입니다. AI가 작성한 코드에 대한 커밋 메시지를 자동화하거나, 팀 컨벤션에 맞춘 PR 생성도 손쉽게 수행할 수 있습니다. 이로 인해 팀원들은 AI가 작성한 코드의 내용을 더욱 명확히 검토하고, 신속하게 피드백을 제공할 수 있습니다. 따라서 AI는 단순한 도구를 넘어 개발 팀워크의 촉진제 역할을 하고 있습니다. 테스트 자동화와 협업을 통한 코드 품질 향상 테스트 자동화는 단순히 개발자 개인의 생산성을 높이는 데 그치지 않고, 개발 팀 ...

주문서 결제 혜택 UX 개선 사례 공유

29CM에서 진행한 주문서 결제 혜택 UX 개선 프로젝트는 고객의 결제 경험을 대폭 향상시켰습니다. 다양한 결제수단에 따른 혜택을 고객들이 쉽게 이해하고, 실시간으로 할인 금액을 확인할 수 있도록 개선하였습니다. 이번 개선을 통해 구매 전환율과 고객 만족도를 모두 높일 수 있었던 경험을 공유합니다. 주문서 결제수단의 문제점 29CM의 기존 주문서 결제 과정에서는 다양한 결제수단별로 제공되는 혜택을 고객이 제대로 인지하기 어려운 문제가 있었습니다. 고객은 결제수단을 선택할 때마다 혜택을 일일이 체크해야 했고, 최종 결제금액에 할인 혜택이 어떻게 반영되는지 이해하기 힘든 상황이었습니다. 이로 인해 고객은 결제 과정에서 혼란스러워하고, 할인 혜택이 실제로 적용되는지에 대한 의구심을 느끼곤 했습니다. 예를 들어, 고객이 장바구니에 담긴 상품을 결제하려 할 때, 여러 결제수단이 나열되어 있지만, 각 결제수단 아래 혜택 리스트를 일일이 클릭해야만 혜택을 확인할 수 있습니다. 이러한 과정은 고객에게 불필요한 시간을 소모하게 하고, 결국 주문을 포기하게 만들 수 있습니다. 고객이 이탈하게 되는 이유는 명확한 안내 없이 복잡하게 흩어진 정보와 실시간 할인 금액을 명확하게 보여주지 못한 결과였습니다. 이런 문제를 해결하기 위한 우리의 개선 방향은 즉시 할인 기능을 도입하여 고객이 결제 수단을 선택할 때 즉각적으로 할인 혜택을 체감할 수 있도록 하는 것이었습니다. 이를 통해 우리는 고객이 더 쉽게 결제 수단을 선택하고, 불필요한 시간 낭비 없이 최적의 결제 혜택을 이용할 수 있도록 하고자 하였습니다. 즉시 할인 동작 방식 UX 개선의 핵심은 즉시 할인을 고객이 결제 단계에서 바로 적용할 수 있도록 한 것입니다. 즉시 할인은 특정 결제수단을 선택하여 결제하는 즉시 할인이 적용되는 방식입니다. 장바구니에서 결제 과정으로 넘어갈 때, 고객이 선택한 결제수단에 따라 정해진 즉시 할인 금액이 자동으로 반영되어 실제 결제금액에서 차감됩니다. 이러한 시스템은 카드사나 PG사에서 제...

AI 해커톤 무슨사이의 협업과 혁신 경험 공유

무신사 엔지니어링이 주최한 AI 해커톤 무슨사이(MUSNSAI)는 AI와 개발자들이 협업하여 혁신을 이루는 과정이었습니다. 이 행사는 단순한 코딩 대회가 아니라, AI를 팀 동료로 삼아 문화를 실험하며 변화의 골든타임을 포착하고자 했습니다. 여기서는 해커톤의 준비부터 운영 철학, 그리고 프로젝트 사례를 통해 AI와 함께하는 개발의 경험을 나누고자 합니다. AI 해커톤 무슨사이의 혁신적 운영 철학 무신사 엔지니어링의 AI 해커톤 무슨사이는 단순히 코드 작성의 경합이 아닌, "학습을 중심으로 한 경험"을 강조한 혁신적 운영 철학을 지니고 있습니다. 이 행사는 참가자들에게 AI를 경쟁자가 아닌 협력자로 인식하게 만들고, 서로의 강점을 공유하는 플랫폼을 제공하기 위해 설계되었습니다. 이를 통해 모든 팀이 초기 점수에서 동일한 출발선에 서고, 각자의 독창적인 시도와 해결책이 존중받는 환경을 조성했습니다. 참가자들은 팀 내에서 서로 다른 관점을 가진 동료들과 협업하며 의도하지 않은 결과물들의 창출을 가능케 했습니다. 이 과정은 개발자들에게 AI와 함께 코드의 품질을 높여가는 경험을 제공했으며, AI의 역할은 도구에서 팀원으로 변화하는 중요한 계기가 되었습니다. 여기서 중요한 경험 중 하나는 현재 진행 중인 프로젝트들을 바탕으로 AI가 실시간으로 피드백을 제공하고, 이를 통해 더 혁신적인 해결책을 도출하는 것이었습니다. 팀원들은 서로의 언어로 의사소통하며, 다양한 아이디어와 시도를 통해 자유롭게 창의성을 발휘할 수 있었습니다. 예를 들어, 여러 팀이 각기 다른 방식으로 AI를 활용해 결과물을 만들어내는 과정에서 일어난 새로운 협업의 형태는 향후 무신사에서 AI를 활용한 프로젝트 진행 방식에 대한 새로운 통찰을 주었습니다. 이러한 협업을 통해 얻은 정보와 데이터는 팀 내의 지식 공유로 이어져, 결국 AI 중심의 개발 문화 확산에 일조하게 되었습니다. AI 해커톤 무슨사이는 구성원 모두가 실수나 실패를 두려워하지 않고, 서로의 시도를 격励하는 가...

체험단 API 성능 개선을 위한 쿼리 최적화 전략

```html 무신사 커뮤니티개발팀에서 체험단 API의 성능 개선을 위한 쿼리 최적화 전략을 다루고 있습니다. 최근 10초 이상의 페이지 로딩 시간과 타임아웃 문제로 고객 경험에 큰 영향을 미쳤습니다. 이를 해결하기 위해 인덱스 최적화 및 데이터 전송량 감소와 같은 전략을 통해 API 성능을 획기적으로 향상시켰습니다. 커버링 인덱스의 적극적 활용 체험단 API의 성능을 개선하기 위한 첫 번째 전략은 커버링 인덱스를 활용한 쿼리 최적화입니다. 이전 쿼리는 기능적으로 복잡하고 다수의 컬럼을 조회하는 구조로, 데이터 전송량이 상당히 많아 성능 병목 현상을 초래하였습니다. 이를 해결하기 위해, 커버링 인덱스를 설계하여 필요한 모든 컬럼을 포함하도록 변경했습니다. 커버링 인덱스를 통해 사용자는 인덱스만으로 쿼리를 완전히 처리할 수 있게 되었고, 이로 인해 테이블 접근이 필요 없어졌습니다. 쿼리에서 필요한 데이터가 인덱스에 포함됨으로써 레코드 찾기가 빨라졌고, 결과적으로 조회 속도가 현격히 개선되었습니다. 이 과정에서 데이터 전송량도 줄어들어 네트워크 병목을 해결하는데 큰 도움이 됐습니다. 또한, 커버링 인덱스의 활용은 디스크 I/O를 최소화하고, 순차적 읽기를 통해 쿼리 성능 향상에 기여했습니다. 쿼리 분리 전략의 도입 두 번째로 적용한 전략은 쿼리 분리 전략입니다. 체험단 API가 제공해야 하는 데이터의 양을 줄이기 위해, 쿼리를 단계별로 나누어 필요한 정보를 순차적으로 조회하는 방식을 도입했습니다. 처음에는 정렬된 신청번호만을 조회하여 커버링 인덱스를 완벽히 활용한 후, 추가 데이터를 필요할 때만 이후 단계에서 조회하도록 하였습니다. 이러한 전략은 데이터베이스의 부담을 줄이고, 쿼리의 복잡성을 상당히 감소시켰습니다. 또한, 애플리케이션에서는 각 테이블을 독립적으로 최적화하여 성능을 극대화할 수 있는 유연성을 제공했습니다. 쿼리의 분할과 데이터 결합을 통해 운영 효율성을 증가시킬 수 있었고, 복잡한 LEFT JOIN 로직을 단순한 SELECT로 대체함으...

AI 기반 문의 자동화 구축 사례와 성과

이미지
1. AI 기반 문의 자동화의 필요성 인식 무신사는 내부 커뮤니케이션 채널 ‘문의-무물보’를 통해 매일 수백 건의 질문을 처리해야 했습니다. 그러나 약 1,400명 이상이 참여한 이 채널은 반복적이고 유사한 문의가 끊임없이 쏟아졌고, 담당자들은 동일한 질문에 수동으로 답변하느라 시간을 낭비하고 있었습니다. 이로 인해 개발자와 기획자 모두 핵심 업무에 집중하기 어려운 상황이 지속되었습니다. 특히 Confluence에 이미 정리된 문서가 있음에도 불구하고, 직원들이 해당 정보를 직접 검색해 찾아내는 과정이 비효율적으로 이루어졌습니다. 결국 무신사는 ‘AI가 대신 문서를 찾아 답변해주는 시스템’을 구상하게 되었습니다. AI를 통한 실시간 응답 자동화는 단순한 편의 기능을 넘어, 조직 전체의 생산성을 높이는 혁신의 출발점이 되었습니다. AI 도입의 배경에는 “사람이 아니라 시스템이 문제를 해결해야 한다”는 무신사 개발 조직의 철학이 자리하고 있습니다. AI가 반복적인 질문 응답을 처리하고, 직원들은 보다 창의적이고 전략적인 업무에 집중하도록 하는 구조로 변화한 것입니다. 2. AI 기술을 활용한 문의 자동화 프로세스 촤비스 시스템은 AWS Bedrock과 Spring AI를 기반으로 구축되었습니다. AWS Bedrock은 보안성과 안정성이 뛰어난 AI 플랫폼으로, 무신사의 내부 데이터를 외부에 노출하지 않고도 고품질의 질의응답(QA)을 수행할 수 있도록 지원합니다. 이 AI 모델은 내부 문서를 학습하여 Slack 내에서 자연스러운 대화로 답변을 제공할 수 있습니다. Spring AI는 AI가 활용할 수 있는 도구와 실행 흐름을 자동으로 정의하여 Slack에서 발생한 문의를 분석하고, 관련 정보를 Confluence 문서에서 추출하여 답변합니다. 즉, 질문자가 “배송 정책이 바뀌었나요?”라고 입력하면, AI가 관련 문서를 탐색하고 정책 변경 내역을 바로 안내하는 구조입니다...

서비스의 건강을 수치화하기: SLI와 SLO의 실질적 활용

이미지
1. SLI 이해하기 SLI(Service Level Indicator)는 서비스의 품질과 안정성을 수치로 표현하는 지표입니다. 이는 사용자가 서비스를 이용할 때 체감하는 품질을 객관적으로 측정하는 역할을 합니다. 일반적으로 지연 시간(latency), 가용성(availability), 처리량(throughput) 등이 대표적인 예시입니다. 예를 들어, 하루 동안 처리된 API 요청 중 99.95%가 성공적으로 완료되었다면, 해당 서비스의 SLI는 99.95%로 표현됩니다. 이 수치는 단순한 데이터가 아닌, 서비스가 사용자에게 얼마나 안정적으로 제공되는지를 의미합니다. SLI를 설정하는 과정은 단순히 숫자를 정하는 일이 아닙니다. 서비스의 특성과 구조를 면밀히 분석해야 합니다. 예를 들어, 전자상거래 서비스에서는 결제 성공률, 배송 API 응답 속도, 상품 등록 지연률 등이 각각의 SLI가 될 수 있습니다. 반면, 콘텐츠 스트리밍 플랫폼에서는 버퍼링 시간과 평균 시청 지속 시간이 핵심 지표가 됩니다. 이처럼 서비스의 본질을 반영한 지표 설정이 이루어져야 운영팀이 정확한 상태를 파악하고 신뢰성 있는 결정을 내릴 수 있습니다. SLI의 가장 큰 장점은 “감(感)에 의존하지 않는 운영”입니다. 문제가 생겼을 때 단순히 “느려졌다”는 인식에 그치지 않고, “평균 응답 시간이 100ms를 초과했다”라는 구체적인 수치로 상황을 파악할 수 있습니다. 이는 개발자와 운영자가 동일한 기준으로 소통할 수 있게 하며, 결국 서비스 품질 개선의 출발점이 됩니다. 2. SLO 설정하기 SLO(Service Level Objective)는 SLI로 측정한 결과에 대해 어느 수준까지 품질을 유지해야 하는지를 명확히 정하는 내부 목표입니다. SLO는 단순한 숫자가 아니라, 서비스가 ‘얼마나 자주, 얼마나 안정적으로’ 사용자의 기대를 충족할 수 있는지를 결정하는 기준입니다. 예를 들어 “90% 이상의 ...

AI 기반 스냅 이미지 상품 검색 기술 여정

이미지
1. 이미지 기반 패션 탐색의 시작 무신사 광고 인플루언서팀은 단순한 쇼핑 플랫폼이 아닌, ‘스타일 검색 엔진’으로의 전환을 시도하고 있습니다. 최근 6주간 개발된 AI 이미지 검색 기능은 사용자가 업로드한 스냅 이미지에서 패션 아이템을 자동으로 탐지하고 가장 유사한 상품을 추천하는 역할을 합니다. 과거에는 사용자가 보고 싶은 스타일을 찾기 위해 수많은 검색어를 조합해야 했지만, 이제 이미지만 올리면 AI가 알아서 분석하고 결과를 제시합니다. 개인적으로 이러한 변화는 “패션의 언어가 시각으로 이동하고 있다”는 의미로 해석됩니다. 사용자가 단어 대신 이미지를 사용해 스타일을 찾는다는 것은, 쇼핑이 감각적 경험으로 진화하고 있다는 신호입니다. AI는 사람의 언어보다 이미지를 더 빠르고 정확히 이해하는 시대에 우리는 들어서고 있습니다. 2. AI 기반 상품 탐지의 구조 AI 시스템은 크게 세 단계로 작동합니다. 첫째, YOLOS 모델이 업로드된 스냅 이미지에서 의류나 악세서리 등 패션 아이템의 위치를 탐지합니다. 복잡한 배경이나 다양한 포즈 속에서도 정확하게 Bounding Box로 구분된 개별 아이템 이미지를 생성합니다. 둘째, FashionCLIP 모델이 각 아이템을 고차원 벡터로 변환하여 색상, 질감, 형태 등의 특징을 수치화합니다. 이 벡터는 ‘시각적 DNA’와 같으며, 상품 간 유사성을 계산하는 데 핵심 역할을 합니다. 마지막으로, 변환된 벡터가 AWS OpenSearch의 대규모 벡터 데이터베이스에 저장되어 수백만 개의 패션 아이템과 비교됩니다. AI는 코사인 유사도를 기준으로 가장 비슷한 상품을 찾아 사용자에게 추천합니다. 이 과정을 통해 사용자는 “이 옷 어디서 샀지?”라는 궁금증을 단 몇 초 만에 해결할 수 있게 되었습니다. 3. 자연어 검색과 패션 감성의 결합 이미지 기반 탐색만큼 주목할 부분은 자연어 검색 기능의 도입입...

CS 업무 자동화로 처리 시간 단축 사례

이미지
1. 반복 업무의 벽을 넘다 29CM 세일프라이싱팀은 고객 가격 요청과 내부 티켓을 처리하는 과정에서 하루 평균 수십 건의 반복 업무를 수행하고 있었습니다. CS 티켓이 Jira에 등록되고, 개발자가 관련 API를 확인해 직접 처리하는 구조는 단순하지만 비효율적이었습니다. 평균 30분 이상 걸리는 요청이 쌓이면서, 개발자들은 창의적인 개발보다 ‘문제 해결’에만 시간을 소비해야 했습니다. 이 문제의 본질은 단순한 업무 과중이 아니라, **정보의 분산과 의사결정의 지연**이었습니다. 필자는 이런 환경을 “자동화가 늦은 조직의 공통된 피로감”이라 표현합니다. AI 도입은 선택이 아니라 필연이 되었고, LangChain을 중심으로 한 AI Bot 프로젝트가 시작되었습니다. 2. LangChain 기반 AI Bot의 구조와 작동 방식 AI Bot은 슬랙을 통해 자연어로 요청을 수신하고, 내부 문서와 API 정보를 LangChain을 통해 탐색합니다. 사용자가 “상품 정보 이관 요청합니다”라고 입력하면, AI Bot은 관련 API 문서와 처리 절차를 검색하고 요청 내용이 실제로 실행 가능한지 판단합니다. 그 후 자동으로 “이 요청을 승인하시겠습니까?”라는 확인 절차를 거쳐 사용자 승인을 받은 뒤 API를 호출합니다. 이 단순하지만 강력한 프로세스를 통해 CS 요청 처리 시간은 평균 29분에서 단 2.9분으로 단축되었습니다. 개발자의 반복적인 개입은 ‘0’으로 줄었고, 그 결과 팀의 전체 생산성이 획기적으로 향상되었습니다. 이러한 변화는 “AI가 사람의 일을 빼앗는다”는 인식과 달리, **AI가 사람의 집중력을 되돌려준 사례**라 할 수 있습니다. 3. 전통적인 CS 프로세스의 한계를 넘어 기존 CS 프로세스에서는 Jira 티켓 생성 → 담당자 확인 → API 호출 → 결과 보고의 복잡한 단계를 거쳐야 했습니다. 이 과정은 누락과 오류가 빈번하게 발생하고, 요청자가 응답을 받기...

AGI 탐구와 멀티모달 생성 AI의 미래

이미지
AGI 탐구의 현재와 미래 AGI(Artificial General Intelligence)는 인간과 유사한 수준의 사고, 추론, 학습 능력을 가진 인공지능을 의미합니다. 오늘날의 AI가 특정 과업에만 특화된 ‘좁은 인공지능’이라면, AGI는 다방면에서 스스로 사고하고 적응하는 ‘넓은 지능’을 지향합니다. 저는 AGI의 탐구가 단순한 기술 경쟁이 아니라 “인간 지능의 본질을 재해석하는 과정”이라고 생각합니다. 현재의 AI는 주로 언어 모델, 시각 인식, 음성 인식 등 개별 분야에서 우수한 성능을 보이고 있지만, 서로 다른 영역 간의 지식을 연결하는 능력은 여전히 미흡합니다. 예를 들어, 인간은 새로운 상황에서도 직관적으로 판단하고, 과거의 경험을 전이 학습하여 행동을 조정합니다. 그러나 AI는 여전히 데이터에 기반한 패턴 인식에 머물러 있습니다. 이런 점에서 AGI는 “지능의 유연성”을 구현하기 위한 최종 도전이라고 할 수 있습니다. 하지만 AGI의 실현에는 기술적 한계와 윤리적 딜레마가 공존합니다. 인간의 감정과 가치 판단을 완벽히 이해하는 것은 불가능에 가깝습니다. 저는 AGI가 인간의 도덕적 책임을 대신할 수 없다고 봅니다. 따라서 AGI 연구의 중심은 ‘전능한 인공지능’이 아니라, ‘인간과 공존 가능한 지능’이어야 합니다. 안전성 확보, 투명한 의사결정 구조, 윤리적 판단 알고리즘은 AGI의 필수 요소입니다. 더불어, AGI가 사회에 미칠 파급력은 상상을 초월합니다. 산업 구조, 노동 시장, 교육, 정치까지 전 분야에 걸쳐 변화를 가져올 것입니다. 저는 기술 발전보다 ‘사회적 수용성’을 확보하는 것이 더 큰 과제라고 생각합니다. 기술이 인간을 대체하는 것이 아니라, 인간의 가능성을 확장하는 방향으로 설계되어야 합니다. 멀티모달 생성 AI의 응용 확장 가능성 ...