RedisConf의 기조 연설을 기억하십니까? 그렇다면, 발표된 소매 애플리케이션(RedisMart)의 막후 개발을 볼 수 있을 것입니다. 그렇지 않은 경우 Yiftach와 Ash가 발표하는 것을 볼 시간입니다. 동영상 링크는 다음과 같습니다.
이 기사는 시리즈의 첫 번째 기사입니다. 제품 카탈로그, 분산 실시간 재고 및 AI 기반 제품 검색을 구현하는 방법을 살펴봄으로써 RedisMart 소매 애플리케이션의 주요 요구 사항 및 아키텍처에 대한 통찰력을 제공합니다. 또한 Redis Enterprise가 이러한 모든 기능을 어떻게 강화하는지 확인할 수 있습니다.
요구사항
소프트웨어 개발에서 흔히 그렇듯이 몇 가지 기본 요구 사항에 대해 논의하는 것으로 시작하겠습니다. 다음은 비공식적으로 언급된 몇 가지 사용자 사례입니다.
- 소매 고객:
- 빠른 을(를) 원합니다 (<100ms 종단 간 지연 시간) 카탈로그 및 제품 세부 정보에 대한 액세스 제품을 찾을 수 있어 다양한 기준(예:전체 텍스트, 가격대, 다른 고객 평가 또는 패싯 검색)을 기반으로 합니다. 응답 시간이 길면 이탈률이 높아집니다.
- 제품의 브랜드 이름을 모르거나 전에 구매한 것과 비슷한 것을 원하면 이미지로 제품을 쇼핑하고 싶습니다. 내가 가지고 있는 것과 거의 일치하거나 시각적으로 비슷한 카메라를 찾는 것이 좋을 것입니다.
- 안전한 배송을 하고 싶습니다. 또는 온라인으로 구매하고 매장이나 길가에서 수령할 수 있습니다(클릭하여 수집).
- 재고 관리자로서:
- 고객에게 탁월한 주문 처리 경험을 제공하려면 재고를 실시간으로 정확하게 확인해야 합니다.
- 재고를 최적화하여 수요가 높은 품목의 재고를 유지하고 느리게 움직이는 품목의 재고를 줄이고 싶습니다.
- 재고를 최적화하기 위해 다양한 매장 및/또는 주문 처리 센터의 재고를 거의 실시간으로 볼 수 있어야 합니다.
아키텍처
이제 요구 사항을 알았으므로 Redis가 우리를 어떻게 도울 수 있는지 생각해 보겠습니다.
- RediSearch는 숫자 필터, 전체 텍스트 검색, 지리 색인, 점수 및 집계를 통해 풍부한 제품 검색을 가능하게 합니다.
- Redis Enterprise의 Active-Active 기능은 즉시 사용 가능한 인벤토리 전반에 걸쳐 지리적으로 복제된 실시간 업데이트를 제공합니다.
- RedisAI, RedisGears 및 RediSearch는 실시간 추론 및 벡터 유사성 검색을 위한 데이터베이스 통합 머신 러닝 파이프라인을 구축하는 데 활용됩니다.
거기에서 다음 디자인을 상상하는 것은 그리 어렵지 않았습니다.
파란색 상자는 서비스를 나타냅니다. 빨간색 상자는 해당 서비스에서 사용하는 데이터베이스를 보여줍니다.
다음과 같은 몇 가지 마이크로서비스 접근 방식을 따랐습니다.
- 서비스당 하나의 데이터 저장소 :각 서비스에는 자체 데이터 저장소가 있으며 다른 서비스의 데이터 저장소에 직접 액세스하지 않고 서비스 인터페이스를 통해 데이터를 교환합니다.
- Polyglot 지속성 :각 서비스는 요구 사항에 따라 가장 적합한 데이터 저장소를 사용합니다. 다중 언어 지속성에 대해 이야기하기:Redis는 모듈에서 제공하는 다양한 기능과 데이터 모델을 결합하여 요구 사항에 맞는 데이터 저장소를 구축할 수 있는 데이터 플랫폼입니다! Redis 및 일부 Redis 모듈을 사용하여 빨간색 상자를 구현한 것은 놀라운 일이 아닙니다.
구현
RedisMart는 웹 상점 웹 애플리케이션에서 제공하는 사용자 인터페이스를 제공합니다. RedisMart에는 프론트엔드 UI(고객 대면 소매 웹사이트)와 백엔드 UI(재고 관리용)가 있습니다. 우리는 배후에서 애플리케이션에 의해 활용되는 많은 서비스를 구현했습니다.
- 구매: 구매 서비스(놀랍게도)는 고객의 구매를 처리합니다.
- 인벤토리: 재고 서비스는 재고 내 재고 수량에 대한 질문에 답변하며 고객이 품목을 구매하면 금액이 감소합니다. 인벤토리 업데이트는 Redis Enterprise의 Active-Active 기능을 활용하여 거의 실시간으로 다른 위치의 인벤토리에 복제됩니다. Redis Enterprise는 동시 업데이트를 처리하기 위해 충돌 없는 복제 데이터 유형을 활용합니다. 이 경우 재설정 가능한 양의 음수 카운터 데이터 유형이 카운터 손실을 방지하는 데 사용됩니다.
- 제품 카탈로그 :상품 카탈로그 서비스는 상품과 관련된 정보를 제공하고 상품을 찾는 정교한 방법을 제공합니다. RediSearch + RedisJSON 모듈이 배포된 Redis 데이터베이스를 사용합니다. RedisJSON을 사용하면 제품 세부 정보를 JSON 문서로 직접 저장할 수 있습니다. RediSearch는 JSON 문서를 인덱싱, 쿼리 및 전체 텍스트 검색할 수 있습니다. Redis Enterprise의 Active-Active 기능을 사용하여 제품 업데이트를 여러 사이트에 쉽게 전파할 수 있습니다.
- 이미지 인식 :마지막으로 이미지 인식 서비스는 이미지에 대한 벡터 유사도 검색을 위한 AI 모델 제공 기능을 제공합니다. RedisGears, RedisAI 및 RediSearch 모듈이 설치된 Redis 데이터베이스를 사용합니다. RedisGears를 사용하면 데이터 파이프라인을 구축하고 데이터가 있는 곳 가까이에서 실행할 수 있습니다. AI 모델 제공 및 추론을 위해 Redis AI를 활용했습니다. RediSearch는 AI 모델의 출력을 기반으로 유사한 이미지에 대한 실제 검색을 수행하는 데 활용됩니다.
앞서 언급했듯이 이것은 시리즈의 첫 번째 기사입니다. 개별 서비스를 구현한 방법에 대해 자세히 알아보세요.
레디스마트
이제 막 뒤를 보았으니 무대에서 애플리케이션이 어떻게 보이는지 봅시다.
홈 페이지에는 주요 제품 카테고리가 표시됩니다. 카테고리를 클릭하면 해당 카테고리에 속하는 처음 16개 제품이 반환되어 제품 카탈로그 서비스를 통해 검색 쿼리가 트리거됩니다.
"제품 검색" 필드를 사용하면 제품에 대한 전체 텍스트 검색을 수행할 수 있습니다. 다음 검색 결과 페이지로 연결됩니다.
검색 결과 페이지에는 패싯 검색과 실제 결과 목록의 두 섹션이 있습니다. 패싯 검색을 사용하여 검색 결과를 추가로 제한할 수 있습니다. 기본 카테고리, 하위 카테고리, 가격 및 등급을 통해 필터링하여 그렇게 할 수 있습니다. 블로그 시리즈의 2부에서 RediSearch를 사용하여 이러한 패싯 검색을 구현하는 방법에 대한 구현 세부 정보에 대해 설명합니다. RedisMart의 디버그 보기를 살펴보도록 하여 힌트를 드리겠습니다.
보시다시피 태그와 집계가 역할을 합니다.
오른쪽 상단 모서리에 있는 작은 카메라 아이콘을 클릭하면 제품 카탈로그에서 찾고자 하는 것을 이미지로 찍을 수 있습니다. Doug의 다음 사진은 데이터베이스에서 다른 Dougs를 찾지 못했습니다...
...하지만 멋진 헤드폰을 찾았습니다.
헤드폰 한 쌍을 결정하고 구매하려고 한다고 가정해 보겠습니다. 선택 후 RedisMart에서 장바구니에 추가할 수 있습니다. 결제 과정에서 가까운 곳에서 배송 또는 수령을 결정할 수 있습니다.
RediSearch의 지역 검색은 이 지역 픽업 기능을 강화합니다. 디버그 보기는 이것이 배후에서 어떻게 실현되는지에 대한 힌트를 다시 제공합니다.
고객이 구매를 완료하는 즉시 재고 품목 수를 줄여 재고 서비스에 참여합니다. 이렇게 하면 인벤토리를 관리할 수 있는 애플리케이션의 백엔드로 직접 이동합니다. RedisMart는 복제된 각 사이트에서 즉각적인 재고 업데이트가 관찰되는 방식을 시각화합니다. 미국(GCP us-central1)에서의 구매는 눈 깜짝할 사이에 유럽(Azure 북유럽)으로 복제됩니다.
다시 한 번, 자세한 내용은 나중에 다루겠습니다. 여기서 요점은 매우 짧은 네트워크 대기 시간으로 가까운 위치에서 데이터에 액세스할 수 있으며 여러 사이트에서 데이터가 동시에 수정될 때 카운터 손실이 방지된다는 것입니다.
다음 동영상을 시청하면 애플리케이션이 작동하는 모습을 볼 수 있습니다.
요약
Redis로 모든 기능을 갖춘 소매 애플리케이션을 구축하는 방법에 대한 블로그 시리즈의 첫 번째 부분을 재미있게 읽으셨기를 바랍니다. 보시다시피 Redis 실시간 데이터 플랫폼을 사용하면 RediSearch + RedisJSON의 문서 데이터베이스 기능을 활용하여 제품 정보에 대한 즉각적인 액세스(100ms 미만의 종단 간 대기 시간)와 같은 요구 사항을 해결할 수 있습니다. RediSearch + RedisGears + RedisAI의 조합은 제품 카탈로그 내에서 유사한 제품을 찾기 위한 AI 기반 이미지 검색을 가능하게 합니다. 또한 패싯 및 지리 검색과 같은 기능이 포함되었습니다. 마지막으로 Redis Enterprise의 Active-Active 기능을 기반으로 지리적으로 복제된 실시간 인벤토리를 쉽게 구축할 수 있음을 보여주었습니다. 이 모든 것을 통해 Redis 실시간 플랫폼은 소매 기업이 전반적인 구매 경험에 긍정적인 영향을 미치고, 고객에게 최상의 주문 처리 경험을 제공하고, 가장 비용 효율적인 방식으로 재고를 최적화할 수 있도록 도와줍니다.
RedisMart를 위해 구현한 개별 서비스에 대해 더 알고 싶으십니까? 그런 다음 시리즈의 다음 블로그 기사를 기대해 주세요!
직접 사용해보고 싶으신가요? 다음은 실시간 데이터 플랫폼인 Redis를 사용하는 데 도움이 되는 몇 가지 링크입니다.
- 모듈에 대한 추가 정보
- github.com/RediSearch
- github.com/RedisJSON
- github.com/RedisGears
- github.com/RedisAI
- Redis 엔터프라이즈 클라우드
- 활성-활성 지역 분포
크레딧
이 데모 응용 프로그램에 기여한 모든 분들께 진심으로 감사드립니다.
- RedisConf에서 데모 애플리케이션을 발표한 Yiftach Shoolman과 Ash Sahu
- 데모 애플리케이션의 요구 사항 목록에 기여하고, RedisConf를 구성하고, UI 디자인을 지원하고, 이 블로그 게시물에 기여한 Redis 마케팅 팀(특히 Udi Gotlieb, Ash Sahu, Doug Tidwell, Bryson Coles)리>
- 데모 애플리케이션을 구현, 테스트 및 설계하고 이 블로그 게시물에 기여한 기술 지원 팀(특히 Martin Forstner, Greg Georges, David Maier)
- 모듈 및 이미지 인식 서비스 개발을 위한 CTO 팀(특히 Leibale Eidelman, Guy Korland)
- 데모 애플리케이션의 요구 사항 목록에 기여하고 제품 기능을 제공한 제품 관리 팀(특히 Pieter Cailliau, Emmanuel Keller, Jonathan Salomon, Amiram Mizne)
- 여기에 언급하는 것을 잊은 모든 사람들
이 블로그 시리즈를 RedisMart 애플리케이션의 주요 개발자인 Martin Forstner에게 헌정하고자 합니다. 그가 최근에 세상을 떠났다는 것은 큰 슬픔으로 다가옵니다. Martin의 지식, 재능, 유머 감각은 타의 추종을 불허했습니다. 그는 Redis의 소프트웨어 엔지니어 그 이상이었습니다. 그는 동료이자 동료이자 멘토이자 친구였습니다. 편히 쉬세요, 마틴, 보고 싶어요!