SlideShare une entreprise Scribd logo
1  sur  20
Azure Serverless
Azure Functionsでサーバーを意識しない開発
日本マイクロソフト
アプリケーションソリューションアーキテクト
服部 佑樹
Functions のアプリケーション開発
2
複数言語での開発
パッケージ管理
アプリの計画と作成 コーディング アプリの拡張
オーケストレーション
統合管理
 何のサービスと連携させ
るか決定し、バインディ
ング・トリガーを定義し
ます
 最初のFunctions Appを作
成します
 Functions独自のプロキシ機
能やAPI Managementを用い
て関数のコードからRESTful
なAPIへ拡張します
 Azureのサービスやその他の
サービス・アプリと連携し、
Functionsを機能の一部とし
て組み込んでいきます
 オンラインエディタやロー
カル環境のエディタで開発
します
 多様な言語から開発言語を
選びます
 パッケージの管理や環境変
数を設定します
Bindings 環境変数 RESTful API
Automation
Logic Apps
Application Insights
Azureのサービス
Azure外のサービス
ソースコードマネジメント
 Gitを用いてコードを管理し
ます
 ローカル開発も容易になりま
す
ソース管理
Proxies
Azure Functions
イベント駆動の「機能」実行プラットフォーム
 柔軟で強力なサーバーレス スクリプト実行環境
 インフラを抽象化し設計者はビジネス、開発者はコードに注力可能
 業務要件に応じたスケーリングが可能
 HTTP APIのエンドポイントとして公開可能
対応プログラミング言語
C#, Javascript, F#, Python, PHP, Batch, Bash, PowerShell
ファイル作成やPush通知を容易にするバインディングの機能をもつ
トリガー , スケジュール , HTTP (Webhook) , キュー, etc.
3
(*参考)サーバーレスアーキテクチャ
サーバを自前で用意せず、マネージドサービスを活用してシステムを構築する
サーバーレスアーキテクチャの利点
① ビジネスロジックに注力
 コンピューティングに注力しない
 OSレイヤー以下を抽象化しサーバーを意識させない
 自動的にスケールし、任意の処理が実行できる
② コストの低さ
 利用開始のコストは低く、簡単に体験できる
4
Functions のプログラミングコンセプト
トリガー
 イベントをトリガーにコードを実行するサーバーレス開発基盤
バインディング
バインディングの仕組みで他のサービスとの接続を容易にします。
 Blob や OneDrive 上のファイル、Push通知などを Function App 内で操
作できます
 アプリケーション内でサービスへの接続や参照を省略可能にします。
5
バインディング
6
バインディング サービス トリガー インプット
アウトプッ
ト
スケジュール Azure Functions ✔
HTTP
(REST または Webhook)
Azure Functions ✔ ✔
Blob Storage Azure Storage (Azure Storage) ✔ ✔ ✔
イベント Azure Event Hubs ✔ ✔
キュー Azure Storage (Azure Storage) ✔ ✔
キューとトピック Azure Service Bus ✔ ✔
Storage テーブル Azure Storage (Azure Storage) ✔ ✔
SQL テーブル Azure Mobile Apps ✔ ✔
NoSQL DB Azure DocumentDB ✔ ✔
プッシュ通知 Azure Notification Hub ✔
Twilio SMS テキスト Twilio ✔
SendGrid 電子メール SendGrid ✔
SaaS (Preview) Box ✔ ✔ ✔
Dropbox ✔ ✔ ✔
File System ✔ ✔ ✔
FTP ✔ ✔ ✔
OneDrive ✔ ✔ ✔
OneDrive for Business ✔ ✔ ✔
SFTP ✔ ✔ ✔
Google Drive ✔ ✔
 Azure Functions では、トリガーとバインドを使
用して、Azure やその他のサービスで発生したイ
ベントに応答するコードを記述できます。
 トリガーとバインドは、関数を呼び出す方法と、
その関数で処理するデータを定義する宣言型の方
法です。 トリガーは、関数を呼び出す方法を定
義します。
 参考
Azure Functions でのトリガーとバインドの概念
外部テーブルバインディング
7
バインディング コネクター トリガー インプット アウトプット
外部テーブル
(Preview)
DB2 ✔ ✔
Dynamics 365 for Operations ✔ ✔
Dynamics 365 ✔ ✔
Dynamics NAV ✔ ✔
Google Sheets ✔ ✔
Informix ✔ ✔
Dynamics 365 for Financials ✔ ✔
MySQL ✔ ✔
Oracle Database ✔ ✔
Common Data Service ✔ ✔
Salesforce ✔ ✔
SharePoint ✔ ✔
SQL Server ✔ ✔
Teradata ✔ ✔
UserVoice ✔ ✔
Zendesk ✔ ✔
 Functionsから外部テーブルを操作することが
可能です。
 テーブルバインディングは、外部API接続を活
用してサードパーティのSaaSプロバイダーと
の認証を行います。
 参考
Azure Functions 外部テーブル バインディン
グ (プレビュー)
代表的なバインディング
HTTP
 SSL通信(HTTPS)にも対応し、簡単に作成可能
 Logic Appsとの組み合わせなどで、ワークフローを自動化
WebHooks
 WebHooks をリッスンするエンドポイントを簡単に作成可能
 ASP.NET のWebHooks libraryを使えば、バラエティに富んだトークンベースの検証機能を利用可能
タイマー
 cronの表現方法で記述可能
SaaS
 DropboxやGoogle Driveとの連携で既存の処理を自動化
 Google Spread Sheetとの連携で簡易的な業務処理
外部テーブル
 MySQLやOracleの既存DB資産に連携可能
8
プロキシ機能(Preview)
従来
 Functionsで複数のAPIを作ることは出来ても、それをマネージする手間があった
 RESTfulなAPIを例えば作るとしたらAPI Managementなどの他の仕組みを利用する必要があった
新機能
 Azure Functions側に軽量なAPIマネジメントのサービスが追加された
 これでFunctionsだけでRESTなAPIを用意することができるようになります。
9
スロット機能(Preview)
10
App Service Plan
sample1.azurewebsites.net
sample2.azurewebsites.net
sample3.azurewebsites.net
devスロット
sample2-dev.azurewebsites.net
testスロット
sample2-test.azurewebsites.net
prodスロット
sample2-prod.azurewebsites.net
stagingスロット
sample2-staging.azurewebsites.net
環境に合わせてデプロイメントスロットを変更できます。
利用シナリオ例
 サムネイルのリサイジング(非同期のバックグラウンド処理)
 Notification Hubと合わせたPush API
 毎夜で日付の古い Blob を Cool Blob Storage に移動
 Logic Apps や Microsoft Flow 単体では難しい処理を実行
 ログの整形やスクレイピング
 CQRSパターンの実装、Webhookの対応
同様の事は VM上でも実装可能ではあるが、処理に注力したい、イベント駆動したい場合にFunctionsは有用
11
Azure Functionsの位置づけ
Web
Apps
Mobile
Apps
API
Management
API
Apps
Logic
Apps
Notification
Hubs
Content Delivery
Network (CDN)
Media
Services
HDInsight Machine
Learning
Stream
Analytics
Data
Factory
Event
Hubs
Mobile
Engagement
Biztalk
Services
Hybrid
Connections
Service
Bus
Storage
Queues SQL
Database
DocumentDB
Redis
Cache
Search
Tables
SQL Data
Warehouse
Cloud
Services
Batch Remote App
Service
Fabric Visual Studio
Application
Insights
Azure SDK
Team Project
Active
Directory
Multi-Factor
Authentication
Automation
Portal
Key Vault
Store /
Marketplace
VM Image Gallery
& VM Depot
SECURITY &
MANAGEMENT PLATFORM SERVICES
Backup
StorSimple
Site
Recovery
Import/Export
Azure AD
Connect Health
AD Privileged
Identity Mngt
Operational
Insights
HYBRID
OPERATIONS
Azure
Functions
12
Azure Functions は App Servicesの一つです
App Servicesの中での位置づけ
App Services
Azure の アプリケーションプラットフォーム
 オートスケール/ロードバランシング
 OSとフレームワークの迅速なパッチ対応
 多種多様な言語とフレームワーク
 DevOpsに適した環境
 サービス管理の容易さ
API App / API Management
クラウドとオンプレミスでの API の
開発、ホスト、および使用を容易に
する機能を提供
Logic Apps
複雑なビジネス プロセスを簡素化および実装
Azure Functions
小規模なコード (関数) をクラウドで
手軽に実行できるソリューション
Web サイトと Web アプリケーション
をホストするために最適化された、完
全に管理されたコンピューティング プ
ラットフォーム
Web Apps
サインイン、プッシュ通知、データ同期機能など
をモバイル アプリケーションに追加
Mobile Apps
13
Functionsのアーキテクチャ
Functions ランタイム
WebJobs Core SDK
WebJobs
Extension
Language
Provider
Language
Provider
WebJobs
Extension
Functions
プログラミング
インタフェース
Web Apps
トリガー
インプット バインディング
アウトプット バインディング
14
(*参考)Azure FunctionsとWeb Jobsの違い
15
Functions Web Jobs
ホスティングモデル
スケーリング 構成不要のスケーリング App Service プランによるスケーリング
価格 従量課金プランまたは App Service プラン App Service プラン
ホスティング
Function Appがwebフロントエンドも含みすべてをマネー
ジする
Web/Mobile/API appのバックグラウンドで動く、
実行の種類 トリガー、(タイマー トリガーによる) スケジュール トリガー、継続的、スケジュール
プログラミングモデル
トリガー イベント
タイマー、Azure DocumentDB、Azure Event Hub、
HTTP/webhook (GitHub、Slack)、Azure App Service
Mobile Apps、Azure Notification Hubs、Azure Service
Bus、Azure Storage
Azure Storage、Azure Service Bus
開発環境
より多様な開発環境(Web portal, VSCode, dynamically
builds itself)
従来の開発環境(Visual Studio, NuGet, MSBuild)
HTTP(S)のサポート ○ ☓
関数(Def)の数 存在するのは一つの関数 多くの関数が一つのクラスに存在
対応言語
C# / F# / JavaScript
(Preview : ウィンドウ スクリプト / PowerShell / Bash /
PHP / Python )
C# / JavaScript / ウィンドウ スクリプト / PowerShell
/ Bash / PHP / Python
共通の機能
機能指向プログラム
外部ライブラリ利用可能
WebJobs SDK Extensionをサポート
local開発・デバッグが可能
WebJobsのダッシュボードが使用可能
Functions開発のことはじめ
小さく始める
• まずは、既存のサービスの1機能(APIやバックグラウンドプロセス)を置き換えてみる
• 既存の環境で、特定の用途にしか使わない機能をアウトソースしてみる
推奨される運用方法
• 1関数につき、「1個の処理」を定義する
• 何回処理を実行しても同じ結果が返る
• 処理は早く終わらせる(Timeoutは300sです。)
16
Functionsのディレクトリ構造
17
D:Home
├─data
│ ├─Functions
│ │ ├─sampledata
│ ├─secrets
├─LogFiles
│ ├─Application
│ │ └─Functions
│ │ ├─Function
│ │ └─Host
│ └─SiteExtensions
│ └─Functions
├─site
│ └─wwwroot
│ ├─BlobTriggerCSharp1
│ │ ├─function.json
│ │ └─run.csx
│ ├─host.json
│ │
│ ├─<C#なFunction App>
│ │ ├─run.csx
│ │ ├─project.json
│ │ ├─function.json
│ │ └─bin
│ │ └─xxxx.dll
│ │
│ ├─<node.jsなFunction App>
│ │ ├─index.js
│ │ ├─function.json
│ │ └─node_modules
│ │ └─ <packages>
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 * * * * *"
},
{
"type": "apiHubFile",
"name": "output",
"path": "path/{file}",
"connection": "onedrive_ONEDRIVE",
"direction": "out"
}
],
"disabled": false
}
{
"frameworks": {
"net46":{
"dependencies": {
"iTextSharp": "5.5.9"
}
}
}
}
project.json function.json
run.csx
HTTPトリガー等で使用するAPIキーを格納
各 Function App のスクリプト等を格納
定義と実行スクリプトを格納
バインディング/パッケージの定義情報
Azure Functionsの料金プラン
従量課金プラン
 コストは、メモリ サイズと、関数アプリ内のすべての関数の合計実行時間によって決まります。
 スケールの必要に応じて、インスタンスが動的に追加されたり削除されたりします。
 関数を並行して実行することで、要求の処理に必要な合計時間を最小限に抑えます。
▶ コンピューティング ニーズが断続的であったり、ジョブの実行時間が短い場合に適しています。
App Service プラン
 Basic / Standard / Premiumの階層があり、VMの利用時間に合わせた料金決定
 スケールはVMの設定に基づき、Function Appは専用の VM 上で実行されます。
 専用 VM は App Service アプリとFunction Appに割り当てられ、常に使用できます。
▶ 既存コードが VM上で動いているが使用率が低い場合、継続的に関数を実行する場合に適しています
18
従量課金プランの実行時のスケール
スケール コントローラー
 構成されたトリガーに基づいてコンピューティングのニーズを評価し、スケールアウト/インのタイミングを判
断します。
スケールアウト
 継続的にメモリ要件とトリガー固有のデータ ポイントのヒントを処理します。
スケーリングの単位は、Function Appです。
 この場合、スケールアウトは関数アプリのインスタンスの追加を意味します。
スケールイン
 スケールイン時にはFunction Appのインスタンスが削除されます。
 関数が何も実行されていない場合、インスタンスの数は最終的に 0 にスケールダウンされます。
19
 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、
提示された情報の信憑性については保証できません。
 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。
 すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、
機械的、複写、レコーディング、その他)、および目的であっても禁じられています。
これらは著作権保護された権利を制限するものではありません。
 Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれら
の特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。
© 2017 Microsoft Corporation. All rights reserved.
Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。
その他、記載されている会社名および製品名は、一般に各社の商標です。

Contenu connexe

Tendances

Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Shotaro Suzuki
 
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~de:code 2017
 
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~de:code 2017
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説Takao Tetsuro
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascriptTakao Tetsuro
 
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性de:code 2017
 
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Yuki Hattori
 
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~de:code 2017
 
20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azureTakayoshi Tanaka
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触るDevTakas
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説Makoto Nishimura
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 日本マイクロソフト株式会社
 
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらいde:code 2017
 
Vs2013 multi device shosuz
Vs2013 multi device shosuzVs2013 multi device shosuz
Vs2013 multi device shosuzShotaro Suzuki
 
Windows Azure and PowerShell DSC
Windows Azure and PowerShell DSCWindows Azure and PowerShell DSC
Windows Azure and PowerShell DSCKazuki Takai
 
PowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるPowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるika ika
 
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツde:code 2017
 

Tendances (20)

Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
 
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~
[TL08] 50 分で Bot 開発者になれる!~実践的ノウハウと、 Azure や Office 365 を組み合わせたアーキテクチャの伝授~
 
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~
[AC09] Azure Stack パート1 ~今知っておくべき開発者/インフラ担当者の最新ハイブリッドクラウドとの向きあい方~
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascript
 
Apache Spark on Azure
Apache Spark on AzureApache Spark on Azure
Apache Spark on Azure
 
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
 
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発
 
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~
[AC10] Azure Stack パート2 ~企業が求めるこれからのハイブリッドクラウド設計~
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触る
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
 
Vs2013 multi device shosuz
Vs2013 multi device shosuzVs2013 multi device shosuz
Vs2013 multi device shosuz
 
Windows Azure and PowerShell DSC
Windows Azure and PowerShell DSCWindows Azure and PowerShell DSC
Windows Azure and PowerShell DSC
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
PowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるPowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみる
 
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ
[TL07] エンタープライズ基準で " 丁寧に " .NET Framework のバージョンアップしていくコツ
 

En vedette

azure障害は忘れたころにやってくる
azure障害は忘れたころにやってくるazure障害は忘れたころにやってくる
azure障害は忘れたころにやってくる裕之 木下
 
Azure Bot!! Microsoft Bot Framework で簡単Bot開発
Azure Bot!! Microsoft Bot Framework で簡単Bot開発Azure Bot!! Microsoft Bot Framework で簡単Bot開発
Azure Bot!! Microsoft Bot Framework で簡単Bot開発Yuki Hattori
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境Tomoki Hasegawa
 
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク 榊 剛史
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク  榊 剛史「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク  榊 剛史
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク 榊 剛史Leading Edge Co.,Ltd.
 
151212_高専講演会用資料_菅野
151212_高専講演会用資料_菅野151212_高専講演会用資料_菅野
151212_高専講演会用資料_菅野Ryuhi Kanno
 
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法慎一 古賀
 
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦de:code 2017
 
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法小林 信行
 
新規プロジェクトにおけるエンジニアの働き方
新規プロジェクトにおけるエンジニアの働き方新規プロジェクトにおけるエンジニアの働き方
新規プロジェクトにおけるエンジニアの働き方Recruit Lifestyle Co., Ltd.
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Yuki Anzai
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4shakezo
 

En vedette (12)

azure障害は忘れたころにやってくる
azure障害は忘れたころにやってくるazure障害は忘れたころにやってくる
azure障害は忘れたころにやってくる
 
Azure Bot!! Microsoft Bot Framework で簡単Bot開発
Azure Bot!! Microsoft Bot Framework で簡単Bot開発Azure Bot!! Microsoft Bot Framework で簡単Bot開発
Azure Bot!! Microsoft Bot Framework で簡単Bot開発
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境
 
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク 榊 剛史
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク  榊 剛史「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク  榊 剛史
「今後現場で求められるAIエンジニア像とは?」株式会社ホットリンク 榊 剛史
 
151212_高専講演会用資料_菅野
151212_高専講演会用資料_菅野151212_高専講演会用資料_菅野
151212_高専講演会用資料_菅野
 
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
 
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦
[DO17] セゾン情報システムズの CTO 小野氏による、伝統的 Sier におけるモダン開発への挑戦
 
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
 
新規プロジェクトにおけるエンジニアの働き方
新規プロジェクトにおけるエンジニアの働き方新規プロジェクトにおけるエンジニアの働き方
新規プロジェクトにおけるエンジニアの働き方
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
 
リクルート式AIの活用法
リクルート式AIの活用法リクルート式AIの活用法
リクルート式AIの活用法
 

Similaire à Azure serverless!! azure functionsでサーバーを意識しない開発

20170719 wintechq azure_stack
20170719 wintechq azure_stack20170719 wintechq azure_stack
20170719 wintechq azure_stackOsamu Takazoe
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションDaisuke Masubuchi
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築ryosuke matsumura
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントTrainocate Japan, Ltd.
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築ryosuke matsumura
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Microsoft Azure Japan
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architectureIssei Hiraoka
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みShinichiro Arai
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践de:code 2017
 
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)[Serverless OpenHack Tokyo] Azure Serverless (Japanese)
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)Naoki (Neo) SATO
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャAkira Inoue
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4Issei Hiraoka
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewKeiji Kamebuchi
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSAmazon Web Services Japan
 

Similaire à Azure serverless!! azure functionsでサーバーを意識しない開発 (20)

20170719 wintechq azure_stack
20170719 wintechq azure_stack20170719 wintechq azure_stack
20170719 wintechq azure_stack
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)[Serverless OpenHack Tokyo] Azure Serverless (Japanese)
[Serverless OpenHack Tokyo] Azure Serverless (Japanese)
 
[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 

Plus de Yuki Hattori

GitHubやMicrosoftが機能リリースする舞台裏
GitHubやMicrosoftが機能リリースする舞台裏GitHubやMicrosoftが機能リリースする舞台裏
GitHubやMicrosoftが機能リリースする舞台裏Yuki Hattori
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させようYuki Hattori
 
今日から始める Azure Functions 2.0
今日から始める Azure Functions 2.0今日から始める Azure Functions 2.0
今日から始める Azure Functions 2.0Yuki Hattori
 
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!Yuki Hattori
 
Transfer Learning & API Azure
Transfer Learning & API AzureTransfer Learning & API Azure
Transfer Learning & API AzureYuki Hattori
 
深層学習 環境構築 Azure
深層学習 環境構築 Azure深層学習 環境構築 Azure
深層学習 環境構築 AzureYuki Hattori
 

Plus de Yuki Hattori (6)

GitHubやMicrosoftが機能リリースする舞台裏
GitHubやMicrosoftが機能リリースする舞台裏GitHubやMicrosoftが機能リリースする舞台裏
GitHubやMicrosoftが機能リリースする舞台裏
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう
 
今日から始める Azure Functions 2.0
今日から始める Azure Functions 2.0今日から始める Azure Functions 2.0
今日から始める Azure Functions 2.0
 
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!
モバイル アプリの開発/運用を Visual Studio App Center と Azure で加速させよう!
 
Transfer Learning & API Azure
Transfer Learning & API AzureTransfer Learning & API Azure
Transfer Learning & API Azure
 
深層学習 環境構築 Azure
深層学習 環境構築 Azure深層学習 環境構築 Azure
深層学習 環境構築 Azure
 

Azure serverless!! azure functionsでサーバーを意識しない開発

  • 2. Functions のアプリケーション開発 2 複数言語での開発 パッケージ管理 アプリの計画と作成 コーディング アプリの拡張 オーケストレーション 統合管理  何のサービスと連携させ るか決定し、バインディ ング・トリガーを定義し ます  最初のFunctions Appを作 成します  Functions独自のプロキシ機 能やAPI Managementを用い て関数のコードからRESTful なAPIへ拡張します  Azureのサービスやその他の サービス・アプリと連携し、 Functionsを機能の一部とし て組み込んでいきます  オンラインエディタやロー カル環境のエディタで開発 します  多様な言語から開発言語を 選びます  パッケージの管理や環境変 数を設定します Bindings 環境変数 RESTful API Automation Logic Apps Application Insights Azureのサービス Azure外のサービス ソースコードマネジメント  Gitを用いてコードを管理し ます  ローカル開発も容易になりま す ソース管理 Proxies
  • 3. Azure Functions イベント駆動の「機能」実行プラットフォーム  柔軟で強力なサーバーレス スクリプト実行環境  インフラを抽象化し設計者はビジネス、開発者はコードに注力可能  業務要件に応じたスケーリングが可能  HTTP APIのエンドポイントとして公開可能 対応プログラミング言語 C#, Javascript, F#, Python, PHP, Batch, Bash, PowerShell ファイル作成やPush通知を容易にするバインディングの機能をもつ トリガー , スケジュール , HTTP (Webhook) , キュー, etc. 3
  • 4. (*参考)サーバーレスアーキテクチャ サーバを自前で用意せず、マネージドサービスを活用してシステムを構築する サーバーレスアーキテクチャの利点 ① ビジネスロジックに注力  コンピューティングに注力しない  OSレイヤー以下を抽象化しサーバーを意識させない  自動的にスケールし、任意の処理が実行できる ② コストの低さ  利用開始のコストは低く、簡単に体験できる 4
  • 5. Functions のプログラミングコンセプト トリガー  イベントをトリガーにコードを実行するサーバーレス開発基盤 バインディング バインディングの仕組みで他のサービスとの接続を容易にします。  Blob や OneDrive 上のファイル、Push通知などを Function App 内で操 作できます  アプリケーション内でサービスへの接続や参照を省略可能にします。 5
  • 6. バインディング 6 バインディング サービス トリガー インプット アウトプッ ト スケジュール Azure Functions ✔ HTTP (REST または Webhook) Azure Functions ✔ ✔ Blob Storage Azure Storage (Azure Storage) ✔ ✔ ✔ イベント Azure Event Hubs ✔ ✔ キュー Azure Storage (Azure Storage) ✔ ✔ キューとトピック Azure Service Bus ✔ ✔ Storage テーブル Azure Storage (Azure Storage) ✔ ✔ SQL テーブル Azure Mobile Apps ✔ ✔ NoSQL DB Azure DocumentDB ✔ ✔ プッシュ通知 Azure Notification Hub ✔ Twilio SMS テキスト Twilio ✔ SendGrid 電子メール SendGrid ✔ SaaS (Preview) Box ✔ ✔ ✔ Dropbox ✔ ✔ ✔ File System ✔ ✔ ✔ FTP ✔ ✔ ✔ OneDrive ✔ ✔ ✔ OneDrive for Business ✔ ✔ ✔ SFTP ✔ ✔ ✔ Google Drive ✔ ✔  Azure Functions では、トリガーとバインドを使 用して、Azure やその他のサービスで発生したイ ベントに応答するコードを記述できます。  トリガーとバインドは、関数を呼び出す方法と、 その関数で処理するデータを定義する宣言型の方 法です。 トリガーは、関数を呼び出す方法を定 義します。  参考 Azure Functions でのトリガーとバインドの概念
  • 7. 外部テーブルバインディング 7 バインディング コネクター トリガー インプット アウトプット 外部テーブル (Preview) DB2 ✔ ✔ Dynamics 365 for Operations ✔ ✔ Dynamics 365 ✔ ✔ Dynamics NAV ✔ ✔ Google Sheets ✔ ✔ Informix ✔ ✔ Dynamics 365 for Financials ✔ ✔ MySQL ✔ ✔ Oracle Database ✔ ✔ Common Data Service ✔ ✔ Salesforce ✔ ✔ SharePoint ✔ ✔ SQL Server ✔ ✔ Teradata ✔ ✔ UserVoice ✔ ✔ Zendesk ✔ ✔  Functionsから外部テーブルを操作することが 可能です。  テーブルバインディングは、外部API接続を活 用してサードパーティのSaaSプロバイダーと の認証を行います。  参考 Azure Functions 外部テーブル バインディン グ (プレビュー)
  • 8. 代表的なバインディング HTTP  SSL通信(HTTPS)にも対応し、簡単に作成可能  Logic Appsとの組み合わせなどで、ワークフローを自動化 WebHooks  WebHooks をリッスンするエンドポイントを簡単に作成可能  ASP.NET のWebHooks libraryを使えば、バラエティに富んだトークンベースの検証機能を利用可能 タイマー  cronの表現方法で記述可能 SaaS  DropboxやGoogle Driveとの連携で既存の処理を自動化  Google Spread Sheetとの連携で簡易的な業務処理 外部テーブル  MySQLやOracleの既存DB資産に連携可能 8
  • 9. プロキシ機能(Preview) 従来  Functionsで複数のAPIを作ることは出来ても、それをマネージする手間があった  RESTfulなAPIを例えば作るとしたらAPI Managementなどの他の仕組みを利用する必要があった 新機能  Azure Functions側に軽量なAPIマネジメントのサービスが追加された  これでFunctionsだけでRESTなAPIを用意することができるようになります。 9
  • 11. 利用シナリオ例  サムネイルのリサイジング(非同期のバックグラウンド処理)  Notification Hubと合わせたPush API  毎夜で日付の古い Blob を Cool Blob Storage に移動  Logic Apps や Microsoft Flow 単体では難しい処理を実行  ログの整形やスクレイピング  CQRSパターンの実装、Webhookの対応 同様の事は VM上でも実装可能ではあるが、処理に注力したい、イベント駆動したい場合にFunctionsは有用 11
  • 12. Azure Functionsの位置づけ Web Apps Mobile Apps API Management API Apps Logic Apps Notification Hubs Content Delivery Network (CDN) Media Services HDInsight Machine Learning Stream Analytics Data Factory Event Hubs Mobile Engagement Biztalk Services Hybrid Connections Service Bus Storage Queues SQL Database DocumentDB Redis Cache Search Tables SQL Data Warehouse Cloud Services Batch Remote App Service Fabric Visual Studio Application Insights Azure SDK Team Project Active Directory Multi-Factor Authentication Automation Portal Key Vault Store / Marketplace VM Image Gallery & VM Depot SECURITY & MANAGEMENT PLATFORM SERVICES Backup StorSimple Site Recovery Import/Export Azure AD Connect Health AD Privileged Identity Mngt Operational Insights HYBRID OPERATIONS Azure Functions 12 Azure Functions は App Servicesの一つです
  • 13. App Servicesの中での位置づけ App Services Azure の アプリケーションプラットフォーム  オートスケール/ロードバランシング  OSとフレームワークの迅速なパッチ対応  多種多様な言語とフレームワーク  DevOpsに適した環境  サービス管理の容易さ API App / API Management クラウドとオンプレミスでの API の 開発、ホスト、および使用を容易に する機能を提供 Logic Apps 複雑なビジネス プロセスを簡素化および実装 Azure Functions 小規模なコード (関数) をクラウドで 手軽に実行できるソリューション Web サイトと Web アプリケーション をホストするために最適化された、完 全に管理されたコンピューティング プ ラットフォーム Web Apps サインイン、プッシュ通知、データ同期機能など をモバイル アプリケーションに追加 Mobile Apps 13
  • 14. Functionsのアーキテクチャ Functions ランタイム WebJobs Core SDK WebJobs Extension Language Provider Language Provider WebJobs Extension Functions プログラミング インタフェース Web Apps トリガー インプット バインディング アウトプット バインディング 14
  • 15. (*参考)Azure FunctionsとWeb Jobsの違い 15 Functions Web Jobs ホスティングモデル スケーリング 構成不要のスケーリング App Service プランによるスケーリング 価格 従量課金プランまたは App Service プラン App Service プラン ホスティング Function Appがwebフロントエンドも含みすべてをマネー ジする Web/Mobile/API appのバックグラウンドで動く、 実行の種類 トリガー、(タイマー トリガーによる) スケジュール トリガー、継続的、スケジュール プログラミングモデル トリガー イベント タイマー、Azure DocumentDB、Azure Event Hub、 HTTP/webhook (GitHub、Slack)、Azure App Service Mobile Apps、Azure Notification Hubs、Azure Service Bus、Azure Storage Azure Storage、Azure Service Bus 開発環境 より多様な開発環境(Web portal, VSCode, dynamically builds itself) 従来の開発環境(Visual Studio, NuGet, MSBuild) HTTP(S)のサポート ○ ☓ 関数(Def)の数 存在するのは一つの関数 多くの関数が一つのクラスに存在 対応言語 C# / F# / JavaScript (Preview : ウィンドウ スクリプト / PowerShell / Bash / PHP / Python ) C# / JavaScript / ウィンドウ スクリプト / PowerShell / Bash / PHP / Python 共通の機能 機能指向プログラム 外部ライブラリ利用可能 WebJobs SDK Extensionをサポート local開発・デバッグが可能 WebJobsのダッシュボードが使用可能
  • 17. Functionsのディレクトリ構造 17 D:Home ├─data │ ├─Functions │ │ ├─sampledata │ ├─secrets ├─LogFiles │ ├─Application │ │ └─Functions │ │ ├─Function │ │ └─Host │ └─SiteExtensions │ └─Functions ├─site │ └─wwwroot │ ├─BlobTriggerCSharp1 │ │ ├─function.json │ │ └─run.csx │ ├─host.json │ │ │ ├─<C#なFunction App> │ │ ├─run.csx │ │ ├─project.json │ │ ├─function.json │ │ └─bin │ │ └─xxxx.dll │ │ │ ├─<node.jsなFunction App> │ │ ├─index.js │ │ ├─function.json │ │ └─node_modules │ │ └─ <packages> { "bindings": [ { "name": "myTimer", "type": "timerTrigger", "direction": "in", "schedule": "0 * * * * *" }, { "type": "apiHubFile", "name": "output", "path": "path/{file}", "connection": "onedrive_ONEDRIVE", "direction": "out" } ], "disabled": false } { "frameworks": { "net46":{ "dependencies": { "iTextSharp": "5.5.9" } } } } project.json function.json run.csx HTTPトリガー等で使用するAPIキーを格納 各 Function App のスクリプト等を格納 定義と実行スクリプトを格納 バインディング/パッケージの定義情報
  • 18. Azure Functionsの料金プラン 従量課金プラン  コストは、メモリ サイズと、関数アプリ内のすべての関数の合計実行時間によって決まります。  スケールの必要に応じて、インスタンスが動的に追加されたり削除されたりします。  関数を並行して実行することで、要求の処理に必要な合計時間を最小限に抑えます。 ▶ コンピューティング ニーズが断続的であったり、ジョブの実行時間が短い場合に適しています。 App Service プラン  Basic / Standard / Premiumの階層があり、VMの利用時間に合わせた料金決定  スケールはVMの設定に基づき、Function Appは専用の VM 上で実行されます。  専用 VM は App Service アプリとFunction Appに割り当てられ、常に使用できます。 ▶ 既存コードが VM上で動いているが使用率が低い場合、継続的に関数を実行する場合に適しています 18
  • 19. 従量課金プランの実行時のスケール スケール コントローラー  構成されたトリガーに基づいてコンピューティングのニーズを評価し、スケールアウト/インのタイミングを判 断します。 スケールアウト  継続的にメモリ要件とトリガー固有のデータ ポイントのヒントを処理します。 スケーリングの単位は、Function Appです。  この場合、スケールアウトは関数アプリのインスタンスの追加を意味します。 スケールイン  スケールイン時にはFunction Appのインスタンスが削除されます。  関数が何も実行されていない場合、インスタンスの数は最終的に 0 にスケールダウンされます。 19
  • 20.  本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、 提示された情報の信憑性については保証できません。  本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。  すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、 機械的、複写、レコーディング、その他)、および目的であっても禁じられています。 これらは著作権保護された権利を制限するものではありません。  Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれら の特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 © 2017 Microsoft Corporation. All rights reserved. Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。

Notes de l'éditeur

  1. そのほかにはこういった利用がありますが、基本的には1回やったら裏で何時間も関数が実行されるようなものではなく、1回やったらすぐに結果が返ってくるようなものに適用するとよいと思います。
  2. FunctionsはApp Serviceの一部です。 基本的な機能はWebAppsと同じようなものと考えて差し支えないです。
  3. Functionsのアーキテクチャはこうなっています。 実際の中身はWebJobsです。
  4. まずは小さく始めるのが良いでしょう。
  5. https://azure.microsoft.com/ja-jp/pricing/details/functions/ スケール粒度は Function App 単位 0~10 (現状)でインスタンスが自動的に増減(Dynamic Service Plan 時のみ ) 構成されているトリガーに基づきトラフィック等から判断 インスタンス内のFunction App 同時実行可能数はメモリ設定によって異なる
  6. https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-scale (Azure Queue Storage トリガーを使用した場合、データ ポイントはキューの長さや最も古いエントリのキューの時間などです。)