Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバック...

コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023

More Decks by アクイアジャパン Acquia Japan

Other Decks in Programming

Transcript

  1. Drupalとは 作者 Dries Buytaert 言語 PHP ライセンス GPL v2以降 初回リリース

    2001年1月15日 公式サイト drupal.org ソースコード git.drupalcode.org/project/drupal 最新バージョン 10.1.x (2023年8月時点) – デジタル体験を提供する、オープンソースの CMS(コンテンツ管理システム)です。 – LAMPスタックで動作します。 – 企業サイト、多言語サイト、ポータルサイト、 ヘッドレスCMSとして利用事例が多々ありま す。 – NASA、オーストラリア政府、NASDAQなど の金融機関から、ネスレ、ファイザー、IBM など様々な組織がDrupalを採用していま す。
  2. バックエンドAPIサービスとしてのDrupal DrupalはCMSとして有名で、企業サイトでの利用事例が圧倒的に多いですが、DrupalはバックエンドAPI サービスとして利用するに十分なプラットフォームです。 1. コンテンツモデリング:Drupalでは柔軟なコンテンツ構造を構築できるアーキテクチャとUIを備えて います。 2. モダンな技術スタック:Twig/DI/Routing等のSymfonyコンポーネント、Twig、Composer、PHPUnit がDrupalに組み込まれていることで、Webアプリケーションフレームワークさながらの実装が行えま す。

    3. 豊富な拡張機能:巨大なOSSコミュニティから提供される数万個ものコントリビュートモジュール(拡 張機能)を活用することで、カスタムコードを最小限に抑えながら機能拡張できます。 4. Web APIへの対応:近年ではAPI-Firstを掲げてより良い構造化データエンジンおよびWebサービス プラットフォームに対応させる取り組みが始まっています。
  3. 1. Drupalでコンテンツモデリングをしよう Drupalで高速プロトタイピング – Drupalには「コンテンツエンティティ」と呼ばれる、コンテンツ の永続的なストレージに使用されるオブジェクトがありま す。 – Drupalでデータを扱う方法の一つであり、データやコンテン ツのモデリングを行います。

    – 標準で「コンテンツ」「タクソノミー」「ユーザー」「メディア」な どいくつか型が用意されており、 Drupalの管理画面でそれ らの設定を定義できます。 – コンテンツエンティティとして生成されたインスタンスは共通 の仕様でデータの操作が行えます。
  4. 2. Web APIに対応させる Drupalで高速プロトタイピング – Drupalで標準採用されているREST API – Drupalには、標準機能としてREST APIに対応しています。これ

    は、コンテンツエンティティをJSONでCRUD操作できるもので す。 – JSONでAPIを作成するためのオープンスタンダードな仕様 「JSON API」に準拠しており、共有された規約に従うことで RESTful APIを迅速かつ一貫して作成できます。 – 拡張機能でより実用的に – Drupalのコントリビュートモジュールの中にはGraphQLフォー マットを提供するもの、OAuth認証を実現するものなどがあり、 コードを書かずにこれらの機能を実現できます。
  5. 3. フロントエンドの実装 Drupalで高速プロトタイピング – モダンJavaScriptフレームワークとの統合 – DrupalのフロントエンドとしてNext.jsと連携する プロジェクトがあります。 https://next-drupal.org/ –

    Drupalはそもそも「CMS」なので・・・ – フロントエンドの画面はDrupal側で簡単に用意 できます。 – Drupal.orgで数多くのテーマ(=フロントエンド のレイアウト)が公開されています。
  6. Drupalで高速プロトタイピング まとめ 1. コンテンツモデルをDrupalで表現する データやコンテンツのモデリングをUI上から行えます。作成されたコンテンツは全てコン テンツエンティティとして共通の仕様でデータ操作ができます。 2. DrupalのWeb API化 標準機能としてREST

    APIに対応している他、様々な拡張機能によって実用的なWeb APIを実装できます。 3. フロントエンドとの統合 Next.jsとDrupalをシームレスに連携するプロジェクトが立ち上がっており、素早くフロン トエンドを実装できます。要件によってはCMSでバックエンドもフロントエンドも賄うことも 可能です。
  7. Drupalの開発ワークフロー 1. 計画:機能やデザインの開発をいつまでにどれだけ行 うかを決めます。 2. ビルド:機能実装(コーディング)とコンパイルを行いま す。 3. テスト:コードをテストします。 4.

    レビュー:コードのレビューを行います。 5. デプロイ:ホスティング環境にコードを反映します。 これらはすべて でシームレスに行うこと ができます。
  8. Acquia Cloud Platformのインフラ構成 RESILIENT EDGE CLUSTER* データベース層 (HA) AWS Aurora

    Provisioned (Pooled by Default) ファイルサーバー層 (HA) AWS EFS (Pooled by Default) NEW WEB LAYER AMAZON EKS Pods for: Apache / PHP, Memcache, Cron, & SSH EC2 - AZ1 EC2 - AZ2 EC2 - AZ1 EC2 - AZ2 KUBERNETES CLUSTER (Pooled Capacity by Default) • ファイルシステムは 10GB/秒高速データ配信 • 1TB以上ストレージ拡張 • データベースは最大 5倍スループット • Web層ソフトウェアの分離することで、 Drupal、 Memcached、Cron、SSHが互いに干渉することなく パフォーマンスを発揮 • 高負荷に対して瞬時にリソース増強 (オートスケール) • コンテナが常にリフレッシュされ、不健全な Podが自 動的に削除される自己修復型インフラストラクチャ • コードデプロイ時に新しいコンテナへのクリーンビルド を保証するアトミック・コードアップデート
  9. Drupalの開発サイクルを加速する 1. 計画:Code Studioでバックログ/issue管理 2. ビルド:Cloud IDEでDrupal開発に特化された開発環境を数 分で起動し、クラウド上でコード実装 3. テスト:Code

    Studioで、事前定義されたCI/CDパイプライン により静的コード解析や自動テストを実施 4. レビュー:Code Studioでマージリクエストを作成をトリガーに レビュー用環境を起動 5. デプロイ:Cloud Platformでドラッグ&ドロップによるデプロイ
  10. Acquia Cloud Platformのプラン 個人向けから企業向けまで、あらゆる規模のビジネスをサポートします。 本番Webサイトを開発、デプロイするために構築されたセル フサービス環境を提供します。 セキュアでスケーラブルな、エンタープライズクラスのインフ ラとサポートを提供します。 Cloud Platform

    Professional Cloud Platform Enterprise 月額クレジットカード払い 利用するリージョン、メモリ、ストレージによって料金を算 出 年額一括払い 月間PVを元に料金を算出 * 開発環境 ×1、ステージング環境 ×1、本番環境 ×1 がベー ス (追加可能) フルサービス式のキャパシティ管理 × 高可用性 Cloud API, Cloud IDE, Code Studio, Edge 東京リージョン選択可能 24時間365日サポート × アップタイムSLA99.95% 開発環境 ×1、ステージング環境 ×1、本番環境 ×1 セルフサービス式のキャパシティ管理 Cloud API のみ 選べるリージョン(※東京リージョン未対応) ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ cloud.acquia.comでアカウント登録後、環境を作成、す ぐに利用可能 オーダーフォーム受理後、2週間前後でセットアップ完 了、利用開始 ✔ ✔ $148(2万円)/月〜 クレジット決済 お見積もり https://www.acquia.com/choosing-right-acquia-cloud-platform * ユーザーや管理者数は価格や性能に影響いたしません。
  11. まとめ – コンテンツファーストのアプローチにより、 変更に強いアプリケーションが実現できます。 – 最適なコンテンツモデルを素早く見極めるには、 作って評価するサイクルを高速に 回すことが 求められます。 –

    オープンソースソフトウェアのDrupalを使用することで、作りたいものを素早く形に落とし込む こ とができます。 – アクイアが提供する、Drupalに最適化されたPaaS、Acquia Cloud Platformをホスティング環 境として使用することで、開発者がやるべきことに注力できるようになります。
  12. 参考 – 書籍:DESIGNING CONNECTED CONTENT デジタルプロダクトの長期的な成長を支える構造化コ ンテンツ https://www.amazon.co.jp/dp/4862465196 – チュートリアル:Drupal×Next.jsでヘッドレスCMSを高速で立ち上げる

    https://dev.acquia.com/tutorial/nextjs-acquia-setting-acquia-cms https://dev.acquia.com/tutorial/nextjs-acquia-nextjs-starter-kit-acquia-cms-headless-starter-kit-drupal – ブログ記事:DrupalのJSON:API入門 https://www.acquia.com/jp/blog/introduction-to-json-api – ブログ記事:Acquia Cloud Next - 大規模プラットフォームのクラウドジャーニー https://www.acquia.com/jp/blog/acquia-cloud-next-journey-platform-modernization-scale – 動画解説:Acquia Cloud Platform入門シリーズ https://www.youtube.com/playlist?list=PLVkpj3GMKNm2xTDE6gMYesBaFikMaZU3m