BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【GCP】GCPクイックスタートガイド① -そもそもGCPって? クラウドサービスって?-

こんにちは!
BFT名古屋支店の佐野です。

突然ですが今回から佐野が勝手に進めるブログプロジェクト「GCPクイックスタートガイド」を始めていきます。
GCPクイックスタートガイドは主にGCPを初めて触る、あるいは触ったばかりという方々に向けた、GCP活用の初期のあれこれを一連のシリーズとしてお話し、振り返って見れる資料とする(したい)ものです。
ご覧いただいている方々にとって有益なものとなるよう、尽力していくのでどうぞよろしくお願いいたします。
と言ってもいつもの記事と方向性ほぼ同じかもしれません。

さて、この記事にたどり着いた人には、職場での業務中、あるいは研修やプライベートな会話の中でGCPという単語を聞いて、GCPとはなんぞや?と調べていた人もいるかと思います。
なので最初の第一回目は最も根っこの所。そもそもGCPとはどういうものなのかということをお話していきます。


GCPって何? GCPのサービスと、できること

GCPGoogle Cloud Platformといい、一言で言えば「Googleが提供するクラウドサービス」です。

まずここでのクラウドサービスとは、従来は手元のコンピュータで利用していたデータやソフトウェア、他ネットワークインフラなどの各種機能をインターネット経由で利用できるようにするサービスを指します。
クラウドサービス自体も難解なものと思われがちですが、実は既に広く一般化し、それと知らず使われてすらいるものです。
例えばもっとも単純で身近なクラウドサービスに、DropboxやBoxの他、One DriveやGoogleドライブといったオンラインストレージサービスが挙げられます。
オンラインストレージサービスはインターネットからアクセスできるサーバのディスク領域を貸し出し、必要な時にアップロードとダウンロードを行えるサービスを提供する列記としたクラウドサービスであり、現在はクラウドストレージと呼ばれることもあります。

個人・企業の利用者とクラウドサービスの位置関係

ではGCPも似たようなものかと聞かれれば、似たようなものではあるがもっと幅広いものであると返すことになります。
ここから改めてGCPでできることをお話していきましょう。


GCPクラウドサービスとして提供している機能やサービス

GCPは単一のサービスではなく、Googleが提供するいくつものクラウドコンピューティングサービスの総称です。
GCPには様々な用途に用いることができるサービスが存在しており、ユーザはそのすべて、あるいはいくつかを使ってGCP上で処理や作業の実施、システムの構築を行ないます。
なお、GCPに属するサービスはすべて従量課金制を取っており、GCPという範疇の中で一律に管理されます。

その中から代表的な機能やサービス、それを利用する例を以下に並べます。


コンピューティングリソースの提供

GCPを活用する時にまず利用を検討するだろうサービスが、仮想マシンやコンテナといったコンピューティングリソースを作成できるサービスです。
GCPでは仮想マシンを作成できるサービスとして「Compute Engine」が用意されています。
Compute EngineはLinuxおよびWindowsベースの仮想マシンを作成でき、CPU とメモリ使用量に応じて、最適な仮想マシンが提案されます。
また長期的なコンピューティングリソースの専有を必要としないなら、GCPの共有コンピューティングリソースを間借りしてアプリケーションを関数を実行可能なサーバーレスコンピューティングサービス「Cloud Functions」も活用できます。

ストレージサービス

ただデータや画像、動画などを格納するための場所が必要というだけなら、わざわざ仮想マシンを作成する必要はありません。
GCPではオブジェクトストレージサービス「Cloud Storage」(GCSとも呼ばれます)が提供されており、単にデータなどを格納するならばこちらを利用するのが一般的です。
Cloud Storage内に格納されているデータはオブジェクトという単位で管理され、 ストレージ上ではその内容を編集したり変更したりはできません。
そのため単なるクラウドストレージサービスとは異なり、主に以下の用途で使われます。

  • 画像や動画など、変更がなくサイズが大きいファイルの保存
  • 頻繁にアクセスされることのないファイルのバックアップ
  • 非構造データ用のデータレイク
  • システム間のデータの受け渡し

GCPをシステム構築で利用する場合、特に「ファイルのバックアップ」や「システム間のデータの受け渡し」用途での利用はよく検討されます。

ちなみに冒頭で挙げたGoogleクラウドストレージサービス「Googleドライブ」はGCPのサービスではありません。

データベースリソースやサービスの提供

データベースを構築する場合、物理環境では他のサーバと同じようにデータベース機能専用にサーバを構築することとなるでしょう。
GCPにおいてもそのようにデータベースサーバを構築することができますが、GCPではデータベースに特化したクラウドサービスがいくつもあります。
特にスタンダードと言えるのがリレーショナルデータベースサービスの「Cloud SQL」であり、マネージドなデータベース仮想マシンを簡単に作成できます。
「Cloud SQL」の場合はデータベースエンジンとしてMySQLPostgreSQLMicrosoft SQL Serverが利用可能で、これらを利用するデータベースをGCP上で構築するアプリケーションやシステムで使う場合はほぼ使うこととなるであろうサービスと言えます。

ネットワーキングサービス

GCP上でアプリケーションやシステムを構築する場合、完全に単一のリソースを使い、ネットワークのない閉じた環境で運用するということはありえません。
必ず複数のリソースをネットワークで連携し、また内外問わない利用者がアプリケーションやシステムにたどり着く間口を用意することになるでしょう。
GCPでは仮想ネットワークを構築することで物理構築と同等以上の連携をアプリケーションやシステムで取ることができます。
ファイアウォールやロードバランサも仮想ネットワーク上で設置、設定することができ、物理ネットワークよりもセキュアで柔軟なネットワーク構築を簡単に行えます。

アイデンティティとアクセス管理

GCP上でアプリケーションやシステムを構築して運用をしていくといった時、それに関わる人間が誰か一人だけということはあまりないでしょう。
完全に個人で作り上げ、運用するようなものでないかぎり複数の人間からなる集団あるいは組織、会社で動かしていくことになるはずです。
そのような時、その集団に属する全ての人間が役割や役職に関わらずアプリケーションやシステムの全てを操作したり変更できたりしてしまうのは間違いや事故の原因になります。
GCPでは「IAM」によって個別のユーザーアカウントの作成、ロールベースのアクセス管理を行えるため、状態監視などシステムの変更を必要としないチームと障害時や変更時の対応を行なうチームとで権限を分けるといった仕組みが簡単に実装できます。

モニタリングとログ

GCPで作成したリソースやアプリケーションは「Cloud Monitoring」で基本的な監視を行なうことができます。
具体的には、仮想マシンであればCPUやディスクの使用率やネットワークIO、Cloud StorageであればAPIリクエスト数や総使用バイト数を取得・監視できます。
取得した値や情報は指標(メトリクス)といい、Cloud Monitoringではこの指標を閾値としたアラートの設定を行なうことができます。
またGCP内のリソースやアプリケーションのログは「Cloud Logging」で収集でき、収集したログをCloud Monitoringで監視してアラート設定することも可能です。

オーケストレーションと管理

オーケストレーションとは、システムやアプリケーション、およびサービスにおける設定や管理、調整の自動化を意味します。
GCPではこのオーケストレーションを利用する仕組みのひとつである、コンテナオーケストレーションを実装できる「Kubernetes」が用意されています。
ここでのコンテナは「アプリを動かすための仕組みをひとまとめにした環境テンプレート」と言うべきものであり、ひとつのコンテナを実行するなら自動化の必要なく運用することも可能ですが、多数のコンテナを組み合わせる場合においてはその管理が煩雑となり、人の手に負える範囲を超えることがままあります。
そこで「Kubernetes」を利用したコンテナオーケストレーションを行なうことで、運用負担を増やすことなく“既存する(させた)ひとつの実行環境を手早く移植できる”コンテナの利点を最大限に生かせます。
この他、自動スケーリングやコンフィギュレーション管理など、アプリケーションのデプロイと管理をGCPの機能を使って簡素化することもできます。

セキュリティサービス

GCPで構築されたシステムやアプリケーションを第三者からの攻撃から守るサービスとして、様々なセキュリティ要素に応じたサービスがそれぞれ提供されています。
以下はその代表的とも言える要素と対応サービスです。

  • データの暗号化:「Cloud Key Management Service (KMS)」でクラウド上のデータを暗号化する暗号化キーを作成し、利用と管理が行えます。
  • 脆弱性スキャン:「Cloud Security Scanner」を利用するとウェブアプリケーション脆弱性を自動的にスキャンし、報告を行ってくれます。
  • DDoS対策:DDoS攻撃からアプリケーションを保護するためのサービスとして「Cloud Armor」があり、DDoS攻撃を自動的に検出して攻撃を緩和するほか、多様なWAFルールによってアクセス制限を強めたり、特定のIPからのみアクセスできるよう制限できたりします。

区切りとして

ここまでGCP自体の大まかな解説とGCPが提供しているサービスについてお話しましたが、実はここまでの話はGCPとよく比較されるAWSやAzureといったクラウドサービスとも共通するものでした。
それらのクラウドサービスもGCPとほぼ同様の機能を持ち、できることも似通うため、それらとGCPは一体どこがどう違うのかという点はよく問われます。
次回はそういった「GCPと他のクラウドサービスの違い」をお話していきます。

【次回】

bftnagoya.hateblo.jp