Submit Search
Dotnetconf2017
Download as PPTX, PDF
0 likes
105 views
Yoshiyuki Taniguchi
2017/10/07 .NET Conf 2017 Tokyo,Japan
Software
Read more
1 of 34
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
More Related Content
PDF
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
PDF
Hakyll
Kazufumi Ohkawa
PDF
Fission で 始める Containerless Kubernetes #serverlesstokyo
y_taka_23
PDF
静岡のHaskellerはEmacsを使う
Kazufumi Ohkawa
PDF
The Generator of ECMAScript 6th
paulowniaceae
PDF
Phpでrest apiを作った話
Yamaguchi Kenya
PDF
serverless framework + AWS Lambda with Python
masahitojp
PDF
20140930 anything as_code
Sugawara Genki
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
Hakyll
Kazufumi Ohkawa
Fission で 始める Containerless Kubernetes #serverlesstokyo
y_taka_23
静岡のHaskellerはEmacsを使う
Kazufumi Ohkawa
The Generator of ECMAScript 6th
paulowniaceae
Phpでrest apiを作った話
Yamaguchi Kenya
serverless framework + AWS Lambda with Python
masahitojp
20140930 anything as_code
Sugawara Genki
What's hot
(20)
PDF
Reflexの紹介
Rie Nakau
PDF
Fabric
Joe_noh
PDF
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
PDF
DynamoDBのまえにキャッシュおく奴
Sugawara Genki
PDF
WebAPIのバリデーションを、型の力でいい感じにする
Takuya Kikuchi
PDF
Active job meets kubernetes
Yasutomo Uemori
PPTX
Webブラウザで使える文献Web API取得結果のスプレッドシート化 ~ Google Colab始めました ~
genroku
PDF
The Next Generation for C# Developers
Takayoshi Tanaka
PDF
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
PPTX
当番をランダムに割り当ててみる ~ on-dutyTable.py ~
genroku
PDF
Ruby/Rails Benchmarking and Profiling with TDD
Yasutomo Uemori
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
PDF
Apache Airflow で作る GCP のデータパイプライン @ 酔いどれGCPUG 2017/11/28
Yuta Hono
PDF
ECMAScript6による関数型プログラミング
TanUkkii
PPT
20150219 初めての「embulk」
Hideto Masuoka
PDF
Ruby風Swift NSOperation編
Hisakuni Fujimoto
PDF
Lambdaによるクラウド型言語の実装
Sugawara Genki
PPTX
Gitlab meetup prm説明資料_2017_1117
Tetsuya Sato
PDF
Heroku+MongoLabでダミーサーバー
Hironytic
PDF
動的なILの生成と編集
terurou
Reflexの紹介
Rie Nakau
Fabric
Joe_noh
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
DynamoDBのまえにキャッシュおく奴
Sugawara Genki
WebAPIのバリデーションを、型の力でいい感じにする
Takuya Kikuchi
Active job meets kubernetes
Yasutomo Uemori
Webブラウザで使える文献Web API取得結果のスプレッドシート化 ~ Google Colab始めました ~
genroku
The Next Generation for C# Developers
Takayoshi Tanaka
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
当番をランダムに割り当ててみる ~ on-dutyTable.py ~
genroku
Ruby/Rails Benchmarking and Profiling with TDD
Yasutomo Uemori
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
Apache Airflow で作る GCP のデータパイプライン @ 酔いどれGCPUG 2017/11/28
Yuta Hono
ECMAScript6による関数型プログラミング
TanUkkii
20150219 初めての「embulk」
Hideto Masuoka
Ruby風Swift NSOperation編
Hisakuni Fujimoto
Lambdaによるクラウド型言語の実装
Sugawara Genki
Gitlab meetup prm説明資料_2017_1117
Tetsuya Sato
Heroku+MongoLabでダミーサーバー
Hironytic
動的なILの生成と編集
terurou
Ad
Similar to Dotnetconf2017
(20)
PDF
5分では終わりそうにないfunctionsの話
Yoshiyuki Taniguchi
PPTX
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
PDF
ゆるふわAzure Functions
Keiji Kamebuchi
PPTX
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
Yoichi Kawasaki
PPTX
Azure Functions あれこれ
Yasuaki Matsuda
PPTX
Azure serverless!! azure functionsでサーバーを意識しない開発
Yuki Hattori
PDF
Azure Functions 入門
jz5 MATSUE
PPTX
Visual Studio 2017 で Azure Functions の開発
Yasuaki Matsuda
PDF
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
PPTX
azure functionsとcsx
裕之 木下
PDF
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
PDF
20190514 Smart Store - Azure servlerless architecture
Issei Hiraoka
PDF
Smart Store サーバーレスアーキテクチャ編
Microsoft Azure Japan
PDF
.NET Framework アプリケーションの NET 5 への 移行を考える
Tomohiro Suzuki
PDF
Azure Functions と Serverless - 概要と企業向け Tips
Keiji Kamebuchi
PDF
[Japan Tech summit 2017] APP 003
Microsoft Tech Summit 2017
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
PPTX
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
PDF
20190731 Azure Functions x Line at Azure Tech Lab #4
Issei Hiraoka
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
5分では終わりそうにないfunctionsの話
Yoshiyuki Taniguchi
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
ゆるふわAzure Functions
Keiji Kamebuchi
PythonによるAzureサーバレスアプリケーション開発 / Serverless Application Development with Python
Yoichi Kawasaki
Azure Functions あれこれ
Yasuaki Matsuda
Azure serverless!! azure functionsでサーバーを意識しない開発
Yuki Hattori
Azure Functions 入門
jz5 MATSUE
Visual Studio 2017 で Azure Functions の開発
Yasuaki Matsuda
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
azure functionsとcsx
裕之 木下
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
20190514 Smart Store - Azure servlerless architecture
Issei Hiraoka
Smart Store サーバーレスアーキテクチャ編
Microsoft Azure Japan
.NET Framework アプリケーションの NET 5 への 移行を考える
Tomohiro Suzuki
Azure Functions と Serverless - 概要と企業向け Tips
Keiji Kamebuchi
[Japan Tech summit 2017] APP 003
Microsoft Tech Summit 2017
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
20190731 Azure Functions x Line at Azure Tech Lab #4
Issei Hiraoka
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
Ad
Dotnetconf2017
1.
5分では終わらなかった Azure Functionsの話 2017 /
10 / 07 (土) 16:00~ .NET Conf 2017 Tokyo, Japan Room C+D セッション3 谷口 慈行
2.
• 先月JAZUG7周年でLTした内容で話したりないところ中心に • ↑
達成率 8 / 33 ページ • https://www.slideshare.net/yiwate/5functions-79580540
3.
About me • 谷口
慈行(Yoshiyuki Taniguchi) • @_iwate • 人形町でECプラットフォーム作ってます • https://www.commerble.com/
4.
今日話さないこと • Serverless Archtectureでどうやってアプリケーションを組むか •
鉄板パターン&アンチパターンなど • → .NETより抽象的な話なるのでなし • Functionsを使った開発の話 • → うーん.NET? • 運用回り • → .NET?じゃないな • Igniteでのアップデート内容 • https://buchizo.wordpress.com/2017/09/26/azure-update-ignite- announcements-2017-09-25/
5.
ちょっと待って! 話すことなくない?
6.
今日話すこと App Services Function Host
Function Host Function Function Function Function Function こっちの話をメインに。
7.
Azure Functions
8.
そもそもAzure Functionsって? https://azure.microsoft.com/ja-jp/services/functions/
9.
Azure Functions • Github
- https://github.com/Azure/azure-webjobs-sdk-script • WebJobsベース、WebJobsのスクリプト拡張といってもいい • いろんなスクリプトをイベントドリブンで実行 • js • ps1 • csx • … • スクリプトじゃないものも • dll • jarNEW
10.
Functionsで.NET csx Pre Compiled Direct function.jsonにバインド情報を書く csxファイルをコンパイルして実行 function.jsonにバインド情報を書く 事前にコンパイルしたdllから実行 Attributeでバインド情報を書く 事前にコンパイルしたdllから実行 NEW
11.
Functionsで.NET csx Pre Compiled Direct function.jsonにバインド情報を書く csxファイルをコンパイルして実行 function.jsonにバインド情報を書く 事前にコンパイルしたdllから実行 Attributeでバインド情報を書く 事前にコンパイルしたdllから実行
12.
Functionsで.NET csx Pre Compiled Direct function.jsonにバインド情報を書く csxファイルをコンパイルして実行 function.jsonにバインド情報を書く 事前にコンパイルしたdllから実行 Attributeでバインド情報を書く 事前にコンパイルしたdllから実行
13.
Functionsで.NET csx Pre Compiled Direct function.jsonにバインド情報を書く csxファイルをコンパイルして実行 function.jsonにバインド情報を書く 事前にコンパイルしたdllから実行 Attributeでバインド情報を書く 事前にコンパイルしたdllから実行 正直なんて呼べばいいのかわからない。ソースコード内ではDirectと呼ばれているのでとりあえず。 もしかすると、WebJobスタイルとかAttributesスタイルとかかも
14.
• Pre-compiledの一方式として属性でバインドできるようになっ たんじゃないの? • 理由はそうかも? •
それらしいISSUEやFeedbackは見つからなかったけど… • でも、実装はだいぶかけ離れてる • Pre-compiledはcsxスタイルの方が近い Direct ⊄ Pre-compiled
15.
csxの取り込まれ方 { “bindings” : [ {
“name” : “trigger”, “type” : “queueTrigger”, … }, { “name” : “original”, “type” : “blob” , … }, { “name” : “resized”, “type” : “blob”, … } ] } FunctionMetadata FunctionGenerator namespace Host { public class Functions { public static Task Run( [QueueTrigger(…)]string trigger, [Blob(…)] string original, [Blob(…)] ref string resized, TraceWriter log){…} } } [QueueTrigger(…)] [Blob(…)] [Blob(…)] FunctionDescriptor ① function.jsonからFunctionMetadaを作成 ② function.jsonからFunctionMetadaを作成 ③ FunctionMetadaからAttributeを作成 ④ MetadataとAttiributeから Descriptorを作成 TraceWriterなどの パラメータを追加 ⑤ Descriptorからアセンブリを作成
16.
• https://github.com/Azure/azure-webjobs-sdk- script/blob/master/src/WebJobs.Script/Description/Functio nGenerator.cs • 中ではILで組み立ててる FunctionGenerator
17.
• あっちもこっちもILですね。 FunctionGeneratorを読んでみる
18.
FunctionGeneratorを読んでみる
19.
FunctionGeneratorを読んでみる namespace Host { public
class Functions { public static Task Run( [QueueTrigger(…)]string trigger, [Blob(…)] string original, [Blob(…)] ref string resized, TraceWriter log){} } }
20.
FunctionGeneratorを読んでみる namespace Host { public
class Functions { public static Task Run( [QueueTrigger(…)]string trigger, [Blob(…)] string original, [Blob(…)] ref string resized, TraceWriter log){ object[] argsLocal = new object[] { trigger, original, resized, log }; } } }
21.
FunctionGeneratorを読んでみる namespace Host { public
class Functions { public static Task Run(…){ object[] argsLocal = new object[] { trigger, original, resized, log }; IFunctionInvoker invokerLocal = GetInvoker("Resize"); var taskLocal = invokerLocal.Invoke(argsLocal); } } } MethodInfo.Invokeのラッパー
22.
FunctionGeneratorを読んでみる namespace Host { public
class Functions { public static Task Run(…){ object[] argsLocal = new object[]{…}; IFunctionInvoker invokerLocal = GetInvoker("Resize"); var taskLocal = invokerLocal.Invoke(argsLocal); taskLocal.GetAwaiter().GetResult(); resized = argsLocal[2]; return taskLocal; } } }
23.
• FunctionGenerator.cs 127行目~155行目を使う •
Load Local命令は、手👏 • Store Local命令は、足👞 • それ以外は、机 ICE BREAK: ILのビートを感じてみよう
24.
• FunctionはWebJobベース • FunctionのScriptHostはWebJobのJobHostを継承して作っている •
WebJobにもともと色々なトリガーによるイベントドリブンに 実行できる関数を作れた。 • .NETの関数を実行する仕組みは新たに作らず、WebJobのもの をそのまま使ってる。 • だから、Functionの仕事はWebJobスタイルのAttributeでバイ ンド情報が付与された関数を作ること 重要なのはcsxもAttributeを作っていること
25.
• csx とPre
Compiledはコンパイルするかしないかだけの違い • 同じようにGeneratorの中で、Attributeが付与された関数が作られる • DirectはGeneratorでラッパーを作らず、読み込んだアセンブ リの関数を直接使用する • そもそも、Attributeがついているのでラップする必要がない csx, Pre-compiled, Directの違い
26.
csxとアセンブリ
27.
ロード方法 #r "Newtonsoft.Json" #r "Taniguchi.dll" #r
"../sharedbin/Yoshiyuki.dll" using System; using Taniguchi; using Yoshiyuki; using Newtonsoft.Json; using SumLib.From.NuGet; public static Sample Run( string message, TraceWriter log) { } Hostが持ってるものをロード 最初からロードされている binフォルダーからロード project.jsonでNuGetから取得したやつ CurrentPathから相対パスでロード
28.
ロード方法 #r "Newtonsoft.Json" #r "Taniguchi.dll" #r
"../sharedbin/Yoshiyuki.dll" using System; using Taniguchi; using Yoshiyuki; using Newtonsoft.Json; using SumLib.From.NuGet; public static Sample Run( string message, TraceWriter log) { } Shared Assembly Default Assembly Private Assembly Package Assembly External Assembly Direct同様なんて呼んでいいかよくわからない。 とりあえず、ソースコードから雰囲気で抽出
29.
ロード方法 #r "Newtonsoft.Json" #r "Taniguchi.dll" #r
"../sharedbin/Yoshiyuki.dll" using System; using Taniguchi; using Yoshiyuki; using Newtonsoft.Json; using SumLib.From.NuGet; public static Sample Run( string message, TraceWriter log) { } Shared Assembly Default Assembly Private Assembly Package Assembly Assembly.LoadFile Assembly.Load + assembly.MapCodeBase Assembly.LoadFrom typeof().Assembly | Assembly.LoadFrom typeof().Assembly External Assembly アセンブリのロードのされ方が割と違う Default Assembly と Shared AssemblyはRoslynのScriptOptionに、 他はAppDomain.CurrentDomain.AssemblyResolveにResolverにラップされてわたされる
30.
ロードのされ方って別にどうでもよくない? • よくない場合があるので注意しよう • Assembly.Loadで取り込まれるPrivate
Assembly(binフォル ダ)のLocationプロパティが空文字になる。 • https://msdn.microsoft.com/ja- jp/library/system.reflection.assembly.location(v=vs.110).aspx • Locationプロパティを触るライブラリを使ってるときは思わぬ 沼にはまることがある。
31.
Dynamic Assembly Load •
Razor Engine みたいな動的にアセンブリを読み込むライブラリ は配置場所を考える必要がある • binフォルダから読まれたアセンブリではAssembly. Locationが 空文字になり、Illegal Path例外で落ちる(Assembly.Loadだか ら) • しかも、External Assemblyでもたまに空文字になる(原因わ からず) • つまりIllegal Pathは完全には防げない • いったんIllegal Pathになると再起動しないと直らない(直らなかっ た)
32.
• AppServiceの停止や再起動時にはCancellationToken.Noneな のでGraceful Shutdownできない •
WebJobsでいうSoft shutdownの時だけ • https://github.com/projectkudu/kudu/wiki/WebJobs#graceful- shutdown • コンパイルとかFunction Host内で動いてるFunctionをいった ん止めるときとかだけ。 • あんまり、 Graceful Shutdownが必要なものは載せない方がい いと思う。 再起動と言えばGraceful Shutdownの話
33.
まとめ
34.
• csx, Pre-compiled,
Direct は結構違う • 結局最後はDirectの形 • Direct使うんなら、WebJobでもそんなに変わらない • モニターとかHttpTrigger、プロキシとか違うとこももちろんある。 • Functions • 何より従量課金プランがある!(これがないとサーバーレス感半減) • Webjob • MainでJobHost生成して使用するので、WebJobsShutdownWatcherとか使える • コード読むの楽しい まとめ
Editor's Notes
#2:
それでは、はじめます。 こんなに人いると緊張しちゃいますね。 緊張するとおなか壊すタイプなので今日はしっかり胃薬飲んできました。 セッションタイトルなんことじゃいって感じだと思うんですけど 改ページ
#3:
このまえ、先月ですかね。 AzureユーザーグループでLTしたんですけど、その時、5分じゃ到底終わりそうにない資料作っちゃって、それをもじってます。 でも、今回のスライドは大体新規書き起こしです。こぴってるのもありますけど。
#4:
自己紹介は。。。飛ばしましょう
#5:
さて、今日はDotNet Confということなので、話す内容をかなり絞ろうかなと思いまして、結構考えたんですけど、 次の項目は全部そぎ落としてみようと思います。 時間余ったら登場してもらうこともあるかもしれませんが。 サーバーレスアーキテクチャの話とか、Functionsでどんな風にアプリケーション組んでいくかとかCI/CDの 話とか ログ監視とかの運用回りとか、 開発パターン系とか。
#29:
終わったら いやあ、皆さん素晴らしい! 最高のILビートでした。ビシビシ来ましたよ。 懇親会の時、隣の部屋の人から 「一体何してたの?」 って聞かれたら、 「ILのビートを感じていたのさ」とぜひお答えください。
Download