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

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

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

D0f5daa7cc3a26140c06ea29e5e235cc?s=128

Noriyuki TAKEI

June 16, 2021
Tweet

Transcript

  1. © SIOS Technology, Inc. All rights Reserved. 世界⼀わかりみの深い クラウドネイティブなアプリ開発⼊⾨ on

    Azure 第1回 〜Azureでクラウドネイティブを実現するには〜 武井 宜⾏ サイオステクノロジー株式会社 2021年6⽉16⽇
  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章︓クラウドネイティブな設計
  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
  4. © SIOS Technology, Inc. All rights Reserved. 本セッションの概要 4

  5. © SIOS Technology, Inc. All rights Reserved. 本セッションの概要 5 「Azureでもっと⾝近なクラウドネイティブ」を

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

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

    ベースとなっていますので、合わせてご覧 頂けますと幸いです︕︕ クラウドネイティブってなに︖〜 Azureのアプリ開発実⾏基盤いろは 〜 https://tech-lab.sios.jp/archives/25654
  8. © SIOS Technology, Inc. All rights Reserved. 第1章:クラウドネイティブとは︖ 8

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

    よく聞くけど クラウドネイティブ ってなに︖ 本セッションの ブログのURL
  10. © SIOS Technology, Inc. All rights Reserved. 第1章:クラウドネイティブとは︖ 10 クラウドならではの機能を活かすことにより、従来のオンプ

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

    システム管理担当 エンドユーザー Azure Load Balancer Azure Load Balancer 仮想マシン (Webサーバー) 仮想マシン (データベース) 仮想マシン (データベース) デプロイ デプロイ 仮想マシン (Webサーバー) クラウドネイティブぢゃない 本番⽤リソース ステージング⽤リソース 本セッションの ブログのURL
  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統合⽤ サブネット ステージング⽤リソース
  13. © SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 13

  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
  15. © SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 15 Azure

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

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

  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 アプリケーションの実⾏基盤を分類する概念です。
  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 クラウドネイティブ クラウドネイティブ ぢゃない
  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の開発イメージ
  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() { // 何かの処理 } コンテナ
  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
  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
  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リソースのマッピングです。
  26. © SIOS Technology, Inc. All rights Reserved. 第4章:IaaS、CaaS、PaaS、FaaSのメリデリ 26

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

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

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

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

    システムを構築する際に選択するランタイム(開発⾔語)、ネットワーク構成、ストレージ などをどの程度⾃由に選択できるかという指標です。 IaaSが有利だがCaaSも負けちゃいない。 IaaS CaaS PaaS FaaS ⾃由度 ◎ ◦ ◦ △ 本セッションの ブログのURL
  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 ランタイムはある程度⾃由に選択は可能ですが、コードの実⾏形態が「関数」とい う最⼩単位のため、フレームワークのメリットを活かした設計や、有⽤な外部ライ ブラリを使った実装が出来ません。
  32. © SIOS Technology, Inc. All rights Reserved. 第4章:IaaS、CaaS、PaaS、FaaSのメリデリ 32 開発⼯数

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

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

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

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

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

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

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

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

  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 マルチクラウドで展開したいアプリケーション
  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でも実現可能です。
  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
  44. © SIOS Technology, Inc. All rights Reserved. 第5章:IaaS、CaaS、PaaS、FaaSの選定例 44 ケース3︓マルチクラウドで展開したいアプリケーション

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

  46. © SIOS Technology, Inc. All rights Reserved. 第6章:クラウドネイティブならではの設計 46 クラウドネイティブを実現するには、それに特化した設計が必要であり、その

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

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

    Twelve-Factor Appによって提唱された12の 設計パターンのうち、「設定」「プロセス」を Azureの利⽤例にマッピングしてみます。 本セッションの ブログのURL
  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
  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
  51. © SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 51 https://tech-lab.sios.jp/

    弊社技術ブログで様々なお役⽴ち技術情報を お届けしています︕︕
  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 関連ブログ
  53. © SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 53 https://www.youtube.com/channel/UCjIVEOLmZlBrgq

    7nrxVFuRw YouTubeチャネルで様々なお役⽴ち技術情報を お届けしています︕︕