見出し画像

Google Cloud Platformエンタープライズ設計ガイド vol.3

続きです。
 


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

GCPサービスの共有インフラストラクチャとして、2015年に公開された第5世代のDC内NW(通称Jupiter)は2分割帯域で毎秒1PBビットを超える通信速度を実現している。さらにSDN(Software-Difined Networking)による最新の仮想ネットワーク制御や世界中に張り巡らされたコンテンツ配信プラットフォームによる低レイテンシのコンテンツ配信が可能。
GCPのネットワーキングサービスは5つ。

①Virtual Private Cloud(VPC)
GCPリソースのための倫理的に分離された仮想ネットワークサービス。
②Cloud Load Balancing
HTTP(S)リクエストに対してグローバルな負荷分散、もしくはTCP/SSLやUDPプロトコルを使用するレイヤー4の負荷分散サービス。
(UDPプロトコル:TCPと同様にIPの上位プロトコルのトランスポート層で動作するプロトコル)
③Cloud CDN
世界各地に分散しているエッジポイントを使用するキャッシュサービス。クライアントからのHTTP(S)リクエストをクライアント近くにキャッシュ保存することで配信時間を短縮し処理コストを削減
④Cloud DNS
Googleのもつネットワークで提供される低レイテンシで品質の高いDNSサービス(DNS:Domain Name Systemの略で、 インターネット上で ドメイン名 を管理・運用するために開発されたシステム)
⑤Cloud Interconnect
自社オンプレミス環境からセキュアにネット接続するサービス

VPC

【外部IPアドレス】
通常、外部サービス向けのシステムを構築する場合、インターネット上のDNSに登録する必要がある。GCPでは一時的な外部アドレスをそのまま固定された外部IPに変更する機能が提供されている。
構築期間中に一時的な外部IPを利用していた場合でも本番リリース時に異なる外部IPを取り直す必要がないため非常に便利ではあるが、一時的なIPのまま使用し続けることがないように本番リリース前には必ず固定IPとして利用するためのプロモートが必要である。
外部IPにはリージョンIPとグローバルIPがある
リージョンIP:Compute Engineインスタンスやリージョン内のネットワーク負荷分散。
グローバルIP:HTTP(S)負荷分散やSSLプロキシ/TCPプロキシなどの複数リージョンにまたがる負荷分散処理を行うロードバランサとして利用可能。
GCPでは一つのグローバルIPを利用するだけで世界中のサーバへ負荷分散できる

【ネットワーク通信制御】
ネットワーク通信上り・下りでファイアウォール設定を行える。上りではこの設定はデフォルトではすべてが遮断されているため利用者自身で適切なルール定義が必要。一方下り通信はすべて可能となっているためVPCネットワークから外部への通信先制限が必要な場合、個別の設定が必要。
ファイアーウォールルール設定ではトラフィックルールの定義と同時に「タグ」という通信先のターゲットや通信先のリソースを設定できる。
タグはインスタンスに付与するラベルで、タグ付けすることによってファイアウォールルールで定義されたトラフィックのみを許可できる。これにより、Webサーバ、DBサーバなどの用途に応じたタグを用意することで、インスタンスのIPとは関係なくタグのみでネットワーク通信制御できる。
**
【VPCネットワークピアリング】**
異なるVPC間は通常ネット経由だが、これを使うとVPCネットワーク間でRFC1918のプライベート接続が可能になる(AWS VPC Peering機能相当)
接続するVPCのIPが重複しなければオスオフのVPCネットワークでピアリング設定するだけで利用できる。また、直接属されたVPC間ではGCPの内部負荷分散も利用できる。最大で25個の直接ピアリングの設定が可能。
(ただVPCネットワークをまたぐ通信はできない例VPCピアリング先→VPCネットワーク→別のVPCピアリング先はNG)

【禁止された送信ポート】
25.465.587番ポートでの送信接続はできない(これらのSMTPポートは不正利用の可能性が高いためGCPではデフォルトでブロックされている)

Cloud Load Balancing

常時秒間あたり百万リクエストものHTTP通信を裁く機能を持つ。HTTP(S)負荷分散とネットワーク負荷分散の2つが提供されている。

【HTTP(S)負荷分散】
クライアントからのHTTP(S)負荷分散を世界中のサーバへ負荷分散。
クライアントからのHTTP(S)リクエストを最も近いGoogleのPoP(Point of Presence)で終端され、クライアントのアクセス元に最も近いリージョンに配置されたバックエンドインスタンスに転送される。HTTPリクエストは80/8080ポート、HTTPSは443番のみ負荷分散サポートされている。
Google Load BalancingとGoogle Cloud CDNの併用により配信時間短縮と処理コストの実現を可能になる。(リクエストの近くにコンテンツをキャッシュに保存する機能)
また複数リージョンにまたがる冗長構成を組んでおくことでGCPのリージョンで障害が発生した場合でもGCPの別のリージョンでサービスが継続される。リージョン障害を想定したBCP対策など、高いか要請が求められるシステムでは活躍。

Cloud DNS

名前解決するためのDNSサービス。独自にDNSサーバやソフトウェアを管理する必要はなくゾーンとレコードをDNSで公開できる。可用性の必要なシステムでも利用可能な機能。

Cloud Interconnect

自社オンプレミス開発からGCP内のインスタンスに直接アクセスするサービス。Dedicated InterconnectIPsec VPNの2つのオプションがある。
Dedicated Interconnect:専用線で直接的な物理接続をおこなう。接続帯域は1本あたり10Gビット/秒となっているため自社オンプレミス↔GCPのハイブリッド環境や広帯域でのトラフィックが必要な際に有効
マルチクラウドによって複数のパブリッククラウドで運用しているような場合、GCPとその他のパブリッククラウドをVPNで接続する構成も考えられる。例えばAWSとGCPをVPNで接続するには、双方のパブリッククラウドでVPN設定を行いファイアウォール、ルーティング設定を行うだけで容易にVPNを確立できる。

5章 ビッグデータサービス

Cloud Pub/Sub:多対多の非同期メッセージングサービス/ストリーミングデータ読み込みなど
BigQuery:フルマネージドデータウェアハウス/データレイク・インタラクティブなクエリ分析など
Cloud DataFlow:バッチ・オンラインのデータパイプライン/ETL処理など
(ETL:Extract(抽出)Transform(変換)Load(格納)
の略で、データ統合時に発生する各プロセスの頭文字をとったもの)
Cloud Dataproc:Hadoop、Sparkのマネージドサービス/大規模分散処理など
Cloud Datalab:データ分析・可視化・機械学習のためのインタラクティブ分析ツール/インタラクティブなデータ分析・機械学習モデル構築
の5つがある。

独立で使用するシーンや、それぞれの特徴を合わせて併用するなど、用途によって対応。
例:データウェアハウスとしてBigQueryを使いながらCloud Dataprocで大規模分散処理を補う、など。

Cloud Pub/Sub

【主な利用方法】
ビッグデータサービスとして利用する場合、ストリーミングデータの受け口として配置し、バックエンドに配置したCloud DataFlowなどにデータを非同期で渡す役割を担うことが多い。
そのほかインスタンスはいつ落ちてもおかしくない、というパブリッククラウドの思想において可用性を高めるためにコンポーネントを疎結合にするアーキテクチャは一般的ではあるが、その実現に大いに有用。
GCPサービスに限らずHTTPS通信できる環境があれば導入できるためオンプレ環境やほかのパブリッククラウドで構築したアプリケーションにも比較的簡単に導入することができる。これにより可用性の高いハイブリッド・マルチクラウド基盤を構築することが可能である。

BigQuery

【主な利用方法】
クエリ実行結果を返すまでの所要時間がとても短く、アドホックな(特定の)分析を得意としている。またCLI(Common Language Infractructure :コンピュータやソフトウェアが利用者に情報を提示したり操作を受け付けたりする方法(UI:ユーザーインターフェース)の類型の一つで、すべてのやり取りを文字によって行う方式)やWebブラウザ上で簡単にクエリを実行することが可能でありそのクエリは慣れ親しんだSQLライクなものであるため、データアナリストがインタラクティブにデータ分析を実施する用途に適したサービスであるといえる。
それ以外にも何十億行ものデータに対して安価なデータ処理ができる点を生かし、Cloud Dataprocで大量の処理分散を実施する前処理としてデータを整形する用途としても使用される。

Cloud DataFlow

データ処理パイプラインサービス:入力ソースとしてデータを読み込ませ、事前に定義したデータ変換処理を実施し、返還後のデータを指定した場所に格納するまでの一連のオペレーションを意味している。

インプットデータファイル→(ルート変換/Read)→Pcollection(テキスト)→業から単語へ変換(コア変換ParDo)→Pcollection(単語)→複合変換(Count)→Pcollection(単語/文字数)→Pcollection(文字数)→ルート変換(Write)アウトプットデータファイル

のようにデータの集合体を表すPcollectionと処理を表す変換の2つをもちいて抽象化し一連の処理フローをパイプラインとしてまとめている。

主な利用方法
GCPサービスを組み合わせてデータ分析基盤を構築するとGCPサービス間のデータ授受が発生すらがこの際にはデータの加工や変換が必要なケースが想定される。Cloud DataFlowはデータの加工および変換処理の役割を担うためGCPサービス間でのリアルタイムなデータ授受を行うための橋渡し役として利用することができる。このような利用方法のためにGoogleが提供しているテンプレートを使用すると構築不可が軽減する。(推奨される併用のためのテンプレートは多く提供されている。

Cloud Dataproc

apache hadoop,sparkのクラスタを提供するフルマネージドサービス。オンプレミス環境やクラウドを利用した自前のクラスタよりも早く簡単に安く、構築できる。本来なら必要なインストール・設定・最適化・デバッグといった作業の大部分が省略できる。

【GPUの利用】
大量データに対する複雑な処理を高速で実施したい処理が増えているためGPUを接続したCompute engineインスタンスを利用することが可能。その際には専用ドライバが必要でプリエンプティブVMには利用できない点に注意。
プリエンプティブVM:compute engineの余剰キャパを利用する機能

【主な利用方法】

cloud storageコネクタ
cloud storage上のデータをHDFSに転送する事なく直接ジョブを実行可能。
(HDFS: 分散処理システムのApache Hadoopが利用する分散ファイルシステム。OSのファイルシステムを代替するものではなく、その上に独自のファイル管理システムを構築するもの。大容量データの単位時間あたりの読み書き速度(スループット)の向上に注力している。)
cloud storageに格納する事で格納性が高くなりクラスタがシャットダウンされた時もデータにアクセスできる。
 

Cloud Datalab

対話型で利用できるデータ分析及び機械学習ツール。OSSのデータ分析ツールjupyter notebookをベースとしたサービスでwebブラウザを利用してデータ分析や可視化、機械学習などの分析プログラミングをインタラクティブに実行できる。

またまた続きます。

N

私の常日頃の生活をベースに、皆さんの役に立てたり、探しているものを紹介できたらと思っています。今後もよろしくお願いします!