事例:サーバーレスを中核にして約 2 か月でサービスを実装し、少人数で 150 万ダウンロードのサービス運用を実現

事例:サーバーレスを中核にして約 2 か月でサービスを実装し、少人数で 150 万ダウンロードのサービス運用を実現
ショッピング センターやデパ地下などで買い物をするのと同じように、オンラインでも友人や家族、SNS 上の誰か一緒に楽しみながらお得にショッピングができるサービスを提供する株式会社カウシェ(以下、カウシェ)。シェア買いアプリ「カウシェ」の開発では、サーバーレス環境を活用したコンテナ開発を推進。そのためのインフラとして、Cloud Run を中核とした Google Cloud のプロダクトが採用されています。このプロジェクトについて、アーキテクトの伊藤  雄貴氏にお話を伺いました。

利用しているサービス:

Cloud RunPub/SubCloud TasksCloud SchedulerCloud MonitoringCloud TraceCloud LoggingCloud FirestoreCloud SpannerBigQueryLookerVertex AI Pipelines

利用しているソリューション:

Application Modernization

コンテナをフルマネージドで運用できる Cloud Run を採用

現在の E コマース(以下、EC)は、早く、安く、効率的に商品を届けることに注力し、無駄を省いた結果、「誰かと買い物をする楽しさ」を目指す事業者は多くありません。一方、オフラインのショッピングは、友人や家族など誰かと一緒にウィンドウ ショッピングをしたり、実際に商品を購入するプロセスを楽しむことができます。ショップ店員のおすすめがあったり、セールではワイワイしたにぎわいがあったりなど、人の介在により購買が加速されたりします。この楽しいショッピング体験をオンラインでも実現したいというのがカウシェのコンセプトです。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/abE-5284_1.jpg

「カウシェは、1 人では商品が買えないサービスです。友だちと一緒にワイワイしながら、楽しく、お得に商品を購入する体験をオンラインで提供しています。お客様が家族や友だちを紹介してくれるバイラルの要素が組み込まれているので出品者は広告費を削減でき、その分商品の割引を行えます。そのため購入者はほしい商品を安く購入でき、購入者、出品者、カウシェのそれぞれにメリットがあります。」と伊藤氏は話します。

カウシェは、2020 年 9 月にサービスイン。システム開発が始まったのは 同年 7 月なので、約 2 か月という短期間でリリースしたことになります。伊藤氏は、「スタートアップは、開発に投資できるコストも、人材も、リソースも限られているので、いかにスピード感をもってサービスを開発できるかが重要なポイントです。そのため限られた人員で、高い生産性のもとにプロダクトをローンチできることが必要でした。」と、当時を振り返ります。

そこでさまざまなクラウド サービスを比較検討した結果、Google Cloud の Cloud Run を中心とした構成によるコンテナ開発の採用を決定したとのこと。「クラウド ベンダーの選定にかかわらず、コンテナ開発を軸にサービス展開をしたいと考えていました。コンテナ開発を採用した理由は、コンテナによるアイソレーションや仮想化によりアプリケーションを手軽に扱えることです。ポータビリティの高さも採用の理由の 1 つでした。」(伊藤氏)

コンテナ開発では、Cloud Run、または Google Kubernetes Engine(GKE)の 2 つの選択肢があったそうです。今回、Cloud Run を採用した理由を伊藤氏は、「マネージドなコンテナ実行環境である Cloud Run が魅力的だったこと、加えて、 Kubernetes の前身となる Borg を開発したのが Google で、コンテナ開発のリーディング カンパニーであることも要因の 1つ です。Cloud Run が決め手となったのは、当時、もっとも手がかからず、コンテナをフルマネージドで運用できたからです。GKE も GKE Autopilot のリリースで、ノードやスケーリング、セキュリティなどクラスタ構成を管理しやすくなっていますが、Cloud Run はサーバーレスということもあり管理がより容易なんです。」と話します。

「Google App Engine も魅力的でしたが、より容易にコンテナで抽象化できるサービスがよいと判断し、Cloud Run を選定しました。数年後、カウシェがさらに事業規模を拡大し、バックエンドのサービスが複雑になったら GKE へ移行する可能性があるかもしれません。コンテナをベースに開発しておけば、GKE に移行するときも、デプロイ場所を変えるだけで対応できます。」(伊藤氏)

Cloud Run の活用で、150 万ダウンロードのサービスでも少人数で運用

今回、Google Cloud を採用したシステム構築には、大きく 2 つのポイントがあります。まず 1 つ目は、なるべくすべてを Cloud Run で動かすことです。システムの基本構成としては、Go 言語で記述されたアプリケーション サーバーが Cloud Run にデプロイされています。また、シェア買いが成立したときのプッシュ通知などの重い処理は非同期処理にするために、 Pub/Sub、Cloud Tasks などを採用。バッチ処理には、Cloud Scheduler などが利用されています。

もう 1 つは、なるべく宣言的にすべてを管理することです。何かをトリガーに、内部的に Cloud Functions を起動するなど、暗黙的な処理もできますが、バッチ処理を含めて gRPC で宣言的に定義しています。システムの監視やサービスレベル契約(SLA)のモニタリングには、Cloud Monitoring や Cloud Trace、Cloud Logging などを、データベースには、Firestore、および Cloud Spanner を活用。データ ウェアハウスに BigQuery、BI ツールに Looker を利用してビジネス指標を分析し、サービス改善や機能強化に生かしています。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kauche_architecture.png
https://storage.googleapis.com/gweb-cloudblog-publish/original_images/abE-5241_1.jpg

Google Cloud を採用した効果を伊藤氏は、次のように話します。「最大のメリットは、運用に手がかからないことです。管理しなければならないコンピュート リソースはほぼゼロで、コンテナのスケールも Cloud Run に任せることができます。インフラやアプリケーションを構築するための便利なサービスが一式そろっていることもメリットの 1 つで、すべての機能を Google Cloud で完結することで、インフラの構築からアプリケーションの実装までを 2 か月で実現できました。」

またデータベースの使いやすさも高く評価されています。伊藤氏は、「大規模なリレーショナル データベース(RDB)を管理する場合、DBA(DataBase Administrator)と呼ばれる専門家が必要ですが、Firestore や Cloud Spanner はデータベースの専門的な深い知識がなくても運用できます。例えばテレビで、カウシェが紹介されるとスパイクが発生しますが、事前にノード数などを設定しておけば、トラフィック量に合わせて制限なしにスケーリングできます。Google Cloud の活用で、少人数での開発、運用を実現できました。プラットフォーム チームは現状 2人で、SRE(Site Reliability Engineering)に携わるメンバーは自分 1 人ですが、この人数で 150 万ダウンロードのサービスを運用しています。」と話しています。

Vertex AI Pipelines を活用したレコメンド機能や検索機能に期待

現在、カウシェでは、「この商品を買った人には、この商品もおすすめ」といったレコメンド機能を、Vertex AI Pipelines の活用により実装しています。ほしい商品をいかに効率的に見つけることができるか、レコメンド機能や検索機能なども含めて、Vertex AI Pipelines をはじめとする Google Cloud の AI / ML 系のサービスに期待しています。これにより、カウシェとしてのより良い体験を拡張していきたいと思っています」と伊藤氏は話します。

また、大規模なサービスのモニタリングやトラブル シューティング、運用のためのプロダクトなどで構成されている Google Cloud のオペレーション スイートにも大きな期待を寄せています。「サービスレベル指標(SLI)、サービスレベル目標(SLO)を実現するためのダッシュボードを作ったり、可観測性や信頼性を高めたりするツールセットを、AI / ML 系のサービスを使いながらいかにカウシェに組み込んでいくかを検討しています。コンテナベースでの開発やデプロイ、スケールなどをいかに容易に Google Cloud で完結していくかが今後の最大のポイントになります。」(伊藤氏)

伊藤氏は、「カウシェはメンバー自らが働く環境を楽しみ、熱量を最大化する『自律・自燃型組織』を目指し、もの作りを楽しむという組織として『世界一楽しいショッピング体験をつくる』という企業ビジョンの実現も目指しています。今後さらに新しいことに挑戦していくために、常に新しい技術をキャッチアップして自律的に挑戦できる人材も求めています。Google Cloud には、コンテナ基盤を含めたより生産性の高いインフラ開発環境の提供はもちろん、カウシェのビジョン実現に向けた幅広いサポートを期待しています。」と話しています。

Google Cloud ブログより

 

クラウドカテゴリの最新記事