社内システムをGCPへ移行②

GMO NIKKOのS.Tです。
社内システムをクラウド化(移行中)する機会があったので共有します。
今回はその第二回目として下記を説明します。
・Cloud Functions
・Cloud SQL
・App Engine
 

全体図

現在オンプレで稼働中のシステムからなるべく変更点を少なくして工数を抑えつつ費用もあまりかからない方法になっていると思います。

Cloud Functions

比較的最近PHPも使えるようになっていたので個人的に使いやすいPHPで実装してみます。
Cloud Storageの指定バケットにファイルがアップロードされるとトリガーとしてCloud Functionsが実行されるように設定します。
アップされたファイル名やそのバケット名等の情報が$cloudevent->getData()からを取得できるのでそれを使用してCloud SQL(PostgreSQL)へ登録します。
バケット名からテーブル名を取得してPostgreSQLのテーブル情報からプライマリキーを取得します。
CSVのヘッダー名とテーブルのカラム名は同じにしているのでそのヘッダー名とプライマリキーを使用して
insert into on conflict do updateのSQLを動的に作成して登録しています。
今後項目が追加になってもこのプログラムの修正は必要なくなりますね。

Cloud SQL

Cloud SQL(PostgreSQL)はWindowsで使い慣れたA5:SQLを使用して接続しています。
■下準備
1.Google Cloud SDKをインストール
https://cloud.google.com/sdk/#nix
2.Windows版プロキシクライアント(cloud_sql_proxy_x64.exe)をダウンロード
https://cloud.google.com/sql/docs/mysql/connect-external-app?hl=ja
3.サービスアカウントから秘密鍵のJSONファイルをダウンロード
https://console.cloud.google.com/iam-admin/serviceaccounts
4.プロキシクライアントを起動
コマンドプロンプトで下記を実行
 
■A5:SQLの設定
1.ここからA5:SQL Mk-2をダウンロード
A5_SQL Mk-2 – フリーのSQLクライアント_ER図作成ソフト
2.データベースの追加と削除を選択して追加ボタンをクリックすると
下記のウィンドウが表示されるのでPostgreSQL (直接接続)をクリック
3.ホスト名をlocalhostに設定してインスタンス接続パスワードを入力
ダウンロードしたプロキシクライアントを起動していれば接続できるはず

App Engine

■application\config\database.phpを修正
CodeIgniterを使用しているので下記のように修正します。
 
■app.yamlを追加
主に使用言語とアップロードするファイルの拡張子を設定しています。
 
■.gcloudignoreを追加
最近は対応しているようですが、アップロードするファイル名に日本語が含まれているとデプロイできなかったので
無視するファイルをここで設定しています。
盲点だったのがデフォルトだとログファイルまでアップロードしてしまい容量オーバーでデプロイできないのでそれも無視します。
あとはapp.yamlを追加したディレクトリでgcloud app deployすればカレントプロジェクトにデプロイされるので、
gcloud app browseを実行すればデプロイされたWebアプリケーションが表示されると思います。
あと当然ですが、使用データベースを変更している場合はSQLも修正する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です