ファッションレンタルサービスairClosetのエアクロのシステム構成を紹介します!
みなさまこんにちは、こんばんは!エアークローゼットCTOの辻です。
この記事はエアークローゼットのアドベントカレンダー2022の1日目の記事となってますので、ぜひ他の記事も読んでいただけたらと思います!
エアークローゼットは一言で説明するとプロのスタイリストが普段着のお洋服を選んでくれる女性向け月額制ファッションレンタルサービスです。
おそらくサービスだけでいうと女性向けでファッションでスタイリストが選んでくれたりと華やかな印象を受けると思うのですが、そのサービスを支えるシステム側は考えなければならないことが非常に多く、手前味噌ですがかなり複雑でエンジニアにとっては腕の見せどころだなと思っています。
というわけで今回はエアークローゼットを支えるシステム構成についてざくっと紹介していくので、興味のある方はぜひ読んでいただけると嬉しいです!
全体像
ではairClosetを運用する上で必要な大まかな機能について紹介するために、まずはサービスの流れについて説明していきます。
その後それを実現するためにどんなシステムが稼働しているかを紹介していきます。
サービスの流れ
airClosetのWebサイトに訪れ会員登録を行う。
ここでは氏名、住所、電話番号などの個人情報の他に、お洋服の好みや体のサイズなどを登録します。登録された情報を元にスタイリストがアイテムを選ぶ。
選ばれたアイテムを倉庫システムへ連携。
倉庫では連携された情報を元にアイテムをピッキングし発送を行う。
発送したアイテムがお客様の手元に届き、Webやアプリでスタイリストからのメッセージを読んだり、アイテムを購入したりできる。
5で届いたアイテムを返却。
返却されたらお客様への次のスタイリングを開始(2に戻る)するとともに、返却されたアイテムをクリーニング。
クリーニングが完了したら倉庫にアイテムを格納。
本当はアイテムの入庫のフローもあるのですがここでは割愛します。
システム構成
ざっと下記のような感じですが、これでも全体の1/4にも満たないくらいです。
お客様向けシステム
というわけでいくつかの塊に分けて簡単に役割を説明していきます。
まずは一番わかりやすいお客様向けシステムの部分です。
ここはサービスの流れの1と5、6にあたる部分で、airClosetへの登録や、レンタル中アイテムの確認や返却機能、会員情報の管理などができます。
スタイリスト向けシステム
次はスタイリスト向けシステムです。サービスの流れの2にあたる部分ですね。ここではお客様の好みの情報の整理をしたり、スタイリングをしたりなどができます。
社内向け管理コンソール
次は社内向けの管理コンソールです。サービスの流れには含んでいませんが、お客様の情報を確認・編集したり、クーポン等を発行したり、発注管理を行ったりと、社内でサービス運用のために使うシステムですね。
ユーザ認証システム
次はユーザ認証システムです。現在エアークローゼットでは複数の事業を運営していて、事業をまたいで共通のユーザとして管理する仕組みをこのシステムで実現しています。
各種バッチシステム
次はバッチシステムについてです。正直バッチの数は相当数あるのでこれはほんの一部でしかないですが、例えば倉庫連携バッチではスタイリストが選んだアイテムの連携や、発送されたアイテムの配送伝票番号の取得、返却されたアイテムの連携、新規で入庫されたアイテムの連携などを行っています。課金バッチでは月々の利用料金の請求処理などですね。
倉庫管理システム(WMS)
最後は倉庫管理システムです。エアークローゼットのサービスはレンタルのため、当然ですが送ったアイテムは倉庫に戻ってくることになります。これをエアークローゼットでは循環型物流と呼んでいますが、そうすると通常のECでは考慮しない個品単位での管理や突合、返却品のメンテナンスなど、一般的な倉庫管理システムでは考慮していない仕組みが必要で、それを実現するためにエアークローゼットでは自社で倉庫管理システムを構築しています。
そのため機能としても通常のECであれば商品入荷・保管・出荷・配送ができればよいところにプラスして、返送・返却検品・商品再生・最終検品ができるようなシステムになっています。
その他システム
これら以外にも下記のような様々なシステムがあります。
通知管理システム
アイテム管理システム
ステージングDB自動生成システム
バックアップシステム
E2Eテストシステム
スタイリストマッチングシステム
アイテムレコメンドシステム
etc…
利用している技術・基盤など
ここまでで紹介したシステムについて、企画学習以外のすべてのシステムがNode.jsで開発されていて、エアークローゼットの大きな特徴の一つになっています。
そのあたりの考え方は去年の記事が参考になると思うので、興味があれば読んでみてください。
インフラとしては全面的にAWSを採用していて、昔からあるシステムはEC2、最近開発したものはECSか、LambdaやStep Functionを用いたサーバレスな基盤を使っています。また、インフラの構築もここ数年で開発したシステムではTerraform、CDKなどを用いてコード化しています。
最後に
現在はこのようなシステム構成になっていますが、正直airCloset事業に特化させてしまっているところが多いので、今後の事業展開を見据えて全体のアーキテクチャを変えていきたいと考えています。
そちらはアドベントカレンダー2022の25日のブログで書きますので、そちらも見ていただけたら嬉しいです。
ここまで読んでいただきありがとうございました。
12/2は23新卒のエンジニアの大西の「StepFunctionのタスクだけでリトライ処理を作る with AWS CDK in TypeScript」になります!こちらも合わせてどうぞ。