pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

Google Cloud Platformメモ

GCP概要

www.topgate.co.jp 

www.topgate.co.jp 

  • 利用するにはアカウント作成が必要
  • プロジェクト単位で課金やユーザー管理を行う
  • コンソールでプロジェクトの管理をする
  • IAM は Identity Access Management
  • プロジェクトにアクセスできるユーザーの定義と、ロールの設定を行うことができる
  • ロールはデフォルトで用意されているもののみが利用可能でありカスタマイズ不可
  • Repositoriesは無料で利用できるGCP内で利用可能なプライベートGitレポジトリ
  • Google Cloud Shellは無料で利用できるGoogle Cloud SDKGoogle App Engine SDK がビルトインで用意された Linux 環境
  • 無料トライアルあり
  • 有料アカウントに手動でアップグレードしない限り、課金されることはない
  • 課金を有効にしても制限設定可能

 
 

Google Compute Engine(GCE)概要

www.topgate.co.jp

  • AWS の EC2 に相当するサービス
  • 特徴はGoogle が実際に運用環境で使用している強力なインフラの上で動く点
  • 高いネットワーク性能が期待でき物理的にセキュアな環境に置かれる
  • 長く稼働するインスタンスには自動的に値引きを適用する、ストレージや CPU の性能が高いため、他社に比べ性能あたりの単価は割安となる
  • ブラウザから操作できるコンソールがシンプルでわかりやすく、インスタンスの立ち上げや削除といった操作は非常に直感的に行える。
  • Google Cloud SDKを使えば、コンソールと同様の操作をコマンドラインからも実行可能
  • SSHでログインするにはCloud SDK の機能である ”gcloud compute ssh” が便利
  • Cloud SDK のサイトからCloud SDKをローカルPCにインストールする必要あり
  • gcloud compute ssh コマンドを使うとインスタンス名で ssh アクセスすることができ、IP アドレスを調べることなくログイン可能

www.topgate.co.jp

 
 

Google App Engine(GAE)概要

www.topgate.co.jp

  • Google が提供するPaaS
  • 2008年4月にサービス開始した古株のPaaS
  • 現在はPythonだけでなくJava, PHP, Go をサポート
  • セールスポイントは自分のアプリケーションを Googleインフラストラクチャー上で動かすことができる点
  • トラフィック増大と共に勝手にスケールする
  • Web アプリケーション運用する場合、第一選択肢に入れるべき

 
 

Cloud Datastore概要

www.topgate.co.jp

  • MongoDB や RethinkDB のようなドキュメント志向NoSQL データベース
  • アトミックなトランザクションをサポートしドキュメント数のスケールや高可用性を備える
  • データは暗号化され保存されるため、運用側のグーグルも、内容がわからないセキュア設計
  • 公式ドキュメントは以下
  • Entityは保存されるドキュメントのこと。リレーショナルデータベースの行に相当。
  • KindとはObject に付与するカテゴリー。リレーショナルデータベースの Table に相当
  • Google App Engine と Cloud Datastore を使えば、簡単にデータベースを利用したアプリケーションを開発可能

 
 

Google Container Engine (GKE)概要

www.topgate.co.jp

  • Google が開発したオープンソースKubernetes をベースとしたコンテナ環境
  • GUIで管理可能
  • Kubernetes は1つ以上のコンテナから構成されるクラスターの自動的な管理やスケールを行うオーケストレーションツール
  • 類似システムはMarathon やDocker Swarm
  • サービス構成や各役割を持ったクラスターを定義し自動的に管理することでマイクロサービス環境を実現
  • コンテナとしてDocker利用
  • サービスがどのようなコンテナで構成されるか定義すれば、コンテナの立ち上げ、モニタリング、ロードバランシング、サービス自己修復などが可能
  • Podは最小管理単位。
    • 1つ以上のコンテナを含む。
    • 例)nginx が動作する Pod。単一の役割を担う。
  • ReplicaSet は複数の Pod を組み合わせてアプリケーション機能を実現したもの
  • Deployment はReplicaSet を管理する。
    • サービス無停止でアプリケーションのアップデートを実現。
  • ServiceはDeployment に外部からアクセス可能な IP アドレスを付与しアクセス可能にしたもの
  • クラスタはServiceが複数動く環境
    • 1つの Master と複数の Node から構成
    • Node はコンテナを動かすサーバー
    • Master はNode を管理しスケジューリングやオートスケールをする
  • Kubernetes詳細は以下URL参照
  • 概念は以下(?)
    • Kubernetes > クラスタ > Service > Deployment > ReplicaSet > Pod

www.topgate.co.jp

  • Container Registry はGCP のサービスとして提供するプライベートDocker registry
  • プロジェクト外からはアクセス不可
  • Jenkins や CircleCI, drone.io といったCI サービスとの統合をサポート
  • CI サーバーでビルドが通ったら自動的にコンテナイメージをデプロイする継続的デリバリーに使用可能

 
 

Cloud Shell概要

www.topgate.co.jp

  • どんな PC でもブラウザさえあれば GCP の操作や開発を可能にする。ローカルに開発環境の立ち上げ不要。
  • 実体は f1.microタイプ の Google Compute Engine インスタンス
  • デフォルトで必要なツールがプリインストール済み(エディタ、言語ランタイム、バージョン管理システムGoogle Cloud SDKGoogle App Engine SDK等)。詳細は以下URL参照。
  • Cloud Shell のセッションを閉じるまで、もしくは1時間以上何もしなかった場合に terminate される。terminateされてもホームディレクトリのデータは残る。
  • ホームディレクトリにツールや、シェル、エディタなどの設定ファイルを置いておけば、ブラウザでCloud Shell を起動するだけで、いつもと変わらない開発環境が利用可能。
  • gcloud コマンドの設定不要で使用可能。立ち上げ時に現在のプロジェクトで gcloud コマンドが利用できるよう設定されておりCompute Engine インスタンスの立ち上げも即座に行える
  • gcloud コマンドを使う時はローカルからではなく Cloud Shell からと決めておくのも良い。
  • Web Preview は Cloud Shell のインスタンスのポートにブラウザから接続する機能
    • Cloud Shell起動ユーザーにのみブラウザ経由でポート(デフォルト8080番)を解放
  • Code Editor は ブラウザ上で動作するOrionをベースにしたエディタ
    • Cloud Shell 上のファイル編集、ローカルのファイルをアップロードし編集が可能

 
 

Bigtable概要

www.topgate.co.jp

  • Bigtable はデータサイズが巨大になっても高スループットで動作可能なスケーラビリティをデータベース
  • NoSQLに分類される
  • NoSQLはスケーラブルな実装を持つ、スキーマレス非リレーショナルDB
    • スケーラブルでありリレーショナルDBのパフォーマンス上限問題を解消する技術(大量データ利用を前提)
  • Google File System(GFS)とMapReduceによる分散処理がベース
  • HBaseはBigtableを元にしたOSS NoSQLデータベース
  • HBaseはHadoopによる分散処理がベース
  • HadoopGoogle File System(GFS)とMapReduceを元にしたOSS
  • 関係性をまとめると以下
Google技術 Google技術を元にしたOSS
Bigtable HBase
Google File System Hadoop File System
MapReduce Hadoop
Chubby Zookeeper

f:id:pikesaku:20180505083802p:plain

 
 

Google Cloud Dataproc概要

www.topgate.co.jp

  • HadoopとSpark環境を提供するサービス(構築の手間不要。Managed Spark & Hadoop)
  • SparkはHadoopサブプロジェクト。
    • HDFSでなくデータをオンメモリに配置 & 分散処理によりHadoopの100倍高速な解析実現
    • オンメモリのため扱うデータサイズはHadoopよりも小
    • 少量データはSpark、大容量データはHadoopの使い分けで利用される

 
 

Bigquery概要

www.topgate.co.jp

cloud.google.com

  • Bigtableはデータ更新可能、Bigqueryは不可。Bigqueryは読んで字の如くDBMS(データ管理)というよりはクエリ専門ソフトウェア(解析)???
  • データをインポートするだけで検索できる使いやすいサービス。(環境構築不要)
  • データのインポート元としてGoogle Cloud Storage 、ファイルのアップロード、Google ドライブをサポート
  • SQLでクエリ可能

 
 

Cloud Datalab概要

www.topgate.co.jp

  • データ解析可視化ツール
  • Python Jupiter Note Bookを元に作成
  • BigQueryなどのデータ解析結果を可視化可能
  • DockerイメージをローカルPCで、またはGCE上で利用可能

  
 

Cloud Functions概要

www.topgate.co.jp

 
 

Google Stackdriver概要

www.topgate.co.jp
www.topgate.co.jp
www.topgate.co.jp

  • Zabbixみたいな監視ツール。環境構築不要で利用できるのがセールスポイント
  • GCPサービスであれば無設定でも基本監視可能。詳細監視する場合、Agentをインストールして可能
  • ネットワークやサーバーなどのインフラ、アプリケーションなど様々なレイヤーの監視を一括で提供
  • AWS監視も可能(GCPAWS監視ツールとして開発されたものをGoogleが買収)
  • AWSGCP混在環境の一括監視が可能
  • 主な機能はMonitoring 、 Logging 、 Error Reporting 、 Debugger 、 Trace
  • Monitoring
  • Logging
    • リソースの出力するログをダッシュボードで閲覧可能
    • テラバイト/秒のログを管理でき大規模で利用可能
    • Monitoringと連携しログ監視設定可能
    • BigQueryと組み合わせ高速解析可能
  • Error Reporting
    • アプリケーションのクラッシュ、エラー発生・原因を素早く把握するサービス
    • JavaPythonC#RubyJavascript 、 Go のスタックトレースのパーサーを実装しておりエラーの検知・通知が可能
    • App Engineであれば設定不要で利用可能
    • エラーの時系列表示、類似エラーの発生頻度、新しく発生したエラーをメールやスマートフォンで通知するなど、異常検知・通知の機能が多くあり
  • Debugger
    • デバッグ作業支援ツール
    • 本番環境にデバッガーを仕込み、リクエストの処理中の変数の状態や、どのような関数が呼ばれているのか等を調査可能
    • ユーザー影響なし
    • アプリケーション状態のスナップショットを取得し、その状態をソースコードと紐付けデバッグを可能にする
    • PythonJava、Node.js、Go に対応
  • Trace
    • アプリケーションのパフォーマンス解析・監視サービス(New relic的なもの)
    • SDKがありアプリケーションに組み込み詳細な監視可能
    • GAEは設定不要で利用可能