GCPで社内システムをつくる
Over view
GCPを使って社内向けのwebアプリケーションを作る方法についてまとめてみます。ここで社内向けのwebアプリというのは、社外からのアクセスを禁止したwebアプリケーションのことを意味します。この要件を満たすようなアプリケーションを作成するには、たとえば以下のようなアーキテクチャを考えることができます。
- Google Apps Script(GAS) + Spread Sheet
- AppEngine + Cloud Identity Aware Proxy
- Cloud Run + Pomerium
GAS+Spread SheetはGCPは不要なのですが、加えてみました:)
下に行くほどアプリケーション作成の自由度が上がります。作成するアプリケーションの用途に応じてアーキテクチャを決定しましょう。
Google Apps Script(GAS) + Spread Sheet
作成したいものがJavaScript+HTML+CSS, Vue.js, TypeScript等、フロントエンドの言語でつくるシングルページアプリケーション(SPA)などはこちらの構成で作成可能です。Google Workspaceなどを組織で契約していれば、簡単にドメインによるアクセス制御も可能です。DBをSpread Sheetとして、データを保持することも可能です。
しかしながら、たとえばMySQL+サーバサイド言語によるアプリケーションを作成する必要があるなら、以下のアーキテクチャを考えてみるのといいかもしれません。
AppEngine + Cloud Identity Aware Proxy
AppEngineはフルマネージドのPaasです。使用できる言語はGo, PHP, Python, Java, Ruby, Node.js, .NETと限りはありますが、おおよその主要言語はカバーできているのではないかと思います。ここにGCPのマネージドIAP(個人認証型プロキシー)であるCloud Identity Aware Proxyを利用することでドメインによるアクセス制御やGoogleアカウントによるアクセス制御ができます。DBはCloud SQLを利用可能。
参考 : https://cloud.google.com/appengine/docs?hl=ja
Cloud Run + Pomerium(IAP by OSS)
Cloud Runはフルマネージドのコンテナサービスプラットフォームです。Dockerfileさえあればどんな言語でもwebアプリケーションとしてデプロイできるので、自由度が最大です。しかしながら、2021年2月22日現在ではCloud IAP 非対応なので、アクセス制限については他の方法をとらねばなりません。そこで、利用できるのがPomeriumというOSSのIAPです。
ちなみに、こちらはOSSだけあってCloud Run以外のサービスにも対応しているので、ほかのインフラを利用しているひとも利用を一考される価値があるかもしれません。
Cloud Run:https://cloud.google.com/run?hl=ja
Cloud Run + Pomerium : https://www.pomerium.com/guides/cloud-run.html
おまけ Goolgeフォーム + Cloud SQL
GASはCloudSQLと連携が可能なので、こんな構成もありといえばありです。たとえばGoogleフォームのデータはスプレッドシートに出力されますが、並行して、CloudSQLにinsertをするようなGASのスクリプトを書いておくと、データ分析が簡単に行えるようになると思います。
今回はここまで。
ではでは!