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

Azureでクラウドネイティブを実現するには?

 Azureでクラウドネイティブを実現するには?

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

動画視聴は>こちら

【アジェンダ】
1.クラウドネイティブとは?
2.IaaS、PaaS、FaaS、CaaSのメリデリ
2.1 保守性
2.2 自由度
2.3 開発工数
2.4 費用
2.5 スケーラビリティ
2.6 移植性
3.クラウドネイティブな開発に必要な設計
4.Azureでクラウドネイティブな開発を実現する機能
5.デモンストレーション(App Serviceによる高速でマネージドなWebアプリ開発)

SIOS Tech. Lab

June 16, 2021
Tweet

More Decks by SIOS Tech. Lab

Other Decks in Technology

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

    about me 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. 本セッションの概要 5 「Azureでもっと身近なクラウドネイティブ」を

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

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

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

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

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

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

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

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

    Insights アプリケーションに障害が発生したりパフォーマンスが遅 いなどの問題が発生した場合は、従来の方法だと各サー バーに出力されたテキスト形式のログとニラメッコしなが ら原因を解析したと思います。 Application Insightsを使えば、アプリケーションのコード を変更することなく、CPU使用率やメモリ使用量(メトリッ クスといいます)や、アプリケーションが出力するログを Application Insightsに送付します。 Application Insightsはそれらの情報を独自のデータベース に貯めて、グラフ化して可視化したり、SQLライクな構文 でログを検索出来たりします。
  15. © 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 アプリケーションの実行基盤を分類する概念です。
  16. © 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 クラウドネイティブ クラウドネイティブ ぢゃない
  17. © 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の開発イメージ
  18. © 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() { // 何かの処理 } コンテナ
  19. © 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
  20. © 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
  21. © 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リソースのマッピングです。
  22. © SIOS Technology, Inc. All rights Reserved. 第4章:IaaS、CaaS、PaaS、FaaSのメリデリ 27 IaaS

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

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

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

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

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

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

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

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

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

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

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

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

    みました。 ケース1 今後Azureでしか使わないような単純な作りのWebアプリ ケース2 Apacheに特殊なモジュールが必要なWebアプリ ケース3 マルチクラウドで展開したいアプリケーション
  36. © 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でも実現可能です。
  37. © 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
  38. © SIOS Technology, Inc. All rights Reserved. 第5章:IaaS、CaaS、PaaS、FaaSの選定例 44 ケース3:マルチクラウドで展開したいアプリケーション

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

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

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

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

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

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