Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜアプリケーションのモダナイゼーションをしないといけないのか

kumakumakkk
September 12, 2020

 なぜアプリケーションのモダナイゼーションをしないといけないのか

kumakumakkk

September 12, 2020
Tweet

More Decks by kumakumakkk

Other Decks in Technology

Transcript

  1. Cloud Onr
    Cloud OnAir
    Cloud OnAir
    なぜアプリケーションのモダナイゼーショ
    ンをしないといけないのか

    View Slide

  2. Cloud OnAir
    Cloud OnAir
    アプリケーションの
    モダナイゼーションとは

    View Slide

  3. Cloud OnAir
    ウェブ サービスの開発サイクル
    g.co/cloud

    View Slide

  4. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
    ユーザ フロント
    データベース
    キャッシュ
    ビジネスロジック

    View Slide

  5. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
    LB
    ユーザ
    カスタマ向け
    フロントロジック
    クライアント向け
    フロントロジック
    管理者(社内)向け
    フロントロジック
    カスタマ向け
    ビジネスロジック
    クライアント向け
    ビジネスロジック
    管理者(社内)向け
    ビジネスロジック
     各種トランスコード
    各種メッセージ送信
    データベース
    キャッシュ
    ETL
    各種モニタリング
    DWH

    View Slide

  6. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem

    View Slide

  7. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem

    View Slide

  8. View Slide

  9. Cloud OnAir
    - 生産的ではない、繰り返し行わないといけないタスクの増加
    - デプロイ頻度の低下
    - コンプライアンス、監査、セキュリティ
    - 様々な状況や環境にロックインされてしまう
    大規模アプリケーションでよくあるチャレンジ

    View Slide

  10. Cloud OnAir
    Cloud OnAir
    規模に合わせたモダナイゼーション

    View Slide

  11. Cloud OnAir
    - ポータビリティ性の向上
    - 自動化
    - 多様性を享受して、生産性を向上する
    イノベーションを加速するためにはどうするか?

    View Slide

  12. パフォーマンス
    再現性
    分離性
    可搬性(ポータビリティ)
    ...など!
    アプリケーションを管理が従来のアプリケーションとは根本的に異なります。
    なぜコンテナか?

    View Slide

  13. 44% container with
    known vulnerabilities
    Source: The state of open source security report 2019 by snyt

    View Slide

  14. Buildpacks create
    containers without a
    dockerfile.
    Source code OCI
    Container

    View Slide

  15. Containers
    without
    Dockerfiles
    1. Security audited
    2. Build your code the Google Way
    3. Container novices can deploy to
    container platforms
    4. Quick & Easy Builds (e.g. trying out
    some new code)
    5. Migrating from App Engine or
    Cloud Functions
    6. Integrated with Google Cloud
    products

    View Slide

  16. Cloud Runとは?
    デプロイアプリケーション :
    HTTP の $PORT でリッスンするコードを持つ コンテナイメージ
    SSL ターミネーション
    実行中のコンテナへの HTTP リクエスト
    自由に設定可能な 1 から最大 80 の同時リクエスト数
    ゼロから数千のインスタンスの自動スケーリング
    100 ミリ秒単位での使用した CPU、メモリの従量課金制

    View Slide

  17. Cloud Run
    Developer friendly
    ● YAML からデプロイ
    ● Cloud Code
    ● Cloud buildpacks
    ● ソースコンテキスト
    ● 継続的デリバリー
    ● Events for Cloud Run
    ● Cloud Workflows
    More flexibility
    ● 4 GB RAM
    ● 4 vCPUs
    ● 1 時間のリクエスト
    タイムアウト
    ● 最小インスタンス
    ● SIGTERM
    ● gRPC サポート
    ● サーバーサイド
    ストリーミング
    Enterprise ready
    ● GA
    ● 12 のリージョン
    ● VPC アクセス
    ● Gradual rollouts
    ● Cloud Artifact Registry
    ● Multi-region
    ● Cloud CDN
    ● Identity Aware Proxy
    ● Cloud Armor

    View Slide

  18. GCP Project
    VPC アクセス
    Cloud Memorystore Redis と
    Memcached に接続
    プライベート IP に接続
    Shared VPC のサポート
    Cloud Run
    Serverless
    VPC
    Connector
    Cloud
    Memorystore
    VM
    Compute Engine
    Virtual Private Cloud
    Private IP
    Private IP

    View Slide

  19. Multi-region load
    balancing
    外部 HTTP(S) ロード・バランシング経由
    リクエストを最も近いサービスにルーティング
    するグローバル エンドポイント を公開
    地域的なサービス停止障害に強い
    GCP Project
    Cloud
    Load
    Balancing
    Cloud Run
    europe-west1
    Cloud Run
    us-central1
    Cloud Run
    asia-no heast1
    San Francisco
    Paris
    https://example.com
    https://example.com

    View Slide

  20. Events
    for Cloud Run
    他の GCP リソースから Cloud Run サー
    ビスをトリガー
    多くのリソースタイプで起動
    (Cloud Audit Logging を活用)
    CNCF オープンスタンダードで提供:
    詳細は DEV309 セッションで
    (coming soon)

    View Slide

  21. 最小
    インスタンス
    一部のインスタンスをアイドル状態にする
    コードスタートを回避する
    アイドル状態でインスタンスの料金を抑え

    コンテナ インスタンス
    min = 2
    0
    (coming soon)

    View Slide

  22. どこでアプリケーションを
    実行するとよいでしょうか?

    View Slide

  23. Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions
    Firebase

    View Slide

  24. {
    コンテナ
    コード
    {
    コンテナ アプリケーション
    既存システム
    イベント/ウェブ + コンテナ
    ウェブ アプリケーション
    Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions イベント駆動
    Firebase
    ウェブ アプリケーションと
    モバイルバックエンド

    View Slide

  25. Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions
    抽象化
    アプリケーション
    どんなプログラム?接続方法は?ステートは?
    使用中のソフトウェア、オペレーティングシステム
    CPU、メモリ、ディスク
    ネットワーク: ファイアウォールルール、 VPN、
    ロードバランサ
    コンテナ・ランタイムコントラクト
    あらゆるプログラム言語、 HTTP リクエスト
    コード
    HTTPリクエスト
    イベント
    関数定義

    View Slide

  26. Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions
    必要条件
    GPU、TPU、ハイブリッド、 特定の OS が必要
    HTTP/S 以外のネットワークプロトコル
    GPU、TPU、特定のカーネルが必要、 Windows、ライ
    センスの必要条件、現行システムの移行
    様々なプログラム言語の選択
    コンテナで実行
    アプリ: URL ルーティング、コードシェア、
    トラフィック分割

    View Slide

  27. Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions
    課金モデル
    リソース設定に応じた課金
    リソース設定に応じた課金
    使用量 / リソース
    使用量に応じた課金
    使用量に応じた課金

    View Slide

  28. Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions
    チーム
    チームのインテグレーション:
    開発、運用、セキュリティが連携
    アーキテクチャの改善に対して前向き
    様々なチーム構成やツール選択に適応可能
    開発フォーカス
    ビルドツールとデプロイメントの決定権を持つチーム
    開発フォーカス
    開発フォーカス

    View Slide

  29. Buildpacks on
    Google Cloud
    ● Google Cloud maintains a set of open source buildpacks
    for building containers to run on GKE, Anthos, & Cloud Run
    ● Cloud Build native support for buildpacks
    ● Cloud Run direct source deployments w/ buildpacks
    ● Cloud Shell has pack pre-installed.
    ● App Engine builds via buildpacks
    ● Cloud Functions builds via buildpacks
    ● Cloud Code deploy to Cloud Run with Buildpacks
    ● Skaffold native support for buildpacks

    View Slide

  30. プロジェクトステージ
    新規プロジェクト
    現行システム /
    システム移行
    Kubernetes Engine
    Compute Engine
    Cloud Run
    App Engine
    Cloud Functions

    View Slide

  31. ネットワーク
    アプリ B
    アプリ A

    View Slide

  32. ネットワーク
    アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I

    View Slide

  33. ネットワーク B
    ネットワーク A
    アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ゼロ トラストネットワーク

    View Slide

  34. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID

    View Slide

  35. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ

    View Slide

  36. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可

    View Slide

  37. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー

    View Slide

  38. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング

    View Slide

  39. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御 ポリシー制御

    View Slide

  40. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御 ポリシー制御
    利用上限
    レートリミット

    View Slide

  41. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御 ポリシー制御
    利用上限
    レートリミット
    可観測性 可観測性

    View Slide

  42. アプリ B
    アプリ A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御 ポリシー制御
    利用上限
    レートリミット
    可観測性 可観測性
    ロギング
    メトリクス
    分散トレーシング
    トポロジー

    View Slide

  43. 業務ロジック
    ではない・・!
    業務ロジック B
    業務ロジック A
    A
    P
    I
    A
    P
    I
    ID ID
    セキュリ
    ティ
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御 ポリシー制御
    利用上限
    レートリミット
    可観測性 可観測性
    ロギング
    メトリクス
    分散トレーシング
    トポロジー

    View Slide

  44. ネットワーク関連機能
    業務ロジック B
    A
    P
    I
    ID
    セキュリ
    ティ
    認証
    認可
    ネットワークレジリエンシー
    レイテンシー
    障害耐性
    サーキットブレーキング
    ポリシー制御
    利用上限
    レートリミット
    業務ロジック A
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性 可観測性
    ロギング
    メトリクス
    分散トレーシング
    トポロジー

    View Slide

  45. サービスメッシュ
    アプリケーション から
    ネットワーク関連機能 を分離

    View Slide

  46. 業務ロジック
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性

    View Slide

  47. 業務ロジック
    業務ロジック
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性

    View Slide

  48. コンテナ B  
    コンテナ A
    業務ロジック
    業務ロジック
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性

    View Slide

  49. Pod  
    envoy(サイドカーコンテナ)
    コンテナ
    業務ロジック
    業務ロジック
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性

    View Slide

  50. Pod  
    Envoy(サイドカーコンテナ)
    コンテナ
    業務ロジック
    A
    P
    I
    ID
    セキュリ
    ティ
    ネットワークレジリエンシー
    ポリシー制御
    可観測性
    プラットフォーム /
    SRE チーム
    開発チーム
    ● 業務ロジックに集中
    ● とても軽量
    ● 可搬性が高い
    ● 自動化
    ● スケーラビリティ
    ● 高いセキュリティ
    ● 制御が効く

    View Slide

  51. Cloud OnAir
    Cloud OnAir
    アプリケーションの
    モダナイゼーション まとめ

    View Slide

  52.    抽象化レベル 技術要件 チーム & 組織

    View Slide

  53. 複数サービスの組み合わせ

    View Slide

  54. Cloud
    Datastore
    Cloud
    SQL
    Cloud
    Spanner
    Cloud
    Bigtable
    BigQuery
    Translation
    API
    Natural
    Language API
    Speech
    API
    Vision
    API
    App
    Engine
    Compute
    Engine
    Kubernetes
    Engine
    Cloud
    Functions
    Cloud
    Run
    Cloud
    Storage
    Cloud
    Pub/Sub
    Cloud
    Tasks
    Cloud
    Scheduler

    View Slide

  55. Cloud OnAir

    View Slide

  56. Cloud OnAir
    - ポータビリティ性が向上
    - 自動化
    - 多様性を享受して、生産性が向上
    イノベーションを加速する

    View Slide

  57. Cloud OnAir
    - APP210-JP Istio / ASM でグローバルにスケールするサービスを構築し
    よう
    - SVR105-JP 最適なコンピューティングの選択
    - SVR224-JP Cloud Run の新機能
    - SVR227 Buildpacks on Google Cloud
    今日のピックアップセッション

    View Slide

  58. Cloud OnAir
    - APP236 - An App Modernization Story with Cloud Run
    - APP234 - Secrets in Serverless - 2.0
    - OPS100 - Designing for Observability on Google Cloud
    - OPS101 - Managing Enterprise-scale Distributed Business &
    Operations on Google Cloud
    その他おすすめセッション

    View Slide

  59. Cloud OnAir
    Google Cloud Next ‘20: OnAir
    Google Cloud Next ’20: OnAir の
    セッションへのご登録はこちらから
    https://cloud.withgoogle.com/next/sf/japan

    View Slide