$30 off During Our Annual Pro Sale. View Details »

世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第1回 〜Azureでクラウドネイティブを実現するには〜/wakarimiazure001

世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第1回 〜Azureでクラウドネイティブを実現するには〜/wakarimiazure001

Noriyuki TAKEI

June 16, 2021
Tweet

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. © SIOS Technology, Inc. All rights Reserved.
    世界⼀わかりみの深い
    クラウドネイティブなアプリ開発⼊⾨ on Azure
    第1回
    〜Azureでクラウドネイティブを実現するには〜
    武井 宜⾏
    サイオステクノロジー株式会社
    2021年6⽉16⽇

    View Slide

  2. © SIOS Technology, Inc. All rights Reserved.
    ⽬次
    2
    第1章︓クラウドネイティブとは︖
    第2章︓クラウドネイティブを実現するサービス
    第3章︓IaaS、CaaS、PaaS、FaaSとは︖
    第4章︓IaaS、CaaS、PaaS、FaaSのメリデリ
    第5章︓IaaS、CaaS、PaaS、FaaSの選定例
    第6章︓クラウドネイティブな設計

    View Slide

  3. © SIOS Technology, Inc. All rights Reserved.
    About Me
    3
    BCPVUNF
    Noriyuki TAKEI
    ෢Ҫ ٓߦ
    Information
    • サイオステクノロジー株式会社
    • Microsoft MVP for Azure
    Favorites
    • Squash
    • Ski
    • Running
    • Canoe
    • Sweets
    blog
    https://tech-lab.sios.jp/
    core skill
    Cloud Native, Serverless全般
    Twitter
    @noriyukitakei

    View Slide

  4. © SIOS Technology, Inc. All rights Reserved.
    本セッションの概要
    4

    View Slide

  5. © SIOS Technology, Inc. All rights Reserved.
    本セッションの概要
    5
    「Azureでもっと⾝近なクラウドネイティブ」を
    ⽬指し、クラウドネイティブを実現するための
    様々な技術を世界⼀わかりみ深く
    説明するシリーズ配信モノです︕︕

    View Slide

  6. © SIOS Technology, Inc. All rights Reserved.
    本セッションの概要
    6
    ハッシュタグ
    #wakarimiazure
    もしくは
    @noriyukitakei
    に忌憚ないご意⾒
    お願いいたします

    View Slide

  7. © SIOS Technology, Inc. All rights Reserved.
    本セッションの概要
    7
    本セッションは以下のブログが
    ベースとなっていますので、合わせてご覧
    頂けますと幸いです︕︕
    クラウドネイティブってなに︖〜 Azureのアプリ開発実⾏基盤いろは 〜
    https://tech-lab.sios.jp/archives/25654

    View Slide

  8. © SIOS Technology, Inc. All rights Reserved.
    第1章:クラウドネイティブとは︖
    8

    View Slide

  9. © SIOS Technology, Inc. All rights Reserved.
    第1章:クラウドネイティブとは︖
    9
    ところで
    よく聞くけど
    クラウドネイティブ
    ってなに︖
    本セッションの
    ブログのURL

    View Slide

  10. © SIOS Technology, Inc. All rights Reserved.
    第1章:クラウドネイティブとは︖
    10
    クラウドならではの機能を活かすことにより、従来のオンプ
    レミス上の物理マシンや仮想マシンでは実現出来なかったよ
    うな運⽤を実現します。例えば簡単にスケールアウト出来た
    り、OSのセキュリティアップデートなどの管理が不要に
    なったりとか。
    クラウドネイティブとは︖
    本セッションの
    ブログのURL

    View Slide

  11. © SIOS Technology, Inc. All rights Reserved.
    第1章:クラウドネイティブとは︖
    11
    システム運⽤担当
    システム管理担当
    エンドユーザー
    Azure Load
    Balancer
    Azure Load
    Balancer
    仮想マシン
    (Webサーバー)
    仮想マシン
    (データベース)
    仮想マシン
    (データベース)
    デプロイ
    デプロイ
    仮想マシン
    (Webサーバー)
    クラウドネイティブぢゃない
    本番⽤リソース
    ステージング⽤リソース 本セッションの
    ブログのURL

    View Slide

  12. © SIOS Technology, Inc. All rights Reserved.
    第1章:クラウドネイティブとは︖
    12
    クラウドネイティブだよ
    仮想ネットワーク
    App Service Plan
    アプリ
    本番スロット
    Azure Database
    for MySQL
    Azure
    Key Vault
    Application
    Insights
    本番⽤リソース
    VNET統合⽤
    サブネット
    Azure
    Repos
    Azure
    Pipelines
    Container
    Registry
    システム開発者
    アプリ
    ステージング
    スロット
    Azure Database
    for MySQL
    Azure
    Key Vault
    Application
    Insights
    VNET統合⽤
    サブネット
    ステージング⽤リソース

    View Slide

  13. © SIOS Technology, Inc. All rights Reserved.
    第2章:クラウドネイティブを実現するサービス
    13

    View Slide

  14. © SIOS Technology, Inc. All rights Reserved.
    第2章:クラウドネイティブを実現するサービス
    14
    Azureでクラウドネイティブを実現する代表的サービス群(ほんの⼀部)です。
    アプリケーション
    運⽤管理
    ネットワーク
    ストレージ
    App Service
    Azure
    Functions
    Azure
    Kubernetes Service
    Azure
    Container Instances
    Application
    Insights
    Azure
    Key Vault
    Azure Pipelines
    Azure
    Security Center
    Azure
    Load Balancer
    Aplication
    Gateway Azure Firewall Azure CDN
    Azure Database
    for MySQL
    Azure
    Blob Storage
    Container
    Registry
    Azure Cache
    for Redis

    View Slide

  15. © SIOS Technology, Inc. All rights Reserved.
    第2章:クラウドネイティブを実現するサービス
    15
    Azure App Service
    アプリケーションを実⾏する基盤です。もちろん仮想マシ
    ンでもアプリケーション実⾏できるじゃんと思います。し
    かしAzure App Serviceのすごいところは、Azureポータル
    というAzureの管理画⾯からZIPアーカイブしたアプリケー
    ションをアップロードするだけでアプリケーションが実⾏
    出来てしまうところです。
    本セッションの
    ブログのURL

    View Slide

  16. © SIOS Technology, Inc. All rights Reserved.
    第2章:クラウドネイティブを実現するサービス
    16
    Azure App Service
    Azure上でMySQLを実⾏するサービスです。
    通常MySQLを稼働する際は仮想マシン上にMySQLをインス
    トールしていましたが、Azure Database for MySQLのリ
    ソースを作成すると、すぐに実⾏できるMySQLの基盤が出
    来上がります。開発者が⾏うのは、MySQLクライアントで
    MySQLに接続し、データベースやスキーマの作成を⾏うだ
    けです。⾯倒なバックアップなども全部Azureが⾯倒⾒てく
    れます。 本セッションの
    ブログのURL

    View Slide

  17. © SIOS Technology, Inc. All rights Reserved.
    第2章:クラウドネイティブを実現するサービス
    17
    Application Insights
    アプリケーションに障害が発⽣したりパフォーマンスが遅
    いなどの問題が発⽣した場合は、従来の⽅法だと各サー
    バーに出⼒されたテキスト形式のログとニラメッコしなが
    ら原因を解析したと思います。
    Application Insightsを使えば、アプリケーションのコード
    を変更することなく、CPU使⽤率やメモリ使⽤量(メトリッ
    クスといいます)や、アプリケーションが出⼒するログを
    Application Insightsに送付します。
    Application Insightsはそれらの情報を独⾃のデータベース
    に貯めて、グラフ化して可視化したり、SQLライクな構⽂
    でログを検索出来たりします。

    View Slide

  18. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    18

    View Slide

  19. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    19
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    IaaS CaaS PaaS FaaS
    アプリケーションの実⾏基盤を分類する概念です。

    View Slide

  20. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    20
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    IaaS CaaS PaaS FaaS
    クラウドネイティブ
    クラウドネイティブ
    ぢゃない

    View Slide

  21. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    21
    IaaS
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    OSインストール済みの基盤
    OSより上のレイヤー全てをシステ
    ム管理者が管理
    OSのセキュリティアップデートや、
    ミドルウェア、アプリケーション
    フレームワークへの脆弱性対応な
    ども、当然システム管理者の責任
    ⾃由度は⾼く、どんな⾔語やミド
    ルウェアでも実⾏可能
    仮想マシンを作成する。
    JavaやPHPなどのランタイムをインストールする。
    ApacheやTomcatなどのミドルウェアをインストー
    ルする。
    SpringやCakePHPなどのフレームワーク上でアプリ
    ケーションを開発する。
    アプリケーションをビルドする。
    ビルドしたアプリケーションをミドルウェア上にデ
    プロイする。
    IaaSの開発イメージ

    View Slide

  22. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    22
    CaaS
    SpringやCakePHPなどのフレームワーク上でアプリ
    ケーションを開発する。
    アプリケーションをビルドする。
    アプリケーションのコンテナイメージを
    作成する。
    コンテナイメージをコンテナレジストリに
    Pushする。
    CaaSの開発イメージ
    IaaSにおいて、システム管理者の
    責任範囲であった「OS」が、パブ
    リッククラウドの責任範囲
    OSやコンテナ実⾏環境のセキュリ
    ティアップデートは、パブリック
    クラウド側で実施
    アプリケーションフレームワーク
    (SpringやCakePHP等)で脆弱性が
    発覚した場合は、システム管理者
    の責任
    ⾃由度はIaaSに⽐べるとほぼ同程
    度で、更に移植性も⾼く、今⼀番
    注⽬度の⾼いレイヤーである。 OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ

    View Slide

  23. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    23
    PaaS
    SpringやCakePHPなどのフレームワーク上でアプリ
    ケーションを開発する。
    アプリケーションをビルドする。
    ZIPなどの形式で圧縮して、パブリッククラウドの
    管理画⾯からアップロードする。
    PaaSの開発イメージ
    IaaSにおいて、システム管理者の
    責任範囲であった「OS」
    「Runtime」「Middleware」が、
    パブリッククラウドの責任範囲
    OSのセキュリティアップデートや、
    ミドルウェアの脆弱性対応などは、
    パブリッククラウド側で実施
    アプリケーションフレームワーク
    (SpringやCakePHP等)で脆弱性が
    発覚した場合は、システム管理者
    の責任
    ⾃由度はIaaSに⽐べると低く、パ
    ブリッククラウド側で提供されて
    いる⾔語のみを選択可能 OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    本セッションの
    ブログのURL

    View Slide

  24. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    24
    FaaS
    パブリッククラウドのポータルにアクセスする。
    コードを書く。
    FaaSの開発イメージ
    OSやランタイム、ミドルウェアは
    もちろんのこと、アプリケーショ
    ンフレームワークさえも不要
    実⾏するコードのみを記載すれば、
    プログラムが実⾏出来る
    OSのセキュリティアップデートや、
    ミドルウェア、アプリケーション
    フレームワークへの脆弱性対応は
    不要
    OS(LinuxやWindows)
    ランタイム
    (JavaやPHPなどの開発⾔語)
    ミドルウェア
    (ApacheやTomcatなど)
    アプリケーションフレームワーク
    (SpringやCakePHPなど)
    アプリケーション
    コンポーネント群
    クラス
    メソッド
    public void hello() {
    // 何かの処理
    }
    コンテナ(必要に応じて)
    本セッションの
    ブログのURL

    View Slide

  25. © SIOS Technology, Inc. All rights Reserved.
    第3章:IaaS、CaaS、PaaS、FaaSとは︖
    25
    IaaS
    CaaS
    PaaS
    FaaS
    App Service
    Azure
    Kubernetes Service
    Azure
    Container Instances
    Azure
    Functions
    Virtual
    Machine
    App Service
    (カスタムコンテナ)
    IaaS、CaaS、PaaS、FaaSとAzureリソースのマッピングです。

    View Slide

  26. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    26

    View Slide

  27. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    27
    IaaS CaaS PaaS FaaS
    保守性 △ ○ ○ ◎
    ⾃由度 ◎ ○ ○ △
    開発⼯数 △ ○ ○ ◎
    費⽤ ○ ○ ○ ◎
    スケーラビリティ △ ○ ○ ◎
    移植性 ◎ ◎+ ○ △
    ◎・・・とってもよい( ´∀`)
    ◯・・・普通(・∀・)
    △・・・イマイチ(´・ω・`)
    IaaS、CaaS、PaaS、FaaSのメリデリを以下の指標にてまとめてみました。

    View Slide

  28. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    28
    保守性
    IaaS CaaS PaaS FaaS
    保守性 △ ○ ○ ◎
    保守性とは、サービス開始後、アプリケーション正常稼働の維持のために発⽣する作業の効率
    性を定めた指標です。
    その作業は、 OSのセキュリティパッチ適⽤、アプリケーションフレームワークやライブラリ
    の脆弱性対応、バージョンアップ等、その作業内容は多岐にわたり、しかも不定期に発⽣しま
    す。
    FaaSが有利︕︕

    View Slide

  29. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    29
    保守性
    IaaS
    OSのレイヤーからシステム管理者が⾯倒を⾒なければならず、OSのセキィリティ
    パッチやアプリケーションの脆弱性対応はシステム管理者⾃⾝が実施する必要があ
    ります。
    CaaS
    PaaS
    アプリケーションのレイヤーより下位の層はパブリッククラウドの責任範囲ですの
    で、OS周りの対応は不要ですが、アプリケーションのレイヤーのメンテナンスは、
    必要です。
    OSのレイヤーやコンテナ実⾏基盤などはパブリッククラウドの責任範囲ですので、
    ⾯倒を⾒る必要はないのですが、コンテナ⾃体のセキュリティアップデートは実⾏
    しなければいけません。
    FaaS
    インフラのレイヤーは全て抽象化されます。つまり、今までシステム管理者を煩わ
    せていたセキュリティパッチ当てやライブラリのバージョンアップなどは⼀切気に
    せず、コーディングのみに集中できます。

    View Slide

  30. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    30
    ⾃由度
    システムを構築する際に選択するランタイム(開発⾔語)、ネットワーク構成、ストレージ
    などをどの程度⾃由に選択できるかという指標です。
    IaaSが有利だがCaaSも負けちゃいない。
    IaaS CaaS PaaS FaaS
    ⾃由度 ◎ ○ ○ △
    本セッションの
    ブログのURL

    View Slide

  31. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    31
    ⾃由度
    IaaS
    開発⾔語は⾃由にインストール可能、接続するストレージのプロトコルもCIFS、
    NFS、WebDav、iSCSIとオンプレミス上のサーバーとほぼ同じ⾃由度で構築が可
    能です。
    CaaS
    PaaS
    システム管理者が扱えるのはランタイム(開発⾔語)より上のレイヤーになりますの
    で、IaaSほどの⾃由度はありません。実⾏出来るランタイムは、パブリッククラ
    ウドが提供するものに限られます。
    IaaSとほぼ同じ⾃由度を持ちますが、コンテナの実⾏基盤によっては、capability
    の設定によって、動作が制限されたりする可能性があります。例えばWeb App for
    Containersは任意のストレージをマウントすることが出来ません。
    FaaS
    ランタイムはある程度⾃由に選択は可能ですが、コードの実⾏形態が「関数」とい
    う最⼩単位のため、フレームワークのメリットを活かした設計や、有⽤な外部ライ
    ブラリを使った実装が出来ません。

    View Slide

  32. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    32
    開発⼯数
    アプリケーションを完成させるまでに必要な⼯数になります。この⼯数にはインフラ周
    り(OSやミドルウェア、ランタイムのインストール・セットアップ)も含みます。
    FaaSが有利︕︕
    IaaS CaaS PaaS FaaS
    開発⼯数 △ ○ ○ ◎
    しかし、学習⼯数を軽視してはいけない。
    本セッションの
    ブログのURL

    View Slide

  33. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    33
    開発⼯数
    IaaS ApacheやTomcatなどのミドルウェアの設計、構築、フレームワークの選定、学
    習、性能検証など、開発には多岐にわたるタスクが必要となります。
    CaaS
    PaaS IaaSほどではないにしても、フレームワークの選定等、アプリケーションのレイ
    ヤーより上は、必要なタスクとなります。
    IaaS異なりOSやコンテナ実⾏基盤の構築は必要ないのですが、コンテナイメージ
    を作成するのが若⼲⼿間になります。そういう意味ではPaaSのほうが有利です。
    FaaS
    FaaSは「関数」と呼ばれる、アプリケーションを実⾏する最⼩形態以外のレイ
    ヤーはすべて抽象化されており、関数の中にコードを記述するだけで、様々な処理
    を実⾏出来ます。

    View Slide

  34. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    34
    費⽤
    それぞれのサービスを稼働させるために必要な料⾦になります。
    FaaSが有利︕︕
    IaaS CaaS PaaS FaaS
    費⽤ ○ ○ ○ ◎
    本セッションの
    ブログのURL

    View Slide

  35. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    35
    費⽤
    IaaS アプリケーションが処理をしてようが、そうでなかろうが、仮想マシンが稼働して
    いる時間だけコストが発⽣するので無駄が多い。
    CaaS
    PaaS
    IaaSと同様
    FaaS 純粋に関数を実⾏した時間のみ課⾦されるので、⾮常に無駄が少ないです。
    IaaSと同様

    View Slide

  36. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    36
    スケーラビリティ
    スケールアウト(負荷に応じて、サーバーの台数を増やすことで処理能⼒を向上させるこ
    と)の柔軟性、つまり負荷に応じた必要な処理能⼒の提供可否を⽰す指標となります。
    FaaSが有利︕︕
    IaaS CaaS PaaS FaaS
    スケーラビリティ △ ○ ○ ◎
    本セッションの
    ブログのURL

    View Slide

  37. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    37
    スケーラビリティ
    IaaS
    ロードバランサーの構築や、スケールアウトの設定などが必要の上、 スケールア
    ウトするサーバーの台数を10台と決めますと、どれだけ負荷が上がったとしても、
    10台以上はスケールアウトしません。
    CaaS
    PaaS
    IaaSと異なり⾃由にスケールイン、スケールアウト出来る他、CPU使⽤率などの
    メトリックスでオートスケールも可能。
    FaaS
    負荷に応じてほぼ無限にスケールアウトします。コンテナ技術により、IaaS
    のように処理が発⽣していないときにもリソースを占有せず、効率的に使え
    るためです。
    IaaSと異なり⾃由にスケールイン、スケールアウト出来る他、CPU使⽤率などの
    メトリックスでオートスケールも可能。

    View Slide

  38. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    38
    移植性
    開発したアプリケーションを他のパブリッククラウドサービスやオンプレミスに移⾏す
    る際、どれだけ容易にそして確実に実施出来るかを⽰す指標となります。
    CaaSが有利。
    IaaS CaaS PaaS FaaS
    移植性 ◎ ◎+ ○ △
    本セッションの
    ブログのURL

    View Slide

  39. © SIOS Technology, Inc. All rights Reserved.
    第4章:IaaS、CaaS、PaaS、FaaSのメリデリ
    39
    移植性
    IaaS
    OSから上のレイヤーは全てシステム管理者が⾃由に扱えますので、ネットワーク、
    ストレージ、ランタイム、もちろんアプリケーションも全て、ほぼ忠実に移植が可
    能です。
    CaaS
    PaaS
    IaaSと⽐べると、移⾏に制約が多くなります。例えば、移⾏先のパブリッククラ
    ウドサービスが提供するPaaSに、移⾏元のアプリケーションが利⽤するランタイ
    ムが提供されてない場合などです。
    可搬性の⾼いコンテナ技術を活⽤しているので、移⾏元と移⾏先でコンテ実⾏環境
    が同⼀であれば、クラウドを超えてのアプリケーションの移植がIaaSに⽐べて更
    に容易になります。
    FaaS FaaSは、提供元クラウドベンダーの仕様に強く依存するため、他のクラウドベン
    ダーへの移植はかなり困難です。

    View Slide

  40. © SIOS Technology, Inc. All rights Reserved.
    第5章:IaaS、CaaS、PaaS、FaaSの選定例
    40

    View Slide

  41. © SIOS Technology, Inc. All rights Reserved.
    第5章:IaaS、CaaS、PaaS、FaaSの選定例
    41
    IaaS、CaaS、PaaS、FaaSの選定例を以下の代表的な3つのケースにて考えて
    みました。
    ケース1 今後Azureでしか使わないような単純な作りのWebアプリ
    ケース2 Apacheに特殊なモジュールが必要なWebアプリ
    ケース3 マルチクラウドで展開したいアプリケーション

    View Slide

  42. © SIOS Technology, Inc. All rights Reserved.
    第5章:IaaS、CaaS、PaaS、FaaSの選定例
    42
    ケース1︓今後Azureでしか使わないような単純な作りのWebアプリ
    PaaS
    例えば、Webアプリケーションがデータベースに接続して結
    果を返すような単純な作りのWebアプリケーションであり、
    AWSなど他のパブリッククラウドに移設する予定がないので
    あれば、PaaSが適切かと思います。ということは、Azureで
    ⾔えばAzure App Serviceになります。
    CaaS、つまりコンテナでは、Dockerイメージを作成すると
    いう⼿間が発⽣しますし、コンテナ⾃体のセキュリティも考
    えなくてはいけなくなりますので、この場合は当てはまらな
    いかと思います。
    FaaS、つまりAzure Functionsでも実現可能です。

    View Slide

  43. © SIOS Technology, Inc. All rights Reserved.
    第5章:IaaS、CaaS、PaaS、FaaSの選定例
    43
    ケース2︓ Apacheに特殊なモジュールが必要なWebアプリ
    CaaS
    例えばOpenID Connectのトークンを処理するための
    Apacheのモジュール「mod_auth_openidc」が必要なWeb
    アプリケーションのばあいはCaaSが適切です。PaaS、つま
    りAzure App ServiceではOSやミドルウェアのレイヤーをカ
    スタマイズすることが出来ません。その点、コンテナであれ
    ば、そのあたりは⾃由にカスタマイズ可能です。
    AzureでCaaSといえば以下のリソースが候補となります。
    • Web App for Containers
    • Azure Kubernetes Service
    • Azure Container Instances

    View Slide

  44. © SIOS Technology, Inc. All rights Reserved.
    第5章:IaaS、CaaS、PaaS、FaaSの選定例
    44
    ケース3︓マルチクラウドで展開したいアプリケーション
    AzureやAWSなど複数のクラウド(マルチクラウド)で同じアプリ
    ケーションを展開したい場合があります。様々な理由があると思い
    ますが、例えば、シングルクラウドですと、そのクラウドに障害が
    発⽣した場合サービスを継続出来ません。よって同様の機能を提供
    するアプリケーションを他のクラウドにも提供し、障害発⽣時は
    DNS変更などでそのクラウドに切り替えるといった対応が予想され
    ます。
    また、ベンダーロックインという問題もあります。Azure Functions
    やAWSのLambdaなどあまりにもクラウドベンダー特有の機能を
    使ってしまうと、いざ他のクラウドに移植したい場合の障壁になる
    場合があります。
    こういったケースでは断然CaaSが有利です。コンテナ技術はその特
    性から可搬性に優れています。移⾏元と移⾏先のコンテナのランタ
    イムが同じであれば、アプリケーションの移植は容易です。
    CaaS

    View Slide

  45. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    45

    View Slide

  46. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    46
    クラウドネイティブを実現するには、それに特化した設計が必要であり、その
    指針を⽰したものとして、「The Twelve-Factor App」があります。
    コードベース バージョン管理されている1つのコードベースと複数のデプロイ
    依存関係 依存関係を明⽰的に宣⾔し分離する
    設定 設定を環境変数に格納する
    バックエンドサービス バックエンドサービスをアタッチされたリソースとして扱う
    ビルド、リリース、実

    ビルド、リリース、実⾏の3つのステージを厳密に分離する

    View Slide

  47. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    47
    プロセス
    アプリケーションを1つもしくは複数のステートレスなプロセスとして実⾏
    する
    ポートバインディング ポートバインディングを通してサービスを公開する
    並⾏性 プロセスモデルによってスケールアウトする
    廃棄容易性 ⾼速な起動とグレースフルシャットダウンで堅牢性を最⼤化する
    開発/本番⼀致 開発、ステージング、本番環境をできるだけ⼀致させた状態を保つ
    ログ ログをイベントストリームとして扱う
    管理プロセス 管理タスクを1回限りのプロセスとして実⾏する

    View Slide

  48. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    48
    The Twelve-Factor Appによって提唱された12の
    設計パターンのうち、「設定」「プロセス」を
    Azureの利⽤例にマッピングしてみます。
    本セッションの
    ブログのURL

    View Slide

  49. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    49
    設定
    エンドユーザー
    本番スロット
    新アプリ
    旧アプリ
    App Service プラン
    スワップ
    システム運⽤担当
    $DB_HOST=$_ENV[“DB_HOST”]
    Config.php
    DB_HOST=prd
    環境変数設定
    DB_HOST=stg
    環境変数設定
    システム管理担当
    1
    2
    3
    4
    5
    Azure Repos
    ステージングスロット
    4
    本セッションの
    ブログのURL

    View Slide

  50. © SIOS Technology, Inc. All rights Reserved.
    第6章:クラウドネイティブならではの設計
    50
    プロセス
    App Service
    Cookie保存ディレクトリ
    Cookie名 値
    sessid rjfm34od5
    … …
    HTTPリクエスト
    リクエスト⾏ GET /messages HTTP/1.1
    ヘッダ Cookie: sessid=rjfm34od5
    メッセージボディ …
    HTTPリクエスト App Service
    セッションID 値
    rjfm34od5 ntakei
    … …
    Azure Cache for Redis
    スケールアウトに
    より新しく⽣成
    本セッションの
    ブログのURL

    View Slide

  51. © SIOS Technology, Inc. All rights Reserved.
    最後に︕︕
    51
    https://tech-lab.sios.jp/
    弊社技術ブログで様々なお役⽴ち技術情報を
    お届けしています︕︕

    View Slide

  52. © SIOS Technology, Inc. All rights Reserved.
    最後に︕︕
    52
    クラウドネイティブってなに︖〜 Azureのアプリ開発実⾏基盤いろは 〜
    https://tech-lab.sios.jp/archives/25654
    世界⼀わかりみの深いAPM 〜Application Insightsでアプリケーションパ
    フォーマンス管理に全集中︕︕〜
    https://tech-lab.sios.jp/archives/23948
    関連ブログ

    View Slide

  53. © SIOS Technology, Inc. All rights Reserved.
    最後に︕︕
    53
    https://www.youtube.com/channel/UCjIVEOLmZlBrgq
    7nrxVFuRw
    YouTubeチャネルで様々なお役⽴ち技術情報を
    お届けしています︕︕

    View Slide