株式会社ディバータ:Kubernetes を活用したクラウド ネイティブ開発によるヘッドレス CMS の構築で、メンテナンス性や拡張性を向上
Google Cloud Japan Team
「多様性」と「遊びゴコロ」を大切にしたモノづくりを推進する株式会社ディバータ(以下、ディバータ)。約 4,000 社に採用されている WEB サイト構築プラットフォーム(CMS)である RCMS をベースとした次世代 CMS の Kuroco(クロコ)を正式リリース。Kuroco の開発基盤として Google Cloud が採用されています。このプロジェクトについて、代表取締役社長、および 2 名のエンジニアに話を伺いました。
利用している Google Cloud ソリューション:
利用している Google Cloud サービス:
Google Kubernetes Engine、App Engine、Cloud Functions、Cloud SQL、Memorystore、Cloud Storage、FileStore、BigQuery、Pub/Sub、Google Cloud Armor、Cloud Logging など
サービス間のレイテンシが低いことが、Google Cloud 採用の鍵
「大学時代に在籍していたラグビー部で、WEB サイト作成用に CMS を作ったところ、すごく喜ばれたので、もっと多くの人に喜んでもらいたいと考えたのが、2005 年の起業のきっかけでした。起業時は若かったので、グローバル IT カンパニーに負けない会社にするためにはどうすればよいかを真剣に考え、CMS であれば特別とがった技術は必要なく、自分の持っている設計能力で勝負できるので、CMS をビジネスの中心にした会社を作ろうと考えました。」
代表取締役社長の加藤さんは、ディバータ設立の背景をこう話します。ディバータは、「ただしく、たのしく。」という企業理念に基づき、CMS の開発やインターネット サイトの企画・構築・運営・新サービスの開発研究を事業として展開しています。企業文化として、売上や規模の拡大を追求するのではなく、常に新しいことに挑戦し、グローバルにサービスを展開することに強い目的意識をもっています。
ディバータでは、2021 年 4 月に最新の技術やアーキテクチャを採用した次世代 CMS である Kuroco を正式にリリースしています。Kuroco の最大の特長は、ヘッドレス CMS であるということです。API 中心の設計で、API を介していろいろなサービスと連携できる、CMS という枠にとらわれない機能が提供されています。Kuroco の開発基盤として採用されたのが、Google Cloud でした。
Google Cloud を採用した理由を、加藤さんは次のように話します。「Kuroco の開発にあたり、拡張性やメンテナンス性を考えてクラウド ネイティブで開発したい、変化への対応を考えて Kubernetes を使いマイクロ サービス化したいと思っていました。そのための調査をした結果、サービス間のレイテンシが低いことが非常に重要なポイントでした。また、手軽に、しっかりとログが取得できることも必要でした。こうしたポイントを検討した結果、Google Cloud の採用を決めました。」
サービス間の認証を統一的に利用できることも Google Cloud のメリット
Kuroco の開発は、2019 年夏ごろからスタート。当初は、RCMS のフロントエンド機能はそのまま生かし、API 機能を強化するリニューアル案を検討。しかし 2020 年夏ごろに、フロントエンド機能をすべてなくした CMS に刷新することを決定しました。加藤さんは、「RCMS は、フロントエンドとバックエンドがモノリシックに結合していることから、マイナーバージョンアップでは、グローバル展開を考えたときに API 対応が中途半端になることから方向転換しました」と話します。
Kuroco では、Kubernetes 環境の構築に Google Kubernetes Engine を採用。データベースには Cloud SQL を使い、ストレージには Cloud Storage や FileStore などを利用しています。また、Kuroco のホスティング サービスと外部のサービスの連携に、Pub / Sub や Cloud Functions などを使っています。加藤さんは、「フロントエンド機能をなくしたことで、ソースコードを約 3 分の 1 に削減できました。これにより身軽になり、性能も向上しました」と話します。
「Google Cloud の最大の魅力は、サービス間のレイテンシが低いことです。サービス間のレイテンシが高いと、ユーザーへのレスポンスが悪くなってしまうので、利用できるサービスの選択の幅が狭くなってしまいます。レイテンシを気にせず使えるのが Google Cloud のメリットで、クラウド ネイティブ、マイクロ サービスでのシステム開発において Google Cloud の選択は正解でした。」(加藤さん)
サービス間の認証を統一的に利用できることも Google Cloud のメリットの 1 つ。「Google Cloud 特有の概念ですが、プロジェクトと呼ばれる階層構造により、複数のサービスを包括して、シームレスに認証できるようになっているので、非常に開発しやすい構造だと思います。」(加藤さん)
また、ドキュメントが体系化され、統一感があり、使いやすく、読みやすいことも Google Cloud のメリットです。加藤さんは、「Google Cloud 自体が、統一された思想に基づいて開発されているので、エンジニアとして理解しやすい構成になっています。また、これは Google Cloud に限ったことではありませんが、クラウド ネイティブにしたことで、メンテナンス性や拡張性などは格段に向上しています」と話しています。
BigQuery によるログ解析でブラック ボックス化を解消
Google Cloud のプロダクトの中で威力を発揮したのが、BigQuery を利用したログ管理の機能でした。加藤さんは、「クラウド ネイティブ、マイクロ サービス開発では、ログが非常に重要になります。複数のコンテナやサービスを組み合わせたアプリケーションは、挙動に非同期部分が多くなりブラック ボックスが大量にある状態になるので、ログが細かく自動的に収集できる Google Cloud はシステムを構築していくうえで本当に便利です。また、Kuroco を利用するお客様にとってもログは重要で、Kuroco 上で何が起きているかを理解していただくために、BigQuery をバックエンドに持つログ管理画面を提供しています」と話します。
「たとえば、フロントエンドとバックエンドが API で連携されていますが、API がどのような情報を受け取ったのかはフロントエンド側からは正確に把握出来ません。そこでフロントエンド開発者は、Kuroco の API ログが必要です。Kuroco 側で、どのような処理をして、どのようなリクエストを受け付けたかが把握できなければ、想定外の問題が発生したときに、自分たちが悪いのか、Kuroco が悪いのかを判断できません。Kuroco のログ管理画面を利用することで、BigQuery に蓄積されたお客様のログを容易に解析できる仕組みになっています。」(加藤さん)
デベロップメントデビジョン リードテック・フルスタックエンジニアのアルテムさんは、「BigQuery にログを取得する仕組みを構築しました。Google Cloud を使った経験は少ないのですが、特別な開発の必要もなく、高速にログの解析ができるので本当に便利だと思いました」と話します。
また、デベロップメントデビジョン リードテック・フルスタックエンジニアの柴崎さんは、「Google Cloud を使って開発を進めていくうえでは、インフラまわりを意識することなく開発することができました。認証も複雑ではないし、ライブラリも揃っているので、特別な開発手法が必要だったり、大きな問題が発生したりすることもなかったです。今後は、Google Cloud 自体の勉強もしていきたいと思っています」と話しています。
最後に Kuroco の今後に関して、加藤さんは次のように話します。「ベータ版を利用いただいているユーザーの反応はとても良かったのですが、正式リリース後の反応を見ながら改善を繰り返していく予定です。これまで CMS のカスタマイズは PHP のプラグイン形式で行っていたのですが、Kuroco ではプログラム ベースのアタッチではなく、API を介してマイクロ サービス的にカスタマイズできるようになっています。また、近いうちに Cloud Functions を Kuroco からコントロールできるようにすることで、お客様が Kuroco をもっと容易にカスタマイズできるようにしたいと思っています。」
また 2021 年夏ごろには、海外向けの Kuroco を本格展開する計画です。海外展開では、欧州と米国の各リージョンに、日本と同等のサービスを立ち上げて運用します。加藤さんは、「Kubernetes を使っているので、海外展開において環境を簡単に複製できるメリットもあります。以前であれば、一部しか自動化できておらずネットワーク構成やサーバー連携部分は手作業が必要でしたが、Kubernetes を使うことで、環境全体がコード化されているので、複製が非常に楽にできます」と話しています。
株式会社ディバータの皆さん
日本・マレーシア・インドチームでのマレーシア長期合宿のひとコマ
2005 年 1 月に設立。「つくりたいモノをつくって、よろこんでもらうよろこび。」という理念に基づき、CMS の開発、インターネット サイトの企画・構築・運営、およびインターネットを利用した新サービスの開発研究を事業として展開。ウェブサイト構築プラットフォームの RCMS、API 志向のクラウド ネイティブ CMS である Kuroco や Kuroco をバックエンドにしたクローズド SNS 構築サービス Picol、プログラミングを勉強するための CodePuzzle、監視カメラなどの動画を解析する Conduta などのサービスを提供しています。
インタビュイー
・代表取締役社長 加藤 健太 氏
・デベロップメントデビジョン リードテック・フルスタックエンジニア
アルテム・ティモシキン 氏
・デベロップメントデビジョン リードテック・フルスタックエンジニア
柴崎 猛春 氏
株式会社ディバータの導入事例 PDF はこちらをご覧ください。
その他の導入事例はこちらをご覧ください。