Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第1回 〜Azur...
Search
Noriyuki TAKEI
June 16, 2021
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第1回 〜Azureでクラウドネイティブを実現するには〜/wakarimiazure001
Noriyuki TAKEI
June 16, 2021
More Decks by Noriyuki TAKEI
See All by Noriyuki TAKEI
第50回 Tokyo Jazug Night/react-deepdive
noriyukitakei
0
88
RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解/wakarimiragarchitecture
noriyukitakei
0
270
生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch
noriyukitakei
0
83
Prompt flowでブログ記事紹介ツイートアプリをラクチン開発/wakarimipromptflow
noriyukitakei
0
58
世界一わかりみの深いAzure OpenAI Service/wakarimiaoai
noriyukitakei
1
910
AIとペアプロ!! ChatGPTとGitHub Copilotで ToDoアプリを爆速ライブコーディング/wakarimigithubcopilot
noriyukitakei
0
96
世界一わかりみの深いApplicationGateway/wakarimiappilicationgateway
noriyukitakei
0
390
クラウドデザインパターンを使ってクールな設計をしよう/jazug12th
noriyukitakei
1
420
アウトプットはいいぞ!!〜人生折り返し地点からの情報発信で学びが楽しくなった話〜/outputisgood
noriyukitakei
0
210
Other Decks in Technology
See All in Technology
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
3
360
EventBridge Connection
_kensh
5
650
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.6k
React、まだ楽しくて草
uhyo
7
4.2k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
50k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
190
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
3.1k
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
2.2k
Databricks における 生成AIガバナンスの実践
taka_aki
1
350
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
820
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
170
AIプラットフォームを運用し続けるための可観測性
tanimuyk
4
1.2k
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Building the Perfect Custom Keyboard
takai
2
780
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
600
Become a Pro
speakerdeck
PRO
31
6k
Paper Plane (Part 1)
katiecoart
PRO
0
8.6k
Claude Code のすすめ
schroneko
67
230k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
The Language of Interfaces
destraynor
162
27k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Bash Introduction
62gerente
615
210k
Transcript
© SIOS Technology, Inc. All rights Reserved. 世界⼀わかりみの深い クラウドネイティブなアプリ開発⼊⾨ on
Azure 第1回 〜Azureでクラウドネイティブを実現するには〜 武井 宜⾏ サイオステクノロジー株式会社 2021年6⽉16⽇
© 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 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
© 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 Load Balancer Azure Load Balancer 仮想マシン (Webサーバー) 仮想マシン (データベース) 仮想マシン (データベース) デプロイ デプロイ 仮想マシン (Webサーバー) クラウドネイティブぢゃない 本番⽤リソース ステージング⽤リソース 本セッションの ブログのURL
© 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統合⽤ サブネット ステージング⽤リソース
© SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 13
© 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
© SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 15 Azure
App Service アプリケーションを実⾏する基盤です。もちろん仮想マシ ンでもアプリケーション実⾏できるじゃんと思います。し かしAzure App Serviceのすごいところは、Azureポータル というAzureの管理画⾯からZIPアーカイブしたアプリケー ションをアップロードするだけでアプリケーションが実⾏ 出来てしまうところです。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 16 Azure
App Service Azure上でMySQLを実⾏するサービスです。 通常MySQLを稼働する際は仮想マシン上にMySQLをインス トールしていましたが、Azure Database for MySQLのリ ソースを作成すると、すぐに実⾏できるMySQLの基盤が出 来上がります。開発者が⾏うのは、MySQLクライアントで MySQLに接続し、データベースやスキーマの作成を⾏うだ けです。⾯倒なバックアップなども全部Azureが⾯倒⾒てく れます。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 第2章:クラウドネイティブを実現するサービス 17 Application
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とは︖ 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 アプリケーションの実⾏基盤を分類する概念です。
© 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 クラウドネイティブ クラウドネイティブ ぢゃない
© 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の開発イメージ
© 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() { // 何かの処理 } コンテナ
© 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
© 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
© 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リソースのマッピングです。
© SIOS Technology, Inc. All rights Reserved. 第4章:IaaS、CaaS、PaaS、FaaSのメリデリ 26
© SIOS Technology, Inc. All rights Reserved. 第4章:IaaS、CaaS、PaaS、FaaSのメリデリ 27 IaaS
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 保守性
IaaS OSのレイヤーからシステム管理者が⾯倒を⾒なければならず、OSのセキィリティ パッチやアプリケーションの脆弱性対応はシステム管理者⾃⾝が実施する必要があ ります。 CaaS PaaS アプリケーションのレイヤーより下位の層はパブリッククラウドの責任範囲ですの で、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とオンプレミス上のサーバーとほぼ同じ⾃由度で構築が可 能です。 CaaS PaaS システム管理者が扱えるのはランタイム(開発⾔語)より上のレイヤーになりますの で、IaaSほどの⾃由度はありません。実⾏出来るランタイムは、パブリッククラ ウドが提供するものに限られます。 IaaSとほぼ同じ⾃由度を持ちますが、コンテナの実⾏基盤によっては、capability の設定によって、動作が制限されたりする可能性があります。例えばWeb App for Containersは任意のストレージをマウントすることが出来ません。 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などのミドルウェアの設計、構築、フレームワークの選定、学 習、性能検証など、開発には多岐にわたるタスクが必要となります。 CaaS PaaS IaaSほどではないにしても、フレームワークの選定等、アプリケーションのレイ ヤーより上は、必要なタスクとなります。 IaaS異なりOSやコンテナ実⾏基盤の構築は必要ないのですが、コンテナイメージ を作成するのが若⼲⼿間になります。そういう意味ではPaaSのほうが有利です。 FaaS FaaSは「関数」と呼ばれる、アプリケーションを実⾏する最⼩形態以外のレイ ヤーはすべて抽象化されており、関数の中にコードを記述するだけで、様々な処理 を実⾏出来ます。
© 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 アプリケーションが処理をしてようが、そうでなかろうが、仮想マシンが稼働して いる時間だけコストが発⽣するので無駄が多い。 CaaS PaaS IaaSと同様 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台以上はスケールアウトしません。 CaaS PaaS IaaSと異なり⾃由にスケールイン、スケールアウト出来る他、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 移植性
IaaS OSから上のレイヤーは全てシステム管理者が⾃由に扱えますので、ネットワーク、 ストレージ、ランタイム、もちろんアプリケーションも全て、ほぼ忠実に移植が可 能です。 CaaS PaaS IaaSと⽐べると、移⾏に制約が多くなります。例えば、移⾏先のパブリッククラ ウドサービスが提供する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の選定例 41 IaaS、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章:クラウドネイティブならではの設計 48 The
Twelve-Factor Appによって提唱された12の 設計パターンのうち、「設定」「プロセス」を Azureの利⽤例にマッピングしてみます。 本セッションの ブログのURL
© 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
© 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
© SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 51 https://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. 最後に︕︕ 53 https://www.youtube.com/channel/UCjIVEOLmZlBrgq
7nrxVFuRw YouTubeチャネルで様々なお役⽴ち技術情報を お届けしています︕︕