Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送

3,479 views

Published on

サーバーレスにすると、面倒な基盤インフラストラクチャの管理に時間をとられずにコードの作成やデプロイを行い、開発者はアプリケーションの開発に専念することができます。Google Cloud Next '18 のアップデート情報を踏まえて、Cloud Functions や App Engine、 Pub/Sub などといった GCP のサーバーレスサービスに適用させる DevOps 対応なソリューションについて紹介します。

Published in: Technology
  • Be the first to comment

[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送

  1. 1. Cloud Onr Cloud OnAir Cloud OnAir 最新版 GCP ではじめる、 サーバーレスアプリケーションの開発 2018 年 11 月 8 日 放送
  2. 2. Agenda Cloud OnAir 1 3 2 4 Google Cloud のサーバーレス サービス サーバーレスアプリケーション開発 より複雑なアプリケーションの構築 まとめ
  3. 3. Cloud OnAir Cloud OnAir Google Cloud の サーバーレス サービス
  4. 4. Cloud OnAir サーバーレス とは? はじめに
  5. 5. Cloud OnAir サーバーレス とは? 透過的な インフラストラクチャ 自動 スケーリング 使った分だけ課金 未使用 CPU サイクル分課金なし
  6. 6. Cloud OnAir アプリケーションの実行環境 Compute Engine IaaS Cloud Functions FaaS App Engine PaaS Kubernetes Engine CaaS 仮想マシン 既存のシステムや既存の運用 コンテナ アプリケーションのデプロイ、管理、更新を容易に Web アプリ基盤 Web アプリやAPI 向け イベント駆動型 個別の機能・軽量のロジックを迅速にビルド サーバーレス
  7. 7. Cloud OnAir Google のサーバーレス サービス Cloud Functions イベント駆動 App Engine スタンダード環境 Cloud Firestore NoSQL & リアルタイム同期 Cloud Datastore NoSQL BigQuery データウェアハウス & 分析 コンピューティング データベース 機械学習 データ処理 その他 Cloud ML Engine トレーニング & 予測 Cloud AutoML 専門知識なしで トレーニング&予測 Cloud Dataflow ストリーム & バッチ データ処理 Cloud Pub/Sub グローバル リアルタイ ム メッセージング Firebase
  8. 8. Cloud OnAir サーバーレスのメリット サーバーレス 1. プログラミング 2. サーバーの構築 3. ネットワーク、ストレージのセットアップ 4. インデックスの定義 5. ソフトウェアのセットアップ 6. サーバーの管理 7. スケールを管理 サーバーの自社運用 1. プログラミング 2. サーバーの構築 3. ネットワーク、ストレージのセットアップ 4. インデックスの定義 5. ソフトウェアのセットアップ 6. サーバーの管理 7. スケールを管理 サービスの開発にフォーカスできる
  9. 9. Cloud OnAir Cloud OnAir サーバーレスアプリケーション開発
  10. 10. Cloud OnAir サーバーレス コンピューティング & アプリ App Engine スタンダード環境 Cloud Functions Firebase アプリバックエンド (e.g. APIs、Web apps) Functions as a Service モバイルアプリ ● コードを書いてデプロイするだけ ● 2008 年からサービス提供 ● オートスケール ● フルマネージド(インスタンス数の管 理、ロードバランサなどは Google に 任せる) ● Python, Java, PHP, Go, Node.js ● トリガーイベントに反応して、関数を 自動的に実行 ● クラウドの ”接着剤” ● Python 3.7ベータ , Node.js 6, Node.js 8ベータ ● 課金 : 100 ミリ秒毎&割り当てメモリ をベースに ● 統合したモバイルアプリ プラットフォーム ● リアルタイム データベース ● ホスティング、メッセージング、ア ナリティクス、認証、ML Kit、etc
  11. 11. Cloud OnAir App Engine: 第2世代ランタイム gVisor ベース 使い慣れた言語ランタイム API 制限の廃止 ネイティブモジュールのサポート より高速なデプロイ・実行
  12. 12. Cloud OnAir Cloud Functions GA Cloud Functions が一般提供開始 ● 東京 ● すべてのデベロッパーに公開 ● 安定、製品使用にも対応 ● サービス水準合意 $ gcloud functions deploy --region asia-northeast1
  13. 13. Cloud OnAir 1つプロジェクトに複数のリージョンを持てる 東京 ベルギー アイオワ プロジェクト
  14. 14. Cloud OnAir Cloud Functions の種類 バックグラウンド Function Cloud Storage Cloud Pub/Sub Firebase HTTP Function
  15. 15. Cloud OnAir クラウドの接着剤である Cloud Functions GCF から 20 以上の Google サービス にアクセス Cloud Storage Cloud Pub/Sub HTTPS Firebase Cloud Functions
  16. 16. Cloud OnAir Webhook: HTTP Function わずか数行のコードで サーバーレスバックエンド を構築: ● 他に追加設定なし ● HTTPS エンドポイント ● FQDN を提供 ● SSL/TLS 証明書を自動生成 ● 自動スケーリング ● 1 秒以下の単位による課金 // Function triggered via HTTPS const translate = require('@google-cloud/translate')(); exports.hello = function hello(req, res) { let msg = req.query.msg || 'Hello, world!'; let lang = req.query.lang || 'fr'; translate.translate(msg, lang, (err, translation) => { if(err) console.error(err); res.status(200).send(translation); }) }
  17. 17. Cloud OnAir Cloud OnAir HTTP Functionのデモ
  18. 18. Cloud OnAir 軽量ETL: Cloud Storage イベントのトリガー Cloud Storage Cloud Storage Cloud Functions Cloud Functions Cloud Vision API サムネイル ラベル
  19. 19. Cloud OnAir 画像分析 exports.analyzeImage = (event) => { const file = event.data; const context = event.context; return visionApiClient .labelDetection(`gs://${file.bucket}/${file.name}`) .then(results => { results[0].labelAnnotations.forEach(console.log); }) .catch(err => { console.error('ERROR:', err); }); };
  20. 20. Cloud OnAir Cloud OnAir Cloud Storage トリガーのデモ
  21. 21. Cloud OnAir Cloud Functions のデプロイ Cloud Console UI から コマンドラインから $ gcloud functions deploy helloWorld --trigger-http
  22. 22. Cloud OnAir ローカルでの開発 npm install -g @google-cloud/functions-emulator オープンソースのエミュレータ パブリック API との完全な互換性 デバッグのための一般的な IDE との統合 をサポート Node.js 6 のみをサポート
  23. 23. Cloud OnAir Cloud Functions ユースケース API エンドポイント IoT軽量 ETL クラウド インフラストラクチャの変 更に対する反応 Webhooks Cloud IoT Core
  24. 24. Cloud OnAir Cloud OnAir より複雑なアプリケーションの構築
  25. 25. Cloud OnAir より複雑なアプリの構築 ● 複数の機能をつなげる ● サーバーレスデータ分析 ● 監視とエラー報告 ● スケーラビリティ ● セキュリティ
  26. 26. Cloud OnAir 複数の機能をつなげる: Pub/ Sub を使いましょう 高信頼性のリアルタイム メッセージ Cloud Pub/Sub アプリケーション間で信頼性のある多対多の 非同期メッセージングを提供 処理するパイプラインにデータを送り込み、 他のアプリ、デバイス、Google Cloud Services に出力
  27. 27. Cloud OnAir パブリッシャー と サブスクライバー サブスクライバー C パブリッシャー トピック メッセージ サブスクリプション A サブスクリプション B サブスクリプション C サブスクライバー B Pub/Sub
  28. 28. Cloud OnAir 複数の機能をつなげる 人事データ ベースに社員 を登録 Cloud Firestore topic : newuser 社員証作成システ ムにデータ登録 topic: newuser { "userid": "bret", location: "nyc", ... } Cloud Pub/SubJSON IT ヘルプデス クシステム topic : newuser HTTP
  29. 29. Cloud OnAir サーバーレスデータ分析 BigQuery 高速、かつコストを抑えて オンデマンドで実行可能な データ分析エンジン Bigtable ハイパフォーマンスなNoSQL データベース。 特に大きなワークロード向け ログ, CSV, オン プレミス etc. イベント, メトリックス, etc. ストリーミング バッチ
  30. 30. Cloud OnAir Dataflow とは ● 様々なデータ処理パターンの実行に対応した マネージド サービス ● 大量データに対する ETL(Extract, Transform, Load) 処理を実行する ● バッチ、ストリーミングの両方のモデルに適用可能 ● Apache Beam のプログラミングモデルを利用し、 開発を行う
  31. 31. Cloud OnAir 監視とエラー報告 ログ console.log() ⇒ Stackdriverでのログ 捕捉されない例外 ⇒ Stackdriver Errors Log にアクセスする方法 : gcloud ( CLI ) Cloud Console ( UI ) REST API 監視 デフォルトで Essential telemetry がレポートされる : ● 実行回数 ● 実行時間 ● メモリ使用
  32. 32. Cloud OnAir ログ Automatically captured from console.log
  33. 33. Cloud OnAir エラー報告 Automatic error reporting
  34. 34. Cloud OnAir サーバーレスのメリット 透過的な インフラストラクチャ 自動 スケーリング 使った分だけ課金 未使用 CPU サイクル分課金なし オートスケールは素晴らしいが、システム運用は要注意!
  35. 35. Cloud OnAir 例: データベースがボトルネック トラフィック データベース(i.e. mySQL)
  36. 36. Cloud OnAir スケーラビリティコントロール Function毎にインスタンス数を制限 Alpha リソース枯渇を防ぐ $ gcloud functions deploy --max-instances=100
  37. 37. Cloud OnAir 予算アラートの設定
  38. 38. Cloud OnAir 環境変数の設定 const mysql = require('mysql'); const pool = mysql.createPool({ connectionLimit : 1, socketPath: '/cloudsql/myproject:us-central1:mydatabase', user: 'root', password: 'ItIsASecret', database: production' }); ...
  39. 39. Cloud OnAir 環境変数の設定 設定情報をコードに保存しない 複数の環境変数を管理 $ gcloud functions deploy --set-env-vars DB_USER=root,DB_PASSWORD=***
  40. 40. Cloud OnAir IAM によるアクセス制御 IAM を使用してユーザーのアクセス制御 ● 開発者 ● 他の Cloud Functions 或いは GCP サービス ● エンドユーザー(Google Sign in) 個別 Cloud Functions に IAM ポリシーを設定可能 $ gcloud functions add-iam-policy-binding myFunc2 --member='myFunc1@projectid.iam.gserviceaccoumnt.com' --role='roles/cloudfunctions.invoker' myFunc1() myFunc2() 不正アクセス
  41. 41. Cloud OnAir Cloud OnAir まとめ
  42. 42. Cloud OnAir まとめ サーバーレスを導入することでお客様はサービスの開発に集中することが出来ます。 設定が容易 イベント駆動サーバー不要 使った分だけ課金
  43. 43. Cloud OnAir まとめ Cloud Functions: クラウドの接着剤 GCF から 20 以上の Google サービス にアクセス Cloud Storage Cloud Pub/Sub HTTPS Firebase Cloud Functions
  44. 44. Cloud OnAir まとめ より複雑なアプリケーションの構築 ● Stackdriver を活用した監視とエラー報告 ● インスタンス数を制限、予算アラートの設定 ● IAM によるアクセス制御 There is more... Cloud BuildGKE Serverless add-on Cloud Schedulerベータ Cloud Tasksベータ

×