every Tech Blog

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

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

f:id:nanakookada:20210107145935p:plain

自己紹介

はじめまして && あけましておめでとうございます。MAMADAYS開発部長をやっている齊藤です。

開発部長という肩書きですが、マネージメント業務だけではなく、モバイルアプリ開発以外を守備範囲としたユーティリティプレイヤーもつとめ、若い子たちと一緒に草を生やす作業に勤しんでいます。

座右の銘は『枯れた技術の水平思考』です!

閑話休題

弊社オウンドメディアの every.thing にも、CTOのid:kajidaiとの対談が掲載されていますので、時間に余裕がある方は見ていただけると嬉しいです。

【前編】エブリーCTOが聞く!MAMADAYS開発部長のルーツは音楽!?ゲーム開発から組織づくりにも携わってきたこれまでの経歴とは | every.thing(エブリシング)| エブリーのこと、ぜんぶ

【後編】エブリーCTOが聞く!『MAMADAYS』を主力事業に成長させたい!と語るMAMADAYS開発部長の今後の展望 | every.thing(エブリシング)| エブリーのこと、ぜんぶ

はじめに

App/Webのリリースから1年余りが経過した MAMADAYS の、サービス全体像とバックエンド観点でのシステム紹介を行います。

個々の詳細は、後日、若者たちが書いてくれると思いますが、本記事で少しでも MAMADAYS の開発に興味を持っていただけると幸いです。

MAMADAYSのサービス全体像

mamadays:service

MAMADAYSでは『子育てを通じて喜びと幸せを感じられる社会に』をミッションに掲げ、出産・育児に関する課題を解決するため、プロダクト開発を行っています。

出産・育児の課題は多岐に渡るため、複数の機能を提供する多機能アプリとして展開しつつ、データを活用して1人1人に最適化した情報をお届けできるよう日々改善を重ねています。

corp.every.tv

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

基本的な部分は DELISH KITCHEN と同じような感じにしていますが、以下のようにいくつか異なっている点もあります。

  • コンテナオーケストレーションとして、AWS ECS ではなく Kubernetes (AWS EKS) を利用
  • CI/CDとして、CircleCIではなく github Actions や AWS CodeBuild を利用

リリース時期やサービス規模の違いによりそのタイミングで最適と思う選択であり、どの技術が優れているとかではないです。

利用サービス

mamadays-infra

MAMADAYSで利用している基盤や外部サービスは以下の通りです。

  • インフラ
    • AWS EKS
    • AWS Aurora
    • AWS S3
    • AWS CloudFront
    • AWS Route53
    • Elasticsearch
  • ログ/分析
    • fluentd
    • BigQuery
    • metabase
  • 開発/運用
    • github
    • github Actions
    • AWS CodeBuild
    • terraform
    • kustomize

APIサーバ

iOS/Android/WEBなど、クライアント向けに提供しているAPIサーバです。

DELISH KITCHEN 同様に MAMADAYS でも、Golang の軽量フレームワークである echo を利用しています。

テスト周りでは、私が元々 Rails 厨だったこともあり Rspec っぽい記述ができる GoConvey を利用し、カバレッジも Codecov で計測してたりします。

WEBシステム

mamadays:WEB

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

記事の入稿やお客様からのお問い合わせに対応するためのツール類も含め、MAMADAYSのWEB面は React のフレームワークであるNext.jsを利用しています。

リリース1年が経過した頃、開発メンバーが増えたこともあり TypeScript 化を行ったのですが、ものすごく手軽に対応できたので Next.js 様様です。 『もしかして:Nuxt.js』と毎回問われてしまうぐらいググラビリティが低く、検索するたびに悲しい気分になりますが、それはそれで愛おしいです。

検索システム

mamadays-search

記事/動画情報の検索を提供するサーバです。

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

元々は使用したいプラグインが対応されていなかったため独自運用していたのですが、AWS Elasticsearch Service のバージョンも上がったので、マネージドに移行することを検討しています。

最後に

かなりざっくりとした内容となってしまいましたが、当たり前の技術を当たり前に、それでいて新しい風を取り込みながら MAMADAYS は開発・運用しています。

まだまだ成長途上のサービスですので、これからも世の中の出産・育児に対する課題に技術でどう解決していくかを考えながら取り組んでいこうと思います。

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