every Tech Blog

株式会社エブリーのTech Blogです。

DELISH KITCHEN のサービスとバックエンドシステムのお話

自己紹介

はじめまして。DELISH KITCHENバックエンドチームのマネージャーをやっている内原です。

本日はDELISH KITCHENにおける、バックエンド観点でのシステム紹介を行います。この紹介によりDELISH KITCHENの開発に興味を持ってもらえると嬉しいです。

はじめに

DELISH KITCHENのサービス全体像とバックエンドシステムの構成や仕様などを紹介します。

ご覧の通り、複数のマイクロサービスが様々なミドルウェアを利用しつつ、DELISH KITCHENサービスの提供を実現しています。

DELISH KITCHENのサービス全体像

サービス全体像

DELISH KITCHENの一番主要な機能は、レシピ動画を提供することでお客様の料理体験をよりよいものにすることです。

これだけ聞くと、単に動画を配信しているだけのサービスのように思われるかもしれませんが、実際には料理にまつわる様々な事柄をサポートするシステムで、多くの機能を提供しています。

DELISH KITCHENを提供しているプラットフォーム

料理を作ろうと思った時や買い物をしている時、なんとなく流行りのレシピを知りたいと思ったときなど、色んなシチュエーションでご利用いただけるように、以下のプラットフォームでDELISH KITCHENを提供しています。

  • iOS/Android アプリ
  • WEB
  • 小売店でのデジタルサイネージ
  • Amazon Echo

DELISH KITCHENが提供しているサービス

単に料理を作る際に役立つだけではなく、特売情報をお知らせしたり買い物リストと連携することでお買い物をサポートします。

DELISH KITCHENが提供している主なサービスは以下の通りです。

  • 人気、特集、新着、パーソナライズされたリコメンドなど、能動的なレシピ提案
  • カテゴリ内検索、キーワード検索など、受動的なレシピ提案
  • 各地域の小売店特売情報と、特売商品を用いたレシピ提案
  • レシピのお気に入り管理
  • レシピのレビュー
  • レシピ材料の買い物リスト管理
  • プレミアム会員向け機能やプレミアム会員限定レシピの提供
  • DELISH KITCHENポイントによるポイント交換、ポイントがもらえるクーポン機能
  • 機種変更時や複数端末での同期用にメールアドレス/SNSによるログイン機構
  • プッシュ通知

DELISH KITCHENのバックエンドシステム全体像

複数のシステム構成

DELISH KITCHENは複数のマイクロサービスで構成されており、それぞれが別のシステムとして独立しています。

個々のシステムにおいては共通している部分も多いですが、提供している機能や使用しているサービスには差異があります。

共通の基盤/利用サービス

インフラ構成図

DELISH KITCHENの各サービスで共通的に利用している基盤や外部サービスは以下の通りです。

  • Golang, echo
  • インフラ
    • AWS ECS
    • AWS RDS
    • AWS AutoScaling
    • AWS ElastiCache
    • AWS S3
    • AWS CloudFront
    • AWS Route53
  • ログ/分析
    • fluentd
    • redash
    • TreasureData
    • Databricks
  • 開発/運用
    • github
    • CircleCI
    • terraform
    • ansible

共通APIサーバ

iOS/Android/WEB/サイネージなど、クライアント向けに提供しているAPIサーバです。お客様に対して提供される機能は、すべてこのAPIサーバを経由しています。

各種内部向けAPIサーバへの中継もここで行われます。

WEBシステム

DELISH KITCHEN WEB

WEBにおけるDELISH KITCHENサービスを提供しています。

レシピなどのデータは共通APIサーバを参照しています。共通APIサーバと通信する構成であるため、BFF(Backends For Frontends)として稼働しています。

検索システム

DELISH KITCHEN 検索

レシピ情報の検索を提供するサーバです。

検索エンジンには Elasticsearch を利用しています。

特売情報システム

DELISH KITCHEN 特売情報

特売情報を提供するサーバです。

データとしては店舗、特売商品、チラシなどを扱っています。

別途、店舗側にて特売情報を入稿するためのtoC向けシステムも存在しますが、今回は省略します。

サイネージシステム

DELISH KITCHEN サイネージ

小売店舗に設置しているサイネージ端末が利用するサーバです。

個々のサイネージに対し、レシピ/広告を指定した配信設定が可能です。レシピ情報は共通APIサーバを参照しています。

別途、店舗側にて配信設定を管理するためのtoC向けシステムも存在しますが、今回は省略します。

ポイントシステム

DELISH KITCHEN ポイント

デリッシュポイントという、DELISH KITCHEN内でお得に使えるポイントを管理するサーバです。

ポイントを別商品に交換するにはドットマネーを利用しています。

クーポンシステム

DELISH KITCHEN クーポン

デリッシュポイントをもらうことができるクーポンサービスを提供するサーバです。

外部のクーポンサーバとやり取りをしています。

課金システム

プレミアムサービスを利用可能とするため、ストア決済、キャリア決済を実現するサーバです。

プレミアムサービスはサブスクリプション形態であるため、アプリ外で購読状態を管理しています。

プッシュ通知システム

DELISH KITCHEN プッシュ通知

アプリ向けにプッシュ通知を提供するサーバです。

サーバの実態としてはmercari社製のgaurunを利用しています。

最後に

上記のように、DELISH KITCHENは多くのシステムで構成されたサービスです。

開発、運用で使用しているインフラ技術、外部サービスも多岐に渡りますので、興味を持ってもらえると嬉しいです。

ここまでお読みいただき、ありがとうございました。