Google Cloudの用語&解説集 part.1

プログラミング学習帳 プログラミング

Google Cloudはとかく専門用語が多いです。一通りの用語を覚えていれば、適切なサービスを選び、そのサービスの使用にも役立ちます。用語集兼解説集ということでpart.4まであります。今回紹介するGoogle Cloudのサービスは “Compute Engine”のみです。

事前知識編

Load=負荷、Provisioning=予測。クラウド以前の利用者数増減による負荷の解決策。ピーク時の負荷を予測して、インフラを購入したりピークロード用のインフラを調達する。
Answer
必要なときにリソースをプロビジョニングまたはレンタルし、不要になったらクラウドに戻すこと。ピークロード・プロビジョニングの課題を克服するためにクラウドが生まれた。
Answer
地理的に近いゾーンをグループ化したものがリージョン(地域)である。
Answer
システムが継続して稼働できる能力のこと。世界中に複数のリージョンを持てば、一つの地域がダウンしても他の地域からアプリを提供できる。
Answer
低遅延のこと。レイテンシーとは、データ転送における通信の遅延時間のこと。リージョンによりユーザーに最も近い地域からサービスを提供できるため、ユーザーは低遅延を実現できる。
Answer
影響が及ぶ範囲のこと。リージョンにより世界の複数の地域にアプリを簡単に展開できる。
Answer
ゾーンを繋げているもの。ゾーン間のデータ転送速度を上げている。
Answer

Compute Engine編① Virtual Machine

Compute Engine

Google Cloudの提供するサービスの1つ。仮想サーバーのこと。クラウドにアプリをデプロイするには仮想サーバーが必要である。Compute engineでは仮想マシンのインスタンス(VM Instance)を作成でき、このインスタンスのライフサイクル(起動→停止→再起動→終了)を行える。仮想マシン=GCPにおける仮想サーバー。複数のVM instanceに対してロードバランシングとオートスケーリングを実装できる。

仮想サーバー(仮想マシン)

物理的なサーバーハードウェア上に複数の仮想的なサーバーを作成し、それぞれが独立して動作する仮想化技術を利用したサーバーのこと。通常、1台の物理サーバー上で複数の仮想サーバーを稼働させ、それぞれが独自のOSやアプリを実行できる。クラウドプロバイダーの保有する物理的なマシンにインターネット経由でアクセスして、その物理マシン上に仮想サーバーを作る。データセンターにずらっと並んでいる物理的サーバーのどれかを使って自分の望むサーバーを構築するイメージ。データを保存したり、アプリを動かしたりする。

VM Instance

Virtual Machine Instanceのこと。仮想マシン(=仮想サーバー)の分身であり、仮想サーバーそのものだと思えば良い。ゾーンやリージョンを設定できて、外部IPと内部IPを持つ。

オートスケーリング

サーバー負荷に応じて、自動的にクラウドサーバーの台数を増減させる機能のこと。

Preemptible VM(プリエンプティブル Virtual Machine)

短命で安価なcompute instanceのこと。Preemptible instanceを実行できる最大時間は24時間である。またフリークレジットが適用されない。割引方法の1つ。

スポットVM (Spot VM)

Preemptible VMの最新版。スポットVMには最大実行時間がない。それ以外は大体同じ。

instance template(インスタンス・テンプレート)

VMインスタンスのテンプレートを作成すること。個別にVMインスタンスの詳細を指定しなくて済むので、複数のインスタンスを作成する際に便利である。

スケールアップ / スケールダウン

仮想マシンのリソース(CPUやメモリ)を増加(減少)させること。スケールアップなら性能が向上する。スケールダウンなら余分なリソースを解放してコストを下げられる。

スケールイン(scale-in) / スケールアウト(scale-out)

“Scale in”とは、ロードが減ったときVMインスタンスの数を減らす。”Scale out”とは、ロードが増えた時VMインスタンスの数を増やす。

”仮想マシンにストレージをアタッチする”

データの取得/保存を特定の仮想マシンに行うこと。

Machine family

仮想マシンを実行するハードウェアのこと。”Machine configuration”で選ぶ。

Bootstrapping

VMインスタンスの起動時に何らかのソフトウェアをインストールしたり、OSパッチをインストールしたりするプロセスのこと。

startup script

VMマシンの起動時にスクリプトを実行し、Apacheサーバーを自動的にインストールする。

custom image (カスタムイメージ)

OSパッチとソフトウェアがプリインストールされたもの。VMインスタンスの起動時に時間がかかる問題を解決することができる。

イメージのハード二ング

企業のセキュリティ標準に準拠したVMインスタンスを作成し、そこからイメージを作成するプロセスのこと。セキュリティ標準に準拠したイメージになる。

custom machine type

既存の定義済みVMマシン・タイプがワークロードに十分でない場合、ニーズに合わせてカスタマム・マシンタイプを作る。custom machine typeでは、vCPU数(コア数)やメモリ量(GB)、GPUを必要に応じて増減させられる。

Compute Engine編② ネットワーク

SSH接続

Secure Shellの略。ネットワーク経由でサーバー(ほかのコンピュータ)に接続して遠隔操作するための仕組み。通信内容は全部暗号化される。暗号化されないtelnetより強力。黒いカバンで手紙を届けるようなこと。

HTTPサーバー

つまりwebサーバーのこと。

HTTPトラフィック

許可すると外部から仮想マシン上で実行中のアプリケーションにアクセスできる。

Firewall

潜在的に悪意のあるネットワークトラフィックをフィルタリングするもの。

プロトコル

通信分野において異なる機器やアプリ間で互いに通信できるようにするための原則。プロトコルは通信形式やデータ構造を定めており、プロトコルがあるから異なる機器やソフトウェア間で相互作用できる。例えば 通信プロトコルの1つであるTCP/IP (Transmission Control Protocol/Internet Protocol)はデータをパケットに分割し、それを送信元と宛先の機器間で信頼性を持って転送するための規則や手順を提供している。ほかにも HTTP (Hypertext Transfer Protocol)や SSL (Secure Sockets Layer)など、特定の通信用途に特化したプロトコルが存在する。尚、SSLは脆弱性が発見され、後継バージョンである TLS(Transport Layer Security)が主流になった。

ポート番号

ネットワークにおいて特定のサービスが通信するために割り当てられた識別子。通信がどのプロセスやサービスに向けられているかを示すためにポート番号が使用される。ポート番号は16ビットの整数で0~65535まで番号がある。Well-known PortsとRegisterd Portsの2種類の主要なカテゴリーがある。前者は一般的なプロトコルで0~1023まである。HTTPなら80、HTTPSなら443である。後者は特定のサービスやプロトコルに割り当てられており 1024~49151まである。

プロキシ(proxy)

クライアントとサーバーとの間に立ち、クライアントからのリクエストやサーバーからのレスポンスを中継する中間装置。通信の管理やアクセス制御に役立つ。HTTPプロキシはHTTPトラフィックを中継するためのプロキシ。クライアントが直接ウェブサーバーと通信する代わりに、プロキシがクライアントとサーバーの中継を行う。SSL/TLSプロキシは暗号化された通信を中継するためのプロキシ。クライアントとサーバー間のSSL/TLS暗号化を解除してその内容を認識したりする。

リクエストパス(request path)

クライアントがウェブサーバーに対して送信するHTTPリクエスト内の一部。HTTPリクエストは、クライアントがサーバーに対して何を要求しているかを伝えるもので、その要求の中でリクエストパスが指定される。リクエストパスは通常、ファイルやディレクトリへのパスを指定する。一般的にURL内のパスの一部として表現され、ウェブサーバーはこれを解釈して要求されたリソースを特定する。たとえば、/path/to/resource みたいなものがリクエストパス。

トラフィック

デフォルトのインターネットからのトラフィックを選ぶ。意味は〇〇。

Backend Configuration

バックエンドは入ってくるトラフィックをリダイレクトする場所だ。今回、バックエンドはMIGである。すべてのトラフィックをマネージド・インスタンス・グループに送る。

Host and Path Rules

トラフィックをバックエンドにリダイレクトする方法を示すルールを設定する。

Frontend Configuration

フロントエンドはトラフィックを受け取る場所である。フロントエンドはロードバランサーのURLを持つので、 基本的にフロントエンドであるロードバランサーにトラフィックが集まり、設定したルールに基づいて、 インスタンスグループであるバックエンドにトラフィックがリダイレクトされる。

Compute Engine編③ ハードウェア

ハードディスク

HHDやSSDのこと。パソコンなどのデータを保存する記憶装置のこと。

アタッチ

ストレージ(記憶装置)を割り当てること。”どこにそれを保存するか”関連だなと思えば良い。

永続ディスク(Persistent Disk)

不摘発性のディスク。VM を停止しても保存されたデータが削除されない性質を持つ。永続ディスクはVM からデタッチ (取り外し) が可能であり、別の VM にアタッチ (取り付け) することも可。

スナップショット

永続ディスクのコピー。

Compute Engine編④ ロードバランシング

ロードバランシング

複数のサーバー間で、負荷がかからないように均等に処理を分散して割り当てること。複数のリージョンにあるVMインスタンス間でトラフィックを分散するために使用される。クラウドのロードバランシングはグローバルである。異なる地域(region)に配置されたVMインスタンス間で負荷を分散することができる。

HTTP(S)ロードバランサ―

HTTP(S)アプリやウェブアプリや REST APIでは基本的にほぼすべてこれを利用している。これはHTTPとHTTPsアプリケーションのためのレイヤー7のロードバランシングである。インターネット向けのロードバランサーや内部向けのロードバランサーを作ることもできる。

TCPロードバランサー

これはTCPやSSLプロトコルを使用するアプリケーションのロードバランシングのためのレイヤーである。一般的に、 ゲーム・アプリケーションは高い性能を必要とする。TCPやSSLを使ったロードバランシングのためのレイヤーを使うのはそのときだ。

UDPロードバランサー

UDPは、 UDPプロトコルを使用するアプリケーションの負荷分散のためのレイヤーである。UDPロードバランシングの制限のひとつは、単一リージョンにしかできないということだ。マルチリージョンのUDPロードバランサーを作成することはできない。

Compute Engine編⑤ IPアドレス

IPアドレス

ネットワーク上の機器に割り当てられるインターネット上の住所のようなもの。ネットワークに接続する際、スマホやPCといった機器に番号が割り振られる。データの送信元や送信先を識別できないとデータを送受信できないが、子の識別にIPアドレスが使われる。IPアドレスで通信相手を指定している。192.168.0.0みたいにピリオドによって4つのブロックに区切られるものがIPv4。

外部IP

インターネット上のさまざまな機器からあなた(私)を見つけるための番号のこと。VM instanceの場合は、インターネットからこの仮想マシンに接続するためのIPのこと。startやstopするたびに外部IPの値は変化する。”External IP Address”。

内部IP

接続されているすべてのネットワーク機器に対してルーターが割り当てる番号。アクセスを制限して保護することもできる。要求される番号を聞いて、その番号に繋げる処理をする。startしてもstopしても内部IPの値は変化しない。仮想マシンが作成された特定のネットワーク内でのみ使用できる。特定のネットワーク以外では使用できない。”internal IP Address”。

固定IPアドレス(静的IPアドレス)

ユーザーは外部IPを使ってアクセスしてくるが、外部IPの値は一定ではない。そこで、仮想マシンに固定IPアドレスを与えることでこの課題を解決する。つまり静的IPアドレスは、仮想マシンに割り当てられる恒久的な外部IPアドレスのこと。英語では”static IP Address”。

パブリックIP (public IP)

インターネット上で公開されていること。ITにおいて publicとかprivateの表現が出てきたら”公開”か”非公開”かを設定するもので間違いない。Githubのpublic/privateもそういう意味。

プライベートIP (private IP)

特定のネットワーク内であり、インターネット上には公開されていない。

Compute Engine編⑥ OS

オペレーティング・システム(OS)

“Boot disk”で仮想マシンにどのOSを入れるか選ぶ。DebianやUbuntuなどがある。コンピュータ全体の動作を管理制御する役割を持つ。

プレミアム・イメージ

有料のOS。Red Hat Enterprise Linux (RHEL)やUbuntu Pro、 Windows Serverなど。

BYOS (Bring Your Own License)やBYOS(Bring Your Own Subscription)

ライセンスを既に持っている場合、それを再利用してCompute Engineを使ってVMを作成できる。

Compute Engine編⑦ 割引方法

持続的使用割引

請求月の大部分でVMインスタンスを稼動させた場合に適用される自動割引のこと。何もしなくても勝手に適用される。一部適用対象外となるサービスもある。マシンのタイプがE2やA2の場合には持続的使用割引が適用されない。

コミットメント割引

特定の仮想マシンを長期間(1年や3年)必要とする場合に受けられる割引。この割引を受けるためには手続きが必要であり、途中でキャンセルできない。

Compute Engine編 その他

フォールトレランス(fault tolerance)

問題が起こる前提で「ヤバいことになったら、どうする?」を想定して備えること。もしくは、問題が発生した際に機能や性能を制限することなく動かし続けるための備えのこと。

ソールテナント・ノード(sole-tenant node)

クラウド事業者の物理サーバーを占有できる。ある顧客専用のハードウェア上の仮想化インスタンスである。sole-tenantは単独所有という意味。

SLA(Service Level Agreement)

ユーザーがサービスを提供する者との間で、サービスの品質について合意する契約のこと。

Affinity label(相性ラベル)

新しい仮想マシン・インスタンスを作成し、 そのインスタンスを特定のnode groupにデプロイしたい場合は、必ずaffinity labelを割り当てる。”node template”で設定する。

Compute Engine編⑧ Managed Instance Group

インスタンスグループ

単一のエンティティとして管理される仮想マシン(VM)インスタンスのグループ

マネージド・インスタンス・グループ(MIG)

テンプレートを使用して作成された同一のVMであり、同じmachine type, image, configurationを持っている。

stateful MIG (ステートフル)

データベースのようなものを作成する場合は statefulを選ぶ。

stateless MIG(ステートレス)

ウェブアプリや REST APIでは通常 stateを持たない (statelessを選ぶ)。データが永続化されないままインスタンスが削除されることを避けられる。

マネージドリリース(Managed Release)

ダウンタイムなしに、 あるバージョンから別のバージョンへ移行することができる。

ローリングアップデート

段階的に新しいバージョンをリリースする。一度に何パーセントかのインスタンスを新しいバージョンに更新可能である。

カナリアの再配置(カナリーデプロイメント)

現在稼働している10のインスタンスのうち、2つのインスタンスを選ぶことができる。この2つのインスタンスでテストして、他のインスタンスすべてに一度に展開できる。

アンマネージド・インスタンス・グループ(UIG)

異なる設定のVMを持つグループ。オートスケーリングやオートヒーリングのような機能はなく、異なる種類のVMが必要な場合を除いて推奨されない。

Compute Engine編⑨ Managed Instance Group – autoscaling

オートスケーリング(autoscaling)

インスタンス・グループを使用するユーザー数に基づいてcompute instance数を増減できる。最大数と最小数を予め決めておく。

オートスケーリング・メトリクス

オートスケーリングでは負荷に応じてインスタンス数を自動的に調整する。最小インスタンス数や最大インスタンス数を設定するが、どんな基準でオートスケールするかがオートスケーリング・メトリクスだ。⑴CPUの使用率に基づいて行う方法、⑵ロードバランスの使用率に基づく方法、⑶Google Cloudが提供する監視ツール(=スタックドライバー)を使う方法がある。

クールダウンタイム (cool-down period)

オートスケーリング・メトリクスをもう一度見る前に待つ時間。オートスケーリング条件が設定された後、メトリクスをもう一度見るまでにどのくらい待つか。これによって、 スケールアップやスケールダウンが頻繁に起こらないようにすることができる。

Predictive autoscaling

Google Cloudは先週または数日前のデータを見ることができ、そのデータを使って予測自動スケーリング(Predictive autoscaling)を行う。

Autoscaling schedules

スケジュールに基づいたオートスケール機能である。「この時点までは、 この特定のものに対するインスタンス数を増やし、以後はインスタンス数を減らす』とスケジュールできる。

Compute Engine編⑩ Managed Instance Group – auto healing

オートヒーリング(auto healing)

ヘルス・チェックを設定することができ、ヘルス・チェックが失敗した場合、特定のインスタンスは自動的に新しいインスタンスに置き換えられる。

ヘルスチェック

マイクロサービスのインスタンスの1つが正しく動作していない場合、コンテナのオーケストレーションでそれを識別し、 動作するインスタンスに置き換えることを望む。

ヘルス基準(Health criteria)

1分ごと、 あるいは10秒ごとにヘルスチェックを実行したいとする。それが”check interval”で設定できる。”timeout”はリクエストが失敗とみなされるまでの待ち時間。”Healthy threshold”(基準点)はVMインスタンスをヘルシーとマークする基準だ。X回連続して障害が発生しなければ健全(healthy)であると判断するか。

スケールインコントロール(scale-in controls)

「5分間で10%以上、 あるいは3インスタンス以上スケールインしたくない」などを設定する。”Scale in”とは、ロードが減ったときVMインスタンスの数を減らす。”Scale out”とは、ロードが増えた時VMインスタンスの数を増やす。ユーザーが沢山いて100個のインスタンスがあったが、ある時間でユーザー数が突然減ったとしても、インスタンスの数をいきなり5個や10個にしたくない。段階的にVMインスタンスを増やしたり減らしたりできる。

初期遅延

ヘルスチェックを実行する前に、 アプリが初期化されるまでどのくらい待つべきか。

Compute Engine編⑪ Google Managed Service (Related)

Google Kubernetes Engine

Google Cloudが提供する Managed Kubernetes Service。

Cloud Storage

Google Cloudが提供するオブジェクトストレージ。ファイルを保存し、そこからイメージを作成することもできる。

Cloud Logging

Google Cloudのマネージド・ロギング・サービス。ログを記録する。

コメント

タイトルとURLをコピーしました