トップページのお知らせ欄を管理画面より変更できるようにしました。アーキテクチャはざっと以下のような感じになっています。今回はこの構成にした理由と、よかったポイントを書いていきたいと思います。

アーキテクチャ図

構成理由

フロントエンドを nuxt.js で作成したため、BFF でサービスにアクセスして、news サービス自体は非公開な構成にしたかったのが一番の理由です。

fronend 以外は非公開な構成のため、news サービスは news を操作することのみに集中できていているのがよく感じています。また、frontend の BFF サーバは更新エンドポイントを知らないため、一般ユーザがお知らせを更新してしまう心配もありません。

管理画面は認証を行なう必要があるため、今回は pomerium を使用して、cloud run に IAP を立てる方法で構築を行ないました。firebase などによる認証もありでしたが、開発環境などで既に pomeirum IAP はやっていたので、その知見を流用して行ないました。

よかったポイント

nuxtjs の BFF は面倒でしたが、news サービス単体で御知らせの管理をできるようになったのが、やっぱり良いポイントです。処理がまとまっていて自分でも管理しやすいです。

また、今回は各通信を gRPC を用いて行ないました。これがすごいよかったです。導入やコネクション辺りはちょっと苦戦しましたが、コードの自動生成や分かりやすいスキーマ定義により、サービス間の通信はかなりスムーズに進みました。 swagger 書くよりも何倍も楽に書けて、その上自動生成のコードも swagger の何倍も分かりやすいとか、gRPC よすぎない…?

感想

結構時間はかかりましたが、自分が自由に遊べる環境という名目でサイトを立てたので、その意義を十分に感じられる作業でした。 次は wysiwyg エディターを使ったブログスペースを作成したいなって思っていますがいつになるのかなぁ。 その前に問い合わせフォーム作りたいや。(いらないと思うけど…)