仙台市が「GCP初心者向けハンズオン」を開催! ──クラウドネイティブな思考を学ぶ
まずは参加者同士で自己紹介
最初にTECH PLAY運営事務局から、二日間のスケジュールや注意事項が説明された後、参加者同士で、「名前・普段何をしている人なのか・参加理由と学びたいこと・最近ハマっていること」を自己紹介が行われました。
続いて、主催の仙台市産業振興課・荒木田理さんから、「IoTやAI、VR/AR、5Gなどの先端IT技術を活用した新しいサービスや製品を生み出していきたい。そのためにこうしたハンズオンなどの先端IT人材の育成・交流を図っています。イノベーションを生み出し、都市の体験をアップデートしていくプロジェクト『SENDAI X-TECH Innovation Project』を一緒に盛り上げていきましょう」と、オープニングの挨拶がありました。
▲仙台市 経済局 産業振興課 荒木田理さん
Google Cloud Platform Introduction
今回のGCP初心者向けハンズオンは、sinmetalさん、fishさん、tora470さんというGCPのエキスパート3名に、講師とチューターを務めていただきました。
左から、fish/flatfisherさん、tora470さん、sinmetalさん
講師・チューター皆さんの自己紹介プロフィール
sinmetalさん
株式会社メルペイ ソリューションチーム。GCPUG Admin、Google Developer Expert。2011年にGoogle App Engineに出会ってから、ずっとGoogle App Engineを使い続けている。仕事では社内のGoogle Cloud Platformコンサルティングのようなことをしている。
fish/flatfisherさん
SENSY株式会社。業務と趣味でGCPを嗜む釣り好きエンジニア。Google Developers Groups石巻の代表。普段は東京勤務だが月に1~2回ほど宮城県に帰省し勉強会の講師やスピーカーをしている。
tora470さん
GCPが好きでShonanのOrganizer。仕事ではGCPの技術支援などいろいろやっている。ロボアニメが大好き。好きなロボはレイズナー。好きなGCPプロダクトはCloud Shell。
まずは、講師のsinmetalさんからGCP プロジェクト作成の説明があり、ハンズオンの準備が進められました。今回はあらかじめsinmetalさんが用意してきてくれたプロジェクトを使ってハンズオンを行っていきます。
ハンズオンの準備を進めながら、講師のsinmetalさんからGoogle Cloud Platformについての基礎知識や、よく使う用語などについて解説が行われました。
「Google Cloudの中にはGmailやGoogle DriveなどのSaaS(Software as a Service)を提供するG Suiteと、開発者向けのプラットフォームを提供するGoogle Cloud Platformがあります。更に、Google Maps Platform、Firebase、StackdriverもGoogle Cloudに含まれます。
Google Cloud PlatformはGoogleが開発したクラウドサービス。Googleが社内向けに自分たちのサービスを作るために、独自開発したプロダクトがオープンソース化されたものが多い。また、スケーラビリティを重視したサービスが多く、スパコンのような1台の強力なマシンが作るのではなく、小さなマシンを横に並べるような思想がメインとなっています」(sinmetalさん)
GCPで使われるツールとして挙げられたのは、以下の3つ。
- GUI:Cloud Console
- CUI:Google Cloud SDK
- APIs Explorer GoogleのAPIを実行することができる
ライブラリについては以下の2つが紹介されました。
- API Client Library
- Cloud Client Library
API Client Libraryは自動生成されたライブラリですが、Cloud Client LibraryはGoogleのエンジニアが開発したライブラリなので使いやすく、GCPのサービスの中で、機能が多いものたちが優先的にサポートされているそうです。
また、データセンターが存在する場所「Region(リージョン)」と、Regionの中にあるデータセンターをメンテナンスする単位「Zone(ゾーン)」という概念についても説明がありました。
さらに、覚えてほしいGCP用語として、以下が解説されました。
- Project(プロジェクト)
GCPのすべてのリソースはいずれかのプロジェクトに属する。開発用と本番用のプロジェクトを作成した方がよい。 - Projectを識別するための値
Project ID、Project Number、Project Nameがある。 - Billing Account
支払いのためのクレジットカードを紐づけるアカウント。 - IAM (Identity and Access Management)
チームで開発するときに使う。作業するメンバーを追加できる。 - Service Account
アプリケーションのためのアカウント - Role
何を行うことができるのかの役割。基本となるRoleはOwner・Editor・Viewerの3つ。
Google Compute EngineでInstanceを作ろう
ハンズオン最初の課題は、GCPの中で最もベーシックなサービスであるGoogle Compute Engine(GCE)でサーバーを立て、Instance(インスタンス)を作り、SSHで接続するところまでをやってみようというもの。
「Google Compute Engine は、Linux、Windows Serverなど、OSを選択してVMを作成できるサービスです。OSの上に好きなミドルウェアをインストールでき、強力なマシンタイプを選べることから、自分の好きなようにできて、便利です」(sinmetalさん)
Instanceにアクセスするためには、Firewall Rules(ファイアウォール ルール)の設定が必要となるため、その設定方法や、複数のインスタンスにルールを適用するときに便利なネットワークタグについて説明しました。Instanceのバックアップやコピーにも使えるSnapshotについても説明され、ハンズオンへ進んでいきます。
午前中のハンズオン後は、お昼休憩。TECH PLAY運営が用意したお弁当とお茶でランチをとりながら、課題の続きに取り組んだり、講師やチューターに熱心に質問したりする方も。参加者同士で談笑する方たちも見られました。
Google Compute EngineでオートスケールするWebアプリケーションを作成してみる
午後はGoogle Compute EngineでオートスケールするWebアプリケーションを作成するハンズオンを行いました。まず、基本となるWebアプリケーションを作成するために、独自のOSイメージをCustom Image(カスタムイメージ)として作成し、サーバを複数自動で作成できるようにInstance Template 、Managed Instance Groupを作成しました。さらに、Webサービスにサイトに公開するときに必要となるHTTP Load Balancerの作成、Google Managed SSL証明書の設定へと進んでいきます。
GoogleCloudStorageでBucketとObjectを作る
続いてのハンズオンのテーマは、Google Cloud Storage。Google Cloud StorageはAPIを利用して、ファイルをアップロード、ダウンロードするサービスで、ファイルサーバのように利用します。
リソースは2種類だけで、Object(ファイルそのもののこと)とObjectを入れる箱Bucket(バケット)のみ。Bucketの名前はGoogle Cloud Storage全体でユニークになっていなければいけません。ちなみに、「hoge」というBucket名はsinmetalさんが登録しているのだとか。
ストレージ料金やBucket・Objectごとにアクセス権限を設定する「IAM」などについて解説された後、実際にBucketとObjectをGoogle Cloud Storage上に設定する作業にチャレンジ。IAMはBucket・Objectごとにアクセス権限を設定することや、WebSiteに利用する画像などはPublicにしてCloudStorageに置くことなどが説明されました。
BigQueryを実行する
BigQueryは、データをアップロードして、SQLで分析を行う分析用データウェアハウス。SQLクエリを超高速で実行することが可能です。
「RDBではないので、DBサーバーがあるようなサービスではありません。SQLを実行した時に、瞬間的にワーカーが立ち上がり、処理が行われる、僕のお気に入りのサービスです」と、sinmetalさんは語ります。
さらにBigQueryのアーキテクチャや料金体系、ログ分析やデータ分析、データ加工などでの使い方、データのロード形式などについて説明された後、クエリを実行するハンズオンに取り組みました。
続いて、時系列にデータが増加するTableの管理や、日毎にTableを分割する機能「Table Wildcard Function」「Partition Table」について解説。クエリ結果をTableとして保存したり、Exportしたりする操作について実行しました。
一日目最後の講義は、二日目のハンズオンで行うGoogle Kubernetes Engine、GoogleApp Engine、GoogleCloudFirestoreに備えて、Container(コンテナ)に関する基礎知識について説明されました。
ContainerはプロセスでVMのようなものを作成する仕組みで、VMより小さく早く起動することができます。実装としてはDockerがポピュラーです。sinmetalさんは、Containerが必要だった理由として、クラウドでアプリケーションを配信する仕組みとして便利であること、最初に用意した設定から変更しないので、再現がやりやすいこと、VMより早く起動できるというスケールとの相性を挙げました。
また、ContainerのTemplateとしてビルドされた「Container Image」、Docker Imageを配信できる仕組み「Container Registry」、Container Registryを限定された権限で配信できる「Private Registry」など、コンテナでよく使われる用語についても解説されました。
一日目のハンズオン終了後は懇親会で乾杯!
ハンズオン終了後は、講師のsinmetalさん、fishさん、tora470さん、仙台市役所の荒木田さん・佐藤さん、TECH PLAY 運営事務局・スタッフを交えての懇親会。主催の仙台市役所の荒木田理さんの音頭で乾杯!参加者同士の交流も積極的に行われ、楽しい雰囲気で盛り上がりました。
二日目午前中はGoogle Kubernetes Engine ハンズオン
二日目はGoogle Kubernetes Engineについての講義から開始。Google Kubernetes Engineは、Kubernetes (k8s)をGCP上で、最適な環境でフルマネージドな提供を行うサービスです。k8sのデプロイの最小単位である「Pod」、Podを管理するコントローラ「ReplicaSet」などについて、機能や構成などが詳しく解説されました。
GKE利用時に出てくるGCPサービス「Compute Engine」「Cloud Container Registry」「Cloud Build」などについても説明があった後、実際にClusterを作成し、サンプルアプリケーションをGKE上で動作させるハンズオンを行いました。
午前中のハンズオンを終えた後は、事務局で用意したお弁当でランチ休憩となりました。
午後はGoogle App Engineハンズオンから開始!
午後は、Google App Engineのハンズオンから開始されました。Google App Engineは、Webアプリケーションを作成し、実行できるようにするPlatform as a Service(サービスとしてのプラットフォーム)です。
「サーバーのOSの設定やミドルウェアの設定をする必要がなく、SDKを利用して作成したApplicationをデプロイすれば、運用は基本的にGoogle任せにできる便利なサービスです」(sinmetalさん)
スタンダード環境とフレキシブル環境が用意されており、スタンダード環境はPython、Java、Go、PHP、Node.jsのプログラミング言語で書かれたアプリケーションをサポートし、豊富な無料枠があります。今回のハンズオンはスタンダード環境を使用します。
ハンズオンはsinmetalさんがGitHubに用意してくれたサンプルコードをデプロイしたり、HTMLを追加したりするコーディングやアプリケーションやプロキシの設定などを実践しました。
二日目最後はGoogle Cloud Firestoreハンズオン
GCPハンズオン最後のテーマは「Google Cloud Firestore」。Cloud Firestore はKey Value Store型のデータベースで、Realtime Sync機能とFirebase連携があるのが特徴です。ハンズオンではログインしているユーザのみが読み書き可能なメッセージボードを作りました。
二日間のハンズオンを終えた参加者の感想は?
ハンズオン終了後、参加者の皆さんに感想を聞いてみたところ、「今後の業務に役立ちそう」「GCPに対する理解が深まった」「今後も学んでいきたい」といったコメントを多数いただきました。
「Google Kubernetes Enginが業務システムのバックエンドに使えそう」
「Compute EngineとKubernetesが実際の業務でも大変使えそうなので興味を持ちました」
「なんとなく知っていた知識を、実際に体験を通して理解を深めることができた」
「講師、チューターの方の説明がわかりやすく、とても良かった」
「実際に現場でGCPを使用されている講師の方と懇親会では話ができたので、非常に参考になった」
仙台市では、今後もこうしたハンズオンや勉強会を開催していく予定です。参加してみたいと思った方は、ぜひ、仙台市のグループをチェックしてみてください。また、Google Cloud Platform(GCP)のユーザーグループでは、GCPUG仙台を立ち上げました。
こちらもぜひチェックしてくださいね!