Zenn × Google Cloud のMeet Upに参加してきました(in福岡)

Zenn Meet Upへ参加した時のセッション記録です。かなり濃く、Google Cloudの基礎と事例を知れるとても良い内容でした!!!
2023.03.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Zennとは

Zennとは電子書籍を売ったり、ブログ記事を書いたりできるエンジニアのための情報共有プラットフォームです。
ちなみに、ただの情報発信だけではなく、Zennで書いた本やブログを成果物として、販売する事もできます。

運営はクラスメソッドが行っていて、ZennのバックエンドでもGoogle Cloudを利用しています。

先日、Zennの運営を行っている弊社エンジニアの和田祐介さんが行った社内イベントをブログにした記事がとても参考になりますので、ぜひご覧ください。

【社内勉強会】AKIBA.GCP でZennのCI/CDを紹介し、Google Cloud Japan の皆さまに改善アドバイスをいただきました

また、お伝えしたいこととして、クラスメソッドでは今期も色々なイベントを実施していく予定ですので、今回のZennMeet Upを参考に、クラスメソッドのイベントの雰囲気も感じ取って頂ければ幸いです。

Zennの特徴

今回の内容については、meさんのブログにもアップされています!!
Zenn Meetup in Fukuoka に現地参加してきたので会場の様子をご紹介します

Google Cloud Japan社員のShoさんからZennの特徴やメリットをご紹介いただきました。

主な特徴として挙げて頂いたものは、
・フロントエンド系の情報が多い
・記事の正確性が担保されている
・開発ロードマップがGitHubで公開されていて使いやすい
・直感的に操作しやすい

上記のような評価を頂きました。

そして、2022年のGoogle Cloud Japan Advent CalenderでZennを利用した経緯なども話されていました。

※顔などはモザイクをかけております

その中で、Zennおすすめ機能として、Publicationのご紹介も頂きました。
こちらは組織単位で投稿を管理できるような機能であり、今回のGoogle Cloud Japan Advent Calenderでも役立ったとの事でした。
またGitHubと連携できる点も評価頂き、記事の管理面(記事や多くなった場合や文字の修正点など)でとても有用だとお話しされていました。

登壇者のShoさんがAdvent Calenderで投稿したわかる!Firestore では、Fire Baseがわかりやすく解説されているので、おすすめです。

さらには会場にいらしたエンジニアカフェのスタッフさんがZennを利用しており、「ZennのリンクをカフェHPに記載している、MLをやってみたなどの技術ブログをZennで投稿している」のような、実際に店舗で活用している事例を聞けたことも良かったです!

エンジニアカフェ

また、唐突になりますが、 ぜひ今回のMeet Up会場であるエンジニアカフェのHPも覗いてみてください。ここの会場の中はとても落ち着く空間で、外観もモダンでお洒落な建物なのでかなりおすすめです。
エンジニアカフェのHP

Google Cloud Day Tour

最後に、今年5月の東京を皮切りに3都市でGoogle Cloud Day ’23 Tourも開催されます。
合わせて紹介されていたので詳細を以下に記載しておきます。
Google Cloud Day ’23 Tour

Google Cloudのサービス紹介

Google Cloud Japan社員の一誠さんからGoogle Cloudを初めて知る方向けに、主要なサービスのご紹介を頂きました。

まずは、Google Cloudと言ったら何ですか?との質問から入りました。 (個人的にみたところGKEとApp Engineが多かった模様:約25名ほど)
オンサイトでのMeet Upでは、こういった会場全体が参加できるような質問もできるので、より楽しく話が聞けるというメリットがありますね!

※顔などはモザイクをかけております

Cloud Run

まずはCloud Runからの解説です。以下にお話しされていた大まかな特徴をまとめます。

コンテナベースの実行環境で使用可能なサーバレスなリソース

0~n台のスケールを自動で高速に行う事が重要(トラフィックが増えた場合自動スケール)

無料枠もあるため安く使用可能

イベント駆動型で使用可能→Cloud Functionの代わりとしてCloud Runを使用できる

トラフィックの管理→デプロイした時に新しいURLが割り当てられるが、Cloud Runのみでカナリアデプロイなど、ロードバランサー不要で実施できる

第二世代ではアプリ用途でもイベント駆動型用途でも使用可能、またCloud Run Jobsがプレビュー中

夜中のバッチ、アプリのデプロイ、イベント駆動型...etc、色々な使い方が出来るのが特徴で学習コストがまとめられる。

App Engine

次に、Google Cloudの中でも最も古くから存在するサービスApp Engineについて。

コードをデプロイするだけで利用可能

Cloud Runと同じくらいのスケーリングの速さも併せ持つ

安定した実績(2008年からの信頼)=ただし、現在大幅なアップデートされていない

実行環境としてはVMベース

スタンダード環境→0スケール、秒スケールも可能

フレキシブル環境→実行環境としてはコンテナベースであり、Dockerファイルが使える、SSH接続が利用可能...etc

Cloud Runと非常に似ているアーキテクチャであり、ワークロードによりに一概には言えないが、おすすめはCloud Runとなる模様です。

Cloud Functions

次に、主に短い時間の稼働を目的としたサービスCloud Functionsについて。

コードをデプロイするだけで利用可能

イベント駆動型のつなぎ役であり、サービス同士をつなげる

第二世代はCloud Runを基軸に開発され、逆に第一世代はAppenginを基軸に開発された

FireStoreとの連携が容易

Cloud RunやApp Engineで代用出来る事が多いため、限定的な用途で使用がおすすめ。(少ないコードでちょっとしたイベントドリブンアプリを開発したい時などに)

Cloud MonitoringとLogging

運用監視のツールも解説頂きました。
以下からは、概要程度にまとめたものを記載していきます。

Cloud Monitoring

定量的な数字、CPUやメモリの利用率をグラフなどで可視化する(90%以上使用されていたらアラートを送信)

ダッシュボード機能(標準搭載されたものがある=無料で使用可能)

Cloud Monitoring

アクセスログ、アプリのログなどを記録する(主にテキスト情報を保存)

Google Cloud オペレーションスイート

実は先程から紹介したCloud MonitoringとCloud Monitoringの両方とも、Google Cloud オペレーションスイートというサービスのくくりの一部として存在しています。
その他に、Cloud TraceCloud ProfilerCloud DebbugerError Reportingというサービスも存在するので、気になる方はぜひ検索してください。

また、今回は割愛しますがCloud BuildCloud Deployのご紹介もされていましたので、気になる方は以下の公式HPを参考にしてくだい。

Cloud Deploy
Cloud Build

 Zennのアーキテクチャについて

最後に、弊社Zennチームの和田さんによる登壇です。
主に、Zennで利用しているシステムの特徴や歴史について解説してくれました。
また、特徴としてShoさんと同じく、Publicationの話が出たので、リンクを載せておきます。
Publicationとは
※顔などはモザイクをかけております

様々なプラットフォームの活用

Zennは様々なプラットフォームを活用して、運用がされています。

決済:Stripe
メール送信:SendGrid
CDNとOG画像:Cloudinari
出金:Amazonギフト券

中心的な存在のGoogle Cloud

Google Cloudのサービスをメインで使用して、アプリケーションのアーキテクチャを構成しています。
また面白い話として、最初は和田さんもGoogle Cloudでアプリ作成することを想像していなかったため(または経験がなかったため)、少し懐疑的に開発や運用を始めたようです。
ところがどっこい。実際に運用してみて、とても使いやすく多様なサービスとの連携も可能なためGoogle Cloudに対する考えが180°変わったようです。

運用の感所

下記からは、聞き取れた範囲で運用の感所を記載していきます。

・主なアーキテクチャは基本的な下記のような構造を採用している模様

LB(Cloud LoadBarancer)→Appサーバー(Cloud Run)→DB(Cloud SQL)

・月間数百万PV以上で動いているが、今現在運用に支障をきたしたことはない

・スケール時に人の手間が少ない(=モダンな運用が可能)

・NoSQLなどは使用せずに基本的なアーキテクチャで運用が可能

和田さんが開発に携わる前までの初期のZennでは、App Engineを利用していたが(運用デプロイが楽だったため)、バーストに弱い状態がネックとなっていた。(フレキシブル環境はプロビジョニングに数分かかるため)
そこでCloud Runに切り替えることにより一時的なバーストにも対応できるようになり、コンテナイメージを用意しておけばいいだけなので色々と楽になった。

上記の解説については、別途ブログにしているのでぜひご覧ください。
Zennのバックエンドを Google App Engine から Cloud Run へ移行しました(無停止!YES!)

その他使用サービス

下記からは、実際にZennで使用しているGoogle Cloudサービスの使用例などについて記載していきます。

Cloud Scheduler

一時停止や即時実行が画面から可能、サービスアカウントの認証でアクセスするためセキュアであり、ZennのアーキテクチャではAmazonギフト券の発行にも使用。

Cloud Tasks

タスクをキューイングするサービスだが、タスクにURLを持たせる事ができるため、開発者は受け側のエンドポイントを用意すれば大量の処理もさばけるようになる優れ物。マークダウンの一括変換のアーキテクチャで使用。色々なワークロードに応用できるため、とてもおすすめのサービス。

複数のサービスの連携

Cloud Tasks+Cloud Scheduler=年に一度のRecapメールの送信で使用している。
Cloud Tasks+Cloud Scheduler+Cloud Run=安く運用する事も可能、ネットワークレイヤの意識がほぼない。

Cloud Armor

また、セキュリティ攻撃としてDDoS攻撃(複数の端末を使用し攻撃する、サービス機能停止を狙った攻撃)を受けた過去の事例を挙げ、Cloud Armorを導入することで解決したことも解説されていました。

まとめ

色々書きましたが、その他にもCloud SQL Proxyなども使用していて、実際の活用事例についても触れられていました。
ZennはGoogle Cloudを軸に置いたアーキテクチャを採用していて、和田さんのGoogle Cloud愛も伝わるような、かなり濃い内容でした!!笑

お客様への技術支援

クラスメソッドはAWSを中心にサービスを展開しておりますが、データ分析アプリケーション分野特化したエンジニアも多数在籍しています。
また、AWSGoogle Cloudへのマイグレーションのみならず、一部のサービスのみをクラウドで運用したい、一度PoCで試したい、、、etc
上記のような企業様も、ぜひお気軽にご連絡頂ければと思っております。

クラウドを利用することにより、考えられるメリットは沢山ございます。
データ分析基盤Big Queryに移すことにより、高速かつサーバレスな環境でクエリを実行できたり、
まずはCompute EngineEC2などのVMサービスへ移行をして、徐々にオンプレミスからクラウドへ移行する。
さらに他クラウドをご利用の企業様では、マルチクラウド戦略(複数のクラウドを採用すること)を採用する事により、多方面でのリスク分散が実施可能となったりと、お客様ごとに考えられるメリットは多岐に渡りますので、ぜひ一度お問合せ頂ければと思います。

今後の対外的なイベント

クラスメソッドのイベント一覧

日比谷フォートタワーへオフィスが移転するにあたり、現地でのリアルイベントも増えていく予定です。
現在決まっているイベントもいくつかありますので、ぜひ上記URLにある弊社HPからご確認頂ければと思います。