© SIOS Technology, Inc. All rights Reserved.世界⼀わかりみの深いクラウドネイティブなアプリ開発⼊⾨ on Azure第1回〜Azureでクラウドネイティブを実現するには〜武井 宜⾏サイオステクノロジー株式会社2021年6⽉16⽇
View Slide
© 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章︓クラウドネイティブな設計
© SIOS Technology, Inc. All rights Reserved.About Me3BCPVUNFNoriyuki TAKEIҪ ٓߦInformation• サイオステクノロジー株式会社• Microsoft MVP for AzureFavorites• Squash• Ski• Running• Canoe• Sweetsbloghttps://tech-lab.sios.jp/core skillCloud Native, Serverless全般Twitter@noriyukitakei
© SIOS Technology, Inc. All rights Reserved.本セッションの概要4
© SIOS Technology, Inc. All rights Reserved.本セッションの概要5「Azureでもっと⾝近なクラウドネイティブ」を⽬指し、クラウドネイティブを実現するための様々な技術を世界⼀わかりみ深く説明するシリーズ配信モノです︕︕
© SIOS Technology, Inc. All rights Reserved.本セッションの概要6ハッシュタグ#wakarimiazureもしくは@noriyukitakeiに忌憚ないご意⾒お願いいたします
© SIOS Technology, Inc. All rights Reserved.本セッションの概要7本セッションは以下のブログがベースとなっていますので、合わせてご覧頂けますと幸いです︕︕クラウドネイティブってなに︖〜 Azureのアプリ開発実⾏基盤いろは 〜https://tech-lab.sios.jp/archives/25654
© SIOS Technology, Inc. All rights Reserved.第1章:クラウドネイティブとは︖8
© SIOS Technology, Inc. All rights Reserved.第1章:クラウドネイティブとは︖9ところでよく聞くけどクラウドネイティブってなに︖本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第1章:クラウドネイティブとは︖10クラウドならではの機能を活かすことにより、従来のオンプレミス上の物理マシンや仮想マシンでは実現出来なかったような運⽤を実現します。例えば簡単にスケールアウト出来たり、OSのセキュリティアップデートなどの管理が不要になったりとか。クラウドネイティブとは︖本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第1章:クラウドネイティブとは︖11システム運⽤担当システム管理担当エンドユーザーAzure LoadBalancerAzure LoadBalancer仮想マシン(Webサーバー)仮想マシン(データベース)仮想マシン(データベース)デプロイデプロイ仮想マシン(Webサーバー)クラウドネイティブぢゃない本番⽤リソースステージング⽤リソース 本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第1章:クラウドネイティブとは︖12クラウドネイティブだよ仮想ネットワークApp Service Planアプリ本番スロットAzure Databasefor MySQLAzureKey VaultApplicationInsights本番⽤リソースVNET統合⽤サブネットAzureReposAzurePipelinesContainerRegistryシステム開発者アプリステージングスロットAzure Databasefor MySQLAzureKey VaultApplicationInsightsVNET統合⽤サブネットステージング⽤リソース
© SIOS Technology, Inc. All rights Reserved.第2章:クラウドネイティブを実現するサービス13
© SIOS Technology, Inc. All rights Reserved.第2章:クラウドネイティブを実現するサービス14Azureでクラウドネイティブを実現する代表的サービス群(ほんの⼀部)です。アプリケーション運⽤管理ネットワークストレージApp ServiceAzureFunctionsAzureKubernetes ServiceAzureContainer InstancesApplicationInsightsAzureKey VaultAzure PipelinesAzureSecurity CenterAzureLoad BalancerAplicationGateway Azure Firewall Azure CDNAzure Databasefor MySQLAzureBlob StorageContainerRegistryAzure Cachefor Redis
© SIOS Technology, Inc. All rights Reserved.第2章:クラウドネイティブを実現するサービス15Azure App Serviceアプリケーションを実⾏する基盤です。もちろん仮想マシンでもアプリケーション実⾏できるじゃんと思います。しかしAzure App Serviceのすごいところは、AzureポータルというAzureの管理画⾯からZIPアーカイブしたアプリケーションをアップロードするだけでアプリケーションが実⾏出来てしまうところです。本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第2章:クラウドネイティブを実現するサービス16Azure App ServiceAzure上でMySQLを実⾏するサービスです。通常MySQLを稼働する際は仮想マシン上にMySQLをインストールしていましたが、Azure Database for MySQLのリソースを作成すると、すぐに実⾏できるMySQLの基盤が出来上がります。開発者が⾏うのは、MySQLクライアントでMySQLに接続し、データベースやスキーマの作成を⾏うだけです。⾯倒なバックアップなども全部Azureが⾯倒⾒てくれます。 本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第2章:クラウドネイティブを実現するサービス17Application Insightsアプリケーションに障害が発⽣したりパフォーマンスが遅いなどの問題が発⽣した場合は、従来の⽅法だと各サーバーに出⼒されたテキスト形式のログとニラメッコしながら原因を解析したと思います。Application Insightsを使えば、アプリケーションのコードを変更することなく、CPU使⽤率やメモリ使⽤量(メトリックスといいます)や、アプリケーションが出⼒するログをApplication Insightsに送付します。Application Insightsはそれらの情報を独⾃のデータベースに貯めて、グラフ化して可視化したり、SQLライクな構⽂でログを検索出来たりします。
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖18
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖19OS(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アプリケーションの実⾏基盤を分類する概念です。
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖20OS(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クラウドネイティブクラウドネイティブぢゃない
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖21IaaSOS(LinuxやWindows)ランタイム(JavaやPHPなどの開発⾔語)ミドルウェア(ApacheやTomcatなど)アプリケーションフレームワーク(SpringやCakePHPなど)アプリケーションコンポーネント群クラスメソッドpublic void hello() {// 何かの処理}コンテナ(必要に応じて)OSインストール済みの基盤OSより上のレイヤー全てをシステム管理者が管理OSのセキュリティアップデートや、ミドルウェア、アプリケーションフレームワークへの脆弱性対応なども、当然システム管理者の責任⾃由度は⾼く、どんな⾔語やミドルウェアでも実⾏可能仮想マシンを作成する。JavaやPHPなどのランタイムをインストールする。ApacheやTomcatなどのミドルウェアをインストールする。SpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。アプリケーションをビルドする。ビルドしたアプリケーションをミドルウェア上にデプロイする。IaaSの開発イメージ
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖22CaaSSpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。アプリケーションをビルドする。アプリケーションのコンテナイメージを作成する。コンテナイメージをコンテナレジストリにPushする。CaaSの開発イメージIaaSにおいて、システム管理者の責任範囲であった「OS」が、パブリッククラウドの責任範囲OSやコンテナ実⾏環境のセキュリティアップデートは、パブリッククラウド側で実施アプリケーションフレームワーク(SpringやCakePHP等)で脆弱性が発覚した場合は、システム管理者の責任⾃由度はIaaSに⽐べるとほぼ同程度で、更に移植性も⾼く、今⼀番注⽬度の⾼いレイヤーである。 OS(LinuxやWindows)ランタイム(JavaやPHPなどの開発⾔語)ミドルウェア(ApacheやTomcatなど)アプリケーションフレームワーク(SpringやCakePHPなど)アプリケーションコンポーネント群クラスメソッドpublic void hello() {// 何かの処理}コンテナ
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖23PaaSSpringやCakePHPなどのフレームワーク上でアプリケーションを開発する。アプリケーションをビルドする。ZIPなどの形式で圧縮して、パブリッククラウドの管理画⾯からアップロードする。PaaSの開発イメージIaaSにおいて、システム管理者の責任範囲であった「OS」「Runtime」「Middleware」が、パブリッククラウドの責任範囲OSのセキュリティアップデートや、ミドルウェアの脆弱性対応などは、パブリッククラウド側で実施アプリケーションフレームワーク(SpringやCakePHP等)で脆弱性が発覚した場合は、システム管理者の責任⾃由度はIaaSに⽐べると低く、パブリッククラウド側で提供されている⾔語のみを選択可能 OS(LinuxやWindows)ランタイム(JavaやPHPなどの開発⾔語)ミドルウェア(ApacheやTomcatなど)アプリケーションフレームワーク(SpringやCakePHPなど)アプリケーションコンポーネント群クラスメソッドpublic void hello() {// 何かの処理}コンテナ(必要に応じて)本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖24FaaSパブリッククラウドのポータルにアクセスする。コードを書く。FaaSの開発イメージOSやランタイム、ミドルウェアはもちろんのこと、アプリケーションフレームワークさえも不要実⾏するコードのみを記載すれば、プログラムが実⾏出来るOSのセキュリティアップデートや、ミドルウェア、アプリケーションフレームワークへの脆弱性対応は不要OS(LinuxやWindows)ランタイム(JavaやPHPなどの開発⾔語)ミドルウェア(ApacheやTomcatなど)アプリケーションフレームワーク(SpringやCakePHPなど)アプリケーションコンポーネント群クラスメソッドpublic void hello() {// 何かの処理}コンテナ(必要に応じて)本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第3章:IaaS、CaaS、PaaS、FaaSとは︖25IaaSCaaSPaaSFaaSApp ServiceAzureKubernetes ServiceAzureContainer InstancesAzureFunctionsVirtualMachineApp Service(カスタムコンテナ)IaaS、CaaS、PaaS、FaaSとAzureリソースのマッピングです。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ26
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ27IaaS CaaS PaaS FaaS保守性 △ ○ ○ ◎⾃由度 ◎ ○ ○ △開発⼯数 △ ○ ○ ◎費⽤ ○ ○ ○ ◎スケーラビリティ △ ○ ○ ◎移植性 ◎ ◎+ ○ △◎・・・とってもよい( ´∀`)◯・・・普通(・∀・)△・・・イマイチ(´・ω・`)IaaS、CaaS、PaaS、FaaSのメリデリを以下の指標にてまとめてみました。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ28保守性IaaS CaaS PaaS FaaS保守性 △ ○ ○ ◎保守性とは、サービス開始後、アプリケーション正常稼働の維持のために発⽣する作業の効率性を定めた指標です。その作業は、 OSのセキュリティパッチ適⽤、アプリケーションフレームワークやライブラリの脆弱性対応、バージョンアップ等、その作業内容は多岐にわたり、しかも不定期に発⽣します。FaaSが有利︕︕
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ29保守性IaaSOSのレイヤーからシステム管理者が⾯倒を⾒なければならず、OSのセキィリティパッチやアプリケーションの脆弱性対応はシステム管理者⾃⾝が実施する必要があります。CaaSPaaSアプリケーションのレイヤーより下位の層はパブリッククラウドの責任範囲ですので、OS周りの対応は不要ですが、アプリケーションのレイヤーのメンテナンスは、必要です。OSのレイヤーやコンテナ実⾏基盤などはパブリッククラウドの責任範囲ですので、⾯倒を⾒る必要はないのですが、コンテナ⾃体のセキュリティアップデートは実⾏しなければいけません。FaaSインフラのレイヤーは全て抽象化されます。つまり、今までシステム管理者を煩わせていたセキュリティパッチ当てやライブラリのバージョンアップなどは⼀切気にせず、コーディングのみに集中できます。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ30⾃由度システムを構築する際に選択するランタイム(開発⾔語)、ネットワーク構成、ストレージなどをどの程度⾃由に選択できるかという指標です。IaaSが有利だがCaaSも負けちゃいない。IaaS CaaS PaaS FaaS⾃由度 ◎ ○ ○ △本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ31⾃由度IaaS開発⾔語は⾃由にインストール可能、接続するストレージのプロトコルもCIFS、NFS、WebDav、iSCSIとオンプレミス上のサーバーとほぼ同じ⾃由度で構築が可能です。CaaSPaaSシステム管理者が扱えるのはランタイム(開発⾔語)より上のレイヤーになりますので、IaaSほどの⾃由度はありません。実⾏出来るランタイムは、パブリッククラウドが提供するものに限られます。IaaSとほぼ同じ⾃由度を持ちますが、コンテナの実⾏基盤によっては、capabilityの設定によって、動作が制限されたりする可能性があります。例えばWeb App forContainersは任意のストレージをマウントすることが出来ません。FaaSランタイムはある程度⾃由に選択は可能ですが、コードの実⾏形態が「関数」という最⼩単位のため、フレームワークのメリットを活かした設計や、有⽤な外部ライブラリを使った実装が出来ません。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ32開発⼯数アプリケーションを完成させるまでに必要な⼯数になります。この⼯数にはインフラ周り(OSやミドルウェア、ランタイムのインストール・セットアップ)も含みます。FaaSが有利︕︕IaaS CaaS PaaS FaaS開発⼯数 △ ○ ○ ◎しかし、学習⼯数を軽視してはいけない。本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ33開発⼯数IaaS ApacheやTomcatなどのミドルウェアの設計、構築、フレームワークの選定、学習、性能検証など、開発には多岐にわたるタスクが必要となります。CaaSPaaS IaaSほどではないにしても、フレームワークの選定等、アプリケーションのレイヤーより上は、必要なタスクとなります。IaaS異なりOSやコンテナ実⾏基盤の構築は必要ないのですが、コンテナイメージを作成するのが若⼲⼿間になります。そういう意味ではPaaSのほうが有利です。FaaSFaaSは「関数」と呼ばれる、アプリケーションを実⾏する最⼩形態以外のレイヤーはすべて抽象化されており、関数の中にコードを記述するだけで、様々な処理を実⾏出来ます。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ34費⽤それぞれのサービスを稼働させるために必要な料⾦になります。FaaSが有利︕︕IaaS CaaS PaaS FaaS費⽤ ○ ○ ○ ◎本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ35費⽤IaaS アプリケーションが処理をしてようが、そうでなかろうが、仮想マシンが稼働している時間だけコストが発⽣するので無駄が多い。CaaSPaaSIaaSと同様FaaS 純粋に関数を実⾏した時間のみ課⾦されるので、⾮常に無駄が少ないです。IaaSと同様
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ36スケーラビリティスケールアウト(負荷に応じて、サーバーの台数を増やすことで処理能⼒を向上させること)の柔軟性、つまり負荷に応じた必要な処理能⼒の提供可否を⽰す指標となります。FaaSが有利︕︕IaaS CaaS PaaS FaaSスケーラビリティ △ ○ ○ ◎本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ37スケーラビリティIaaSロードバランサーの構築や、スケールアウトの設定などが必要の上、 スケールアウトするサーバーの台数を10台と決めますと、どれだけ負荷が上がったとしても、10台以上はスケールアウトしません。CaaSPaaSIaaSと異なり⾃由にスケールイン、スケールアウト出来る他、CPU使⽤率などのメトリックスでオートスケールも可能。FaaS負荷に応じてほぼ無限にスケールアウトします。コンテナ技術により、IaaSのように処理が発⽣していないときにもリソースを占有せず、効率的に使えるためです。IaaSと異なり⾃由にスケールイン、スケールアウト出来る他、CPU使⽤率などのメトリックスでオートスケールも可能。
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ38移植性開発したアプリケーションを他のパブリッククラウドサービスやオンプレミスに移⾏する際、どれだけ容易にそして確実に実施出来るかを⽰す指標となります。CaaSが有利。IaaS CaaS PaaS FaaS移植性 ◎ ◎+ ○ △本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第4章:IaaS、CaaS、PaaS、FaaSのメリデリ39移植性IaaSOSから上のレイヤーは全てシステム管理者が⾃由に扱えますので、ネットワーク、ストレージ、ランタイム、もちろんアプリケーションも全て、ほぼ忠実に移植が可能です。CaaSPaaSIaaSと⽐べると、移⾏に制約が多くなります。例えば、移⾏先のパブリッククラウドサービスが提供するPaaSに、移⾏元のアプリケーションが利⽤するランタイムが提供されてない場合などです。可搬性の⾼いコンテナ技術を活⽤しているので、移⾏元と移⾏先でコンテ実⾏環境が同⼀であれば、クラウドを超えてのアプリケーションの移植がIaaSに⽐べて更に容易になります。FaaS FaaSは、提供元クラウドベンダーの仕様に強く依存するため、他のクラウドベンダーへの移植はかなり困難です。
© SIOS Technology, Inc. All rights Reserved.第5章:IaaS、CaaS、PaaS、FaaSの選定例40
© SIOS Technology, Inc. All rights Reserved.第5章:IaaS、CaaS、PaaS、FaaSの選定例41IaaS、CaaS、PaaS、FaaSの選定例を以下の代表的な3つのケースにて考えてみました。ケース1 今後Azureでしか使わないような単純な作りのWebアプリケース2 Apacheに特殊なモジュールが必要なWebアプリケース3 マルチクラウドで展開したいアプリケーション
© 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でも実現可能です。
© 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
© SIOS Technology, Inc. All rights Reserved.第5章:IaaS、CaaS、PaaS、FaaSの選定例44ケース3︓マルチクラウドで展開したいアプリケーションAzureやAWSなど複数のクラウド(マルチクラウド)で同じアプリケーションを展開したい場合があります。様々な理由があると思いますが、例えば、シングルクラウドですと、そのクラウドに障害が発⽣した場合サービスを継続出来ません。よって同様の機能を提供するアプリケーションを他のクラウドにも提供し、障害発⽣時はDNS変更などでそのクラウドに切り替えるといった対応が予想されます。また、ベンダーロックインという問題もあります。Azure FunctionsやAWSのLambdaなどあまりにもクラウドベンダー特有の機能を使ってしまうと、いざ他のクラウドに移植したい場合の障壁になる場合があります。こういったケースでは断然CaaSが有利です。コンテナ技術はその特性から可搬性に優れています。移⾏元と移⾏先のコンテナのランタイムが同じであれば、アプリケーションの移植は容易です。CaaS
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計45
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計46クラウドネイティブを実現するには、それに特化した設計が必要であり、その指針を⽰したものとして、「The Twelve-Factor App」があります。コードベース バージョン管理されている1つのコードベースと複数のデプロイ依存関係 依存関係を明⽰的に宣⾔し分離する設定 設定を環境変数に格納するバックエンドサービス バックエンドサービスをアタッチされたリソースとして扱うビルド、リリース、実⾏ビルド、リリース、実⾏の3つのステージを厳密に分離する
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計47プロセスアプリケーションを1つもしくは複数のステートレスなプロセスとして実⾏するポートバインディング ポートバインディングを通してサービスを公開する並⾏性 プロセスモデルによってスケールアウトする廃棄容易性 ⾼速な起動とグレースフルシャットダウンで堅牢性を最⼤化する開発/本番⼀致 開発、ステージング、本番環境をできるだけ⼀致させた状態を保つログ ログをイベントストリームとして扱う管理プロセス 管理タスクを1回限りのプロセスとして実⾏する
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計48The Twelve-Factor Appによって提唱された12の設計パターンのうち、「設定」「プロセス」をAzureの利⽤例にマッピングしてみます。本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計49設定エンドユーザー本番スロット新アプリ旧アプリApp Service プランスワップシステム運⽤担当$DB_HOST=$_ENV[“DB_HOST”]Config.phpDB_HOST=prd環境変数設定DB_HOST=stg環境変数設定システム管理担当12345Azure Reposステージングスロット4本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.第6章:クラウドネイティブならではの設計50プロセスApp ServiceCookie保存ディレクトリCookie名 値sessid rjfm34od5… …HTTPリクエストリクエスト⾏ GET /messages HTTP/1.1ヘッダ Cookie: sessid=rjfm34od5メッセージボディ …HTTPリクエスト App ServiceセッションID 値rjfm34od5 ntakei… …Azure Cache for Redisスケールアウトにより新しく⽣成本セッションのブログのURL
© SIOS Technology, Inc. All rights Reserved.最後に︕︕51https://tech-lab.sios.jp/弊社技術ブログで様々なお役⽴ち技術情報をお届けしています︕︕
© 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関連ブログ
© SIOS Technology, Inc. All rights Reserved.最後に︕︕53https://www.youtube.com/channel/UCjIVEOLmZlBrgq7nrxVFuRwYouTubeチャネルで様々なお役⽴ち技術情報をお届けしています︕︕