Google Cloud Platform入門を読んでみました


# プログラマのためのGoogle Cloud Platform入門

今まであまりインフラは触ったことがなく、GCPは自分のローカルで少し試してみたことしかなかったのですが、業務でGCPを使うことになったため、こちらを読んでみました。



*構成

  1. GCPの概要
  2. Webアプリケーション実行基盤の構築
  3. 止まらないWebアプリケーション基盤の構築
  4. コンテナ実行環境でのマイクロサービスアーキテクチャ
  5. 機械学習を用いたGAEアプリケーション
  6. 付録


*概要


1. GCPの概要


GCPの代表的なサービスや、クラウドサービスの種類、GCPの歴史、GCPの全体像など基本的な説明が載っています。また、アカウント登録からプロジェクトの作成といった基本的な操作について、実際にコンソール画面の画像付きで説明があるので、非常にわかりやすかったです。
gcloudコマンドや、画面からコマンドを実行するCloud Shellの使い方についても解説があるので、全く触ったことがない人でもつまづかずに操作できるかと思います。

GCPの主要なサービスについてです。
  • GCE (Google Compute Engine)
    仮想マシン。ゲストOS上にアプリケーションをインストールしてデプロイし、仮想マシンを用いて従来型のアプリケーション実行環境を構築する。

  • GKE(Google Container Engine)
    Kubernetesを用いたコンテナクラスタ。Dockerイメージからコンテナをデプロイし、コンテナによるマイクロサービスの実行環境を構築する。

  • GAE(Google App Engine)
    独自のアプリケーション実行環境。アプリケーションコードをデプロイし、スケーラビリティと開発効率が重視されるアプリケーションの開発、実行環境として使う。


2. Webアプリケーション実行基盤の構築


リクエストやレスポンス、HTTP通信の仕組み、ポート番号、データベース、トランザクションといったWebアプリケーションの基礎から丁寧に解説されています。
また、サーバ仮想化技術や、Webアプリケーションで使う主なサービスについても説明が載っています。
  • Google Compute Engine
    仮想マシンの起動が早く、分単位で課金されるので低コストで運用できる。
    ライブマイグレーション技術(ハードウェアのメンテナンスを意識せずに仮想マシンを稼働し続けられる)が適用されているため、可用性が高い。

  • Google Cloud Strage
    高い可用性と耐久性を持つオブジェクトストレージ。
    ユーザーがどこにいても高速にアクセスできる。BigQueryなどのデータ処理サービスのバックエンドストレージとして利用できる。

  • Google Cloud SQL
    MySQLを提供するフルマネージドサービス。バックアップやメンテナンスも自動で行われる。

ケースに合わせた具体的なWebシステムのアーキテクチャが紹介されているので、どのサービスを使えば良いのかといった大枠を理解することができます。
また、サンプルコードを使って実際に画面で操作する方法が載っているので、手順通りに進めればWebシステムを一通り構築できるようになっています。
GCEのマシンタイプなど設定する項目についても詳しく説明が載っていおり、一通りやると理解を深められるかと思います。


3. 止まらないWebアプリケーション基盤の構築


GCPネットワーク構成を学ぶ前提として、IPアドレス、ネットワークの階層、通信プロトコル、ファイアウォール、DNS、負荷分散といった基本的なネットワーク技術についての説明が載っています。
そのあとにGCPでの仮想ネットワークについて詳細な説明が載っており、GCPでのファイアウォール機能の設定方法や、Cloud Load Balancingによる負荷分散機能、Cloud DNSによるドメイン名とIPアドレスの変換機能について書かれています。
こちらについてもサンプルコードを使って実際に試してみることができます。


4. コンテナ実行環境でのマイクロサービスアーキテクチャ


Docker、Kubernetesの基礎についての説明が載っています。
Dockerを使うことにより、インフラの設定などを自動化し、開発から本番環境へのデプロイを効率的に行うことができます。
Dockerfileを使って実行モジュールを含んだDockerイメージをビルドすると、このイメージを共有することでいつでも同一の環境を再現することができるようになります。
Dockerイメージには、アプリケーションの実行に必要なコンポーネントがまとめて含まれているので、テスト環境と本番環境といった環境の違いによって発生する問題を避けることができます。(この特性をポータビリティという)
このことにより、継続的インテグレーションや継続的デリバリーが可能になり、機能追加ごとにアプリケーションをデプロイするアジャイル型の開発スタイルにも役立ちます。

ちなみに、インストールや環境設定をすべてコードで定義し、自動化するためのツールをプロビジョニングツールと呼びます。
  • OSの起動を自動化するツール --> Kickstart、Vagrantなど
  • OSやミドルウェアの設定を自動化するツール --> Chef、Ansible
  • 複数サーバの管理を自動化するツール --> Serf、Capistrano、Kubernetes

また、Kubernetesによるコンテナオーケストレーションについても詳しく記載されています。
  • クラスタリング
    複数サーバを束ねて、利用者や外部システムに対して1台のコンピュータであるかのようにみせる技術をクラスタリングといいますが、クラスタ化されたサーバ群は物理的な構成を意識することなく透過的な管理ができます。
    1台のサーバに障害が発生しても、システム全体が止まることなく処理の続行や修理をすることができます。

  • コンテナオーケストレーション
    分散環境でDockerコンテナを稼働させるには、コンテナの起動停止だけでなく、ホスト間のネットワーク接続やストレージの管理、スケジューリング機能、監視などが必要になります。このような機能を備えてコンテナを統合管理できるツールのことをコンテナオーケストレーションツールと呼びます。
    ツールにはDocker Engine、Apache Mesos、Kubernetesなどがあります。

コンテナ環境で利用する主なサービスには下記があります。
  • Google Container Engine
    Dockerコンテナを管理するフルマネージドなサービス。内部的にKubernetesを利用しており、コンテナをクラスタにスケジューリングして自動的に管理することができる。

  • Google Container Repository
    DockerイメージをGCPのプロジェクトで管理できるプライベートなレジストリサービス。Dockerコマンドを使ったアクセス、Dockerイメージの保存ができるといった特徴がある。

  • Google Cloud Datastore
    複数のサーバにデータを分散して保持することで、大量データの保存ができるNoSQLデータベースサービス。テーブルの構造を後から容易に拡張することができるといった特徴がある。

この章でもコンテナを使ったアーキテクチャの例が載っています。
また、サンプルコードを使って実際にGKEによるコンテナクラスタの構築を試してみることもできるので、DcokerやKubernetesの理解も深まります。


5. 機械学習を用いたGAEアプリケーション


GCPの機械学習関連サービスについての概要や、サンプルコードを使った実際の操作などが載っています。APIを呼び出せば簡単使うことができるので、非常に便利だと感じました。実際に試してはいないですが、時間が空いたときに試してみたいと思います。


6. 付録


Stackdriverによるアラートポリシーの設定や、グラフやログに確認、監視といったシステム運用方法についての説明が載っています。実際の画面と共に操作方法も詳しく載っているので、非常にわかりやすかったです。
また、Cloud IAMによるアカウント管理方法についての説明も載っています。


*所感


コンソール画面の画像付きで操作方法が載っているので、GCP初心者の私としては非常にわかりやすかったです。また、サンプルコードを使って実際にすぐ試してみることができるので、理解を深めることができました。
インフラは今までの業務であまり触っていなかったため、ネットワーク技術など忘れている部分が多々ありましたが、この書籍で丁寧に解説が載っていたので、勉強になりました。
プログラムは書いてきたけれどインフラはあまり触ったことがない人向けに、入門として最適な1冊かと思います。


Previous
Next Post »

人気の投稿