# 원글 요약
- 쿠폰에 대해 “주문 상품에 사용할 수 없는 쿠폰입니다"라는 보고가 들어옴.
- 사용할 수 없는 쿠폰을 사용 시도한 경우로 사용자 UI 상에서는 이뤄질 수 없는 시스템 오류 혹은 공격의 가능성이 있는 현상이기 때문에 분석 진행
- zipkin을 통해 사용자 정보와 쿠폰 정보 확인
- kibana를 통해 API 로그 조회
- 주문서 단계에서 쿠폰은 사용 가능이었지만 결제 단계에서는 사용 불가능했음.
원인은 주문서 단계에서 쿠폰의 사용조건이 충족되었으나 결제 단계로 넘어갈 때 상품 할인에 변동이 있었기에 사용 조건이 충족되지 못하게 되었던 것이다.
이는 쿠폰 사용이 되지 않도록 어플리케이션에서 잘 방어한 것을 검증 할 수 있는 케이스였고, 불편한 사용자 경험에 대해 컬리는 다음과 같이 멘션을 남겼다.
할인가의 변화 혹은 증정 프로모션의 종료로 인해서 사용자가 장바구니에 담았을 당시와 결제시에 정보차이로 생기는 문제가 종종있어서 개선 계획에 있습니다. 😀
# Zipkin
Zipkin은 분산 시스템에서 발생하는 문제를 해결하고, 시스템 내에서의 요청 흐름을 추적하는 데 사용되는 오픈 소스 분산 추적 시스템이다. 주로 마이크로서비스 아키텍처1와 같이 여러 서비스 간 통신이 발생하는 환경에서 사용된다.
Zipkin은 각각의 서비스에서 발생하는 요청을 추적하기 위해 서비스 간에 고유한 식별자를 사용한다. 각 요청은 이 식별자를 통해 추적되며, 요청이 서비스 간을 이동할 때마다 해당 요청에 대한 정보가 업데이트된다.
Zipkin을 사용하면 다음과 같은 장점을 얻을 수 있다.
- 문제 해결 및 디버깅 : 시스템에서 발생하는 문제를 식별하고 디버깅하는 데 도움이 된다.
- 성능 분석 : 각 서비스 간의 요청 및 응답 시간을 추적하여 성능 향상을 위한 지표를 제공한다.
- 서비스 의존성 시각화 : 서비스 간의 의존성을 시각화하여 시스템 아키텍처를 이해하고 변경사항을 관리하는 데 도움이 된다.
종합하면, Zipkin은 분산 시스템에서의 추적과 모니터링을 통해 시스템의 가시성을 높이고, 문제를 해결하고 성능을 향상시키는 데 도움이 되는 유용한 도구이다.
# Kibana
Kibana는 Elastic Stack2의 한 부분으로, 대규모 데이터 집합을 시각화하고 분석하는 데 사용되는 오픈 소스 데이터 시각화 도구이다. 주로 대용량 로그 파일, 지표 및 기타 유형의 데이터를 탐색하고 이해하는 데 사용된다.
# 주요기능
- 대시보드 작성 : 사용자는 다양한 시각화 요소를 조합하여 사용자 정의 대시보드를 만들 수 있다. 이를 통해 데이터의 시각적인 요약과 인사이트를 얻을 수 있다.
- 시각화 : Kibana는 다양한 종류의 차트와 그래프를 생성할 수 있다. 선 그래프, 막대 차트, 파이 차트, 지리적 지도 등 다양한 형태의 시각화를 제공한다.
- 데이터 탐색 및 검색 : Elasticsearch3의 강력한 검색 기능과 연동되어, 사용자는 데이터를 쉽게 탐색하고 검색할 수 있다.
- 필터링 및 집계 : Kibana를 사용하여 데이터를 필터링하고 집계하여 원하는 정보를 추출하고 분석할 수 있다.
- 시계열 분석 : Kibana는 시계열 데이터를 처리하고 분석하는 데 강력한 기능을 제공한다. 이는 로그 데이터 및 시스템 성능 모니터링과 같은 시나리오에 유용하다.
- 사용자 관리 및 권한 부여 : Kibana는 다중 사용자 환경에서 작동하며, 사용자에게 액세스 수준 및 권한을 부여할 수 있다.
Kibana는 로그 분석, 시스템 모니터링, 비즈니스 인텔리전스 등 다양한 용도로 사용된다. 그 유연성과 사용자 친화적인 인터페이스는 데이터 분석 및 시각화 작업을 쉽게 수행할 수 있도록 지원한다.
# 마치며
Kurly에서는 오류, 또는 문제 분석에 있어 Zipkin을 사용해 요청에 대해 필요한 정보를 찾아내고(사용자 정보, 쿠폰 정보) 이를 통해 Kibana에서 API 호출에 대한 로그를 조회하여 분석한다는 것을 알 수 있었다.