58
Microsoft Tech Summit 2017 Visual Studio Team Services を使った Serverless のための継続的デリバリー

Visual Studio Team Services を使った Serverless のための継続的デリバリ

Embed Size (px)

Citation preview

Page 1: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Microsoft Tech Summit 2017

Visual Studio Team Services を使ったServerless のための継続的デリバリー

Page 2: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Microsoft Tech Summit 2017

モダンな開発スタイル

Page 3: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Microsoft Tech Summit 2017

継続的デリバリ

Page 4: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Microsoft Tech Summit 2017

Page 5: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Serverlessを始めてほしい

Page 6: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 7: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 8: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Redmond Microsoft campus

Page 9: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Data Factory

Blob StorageKey Vault

Storage Queue

Event Hub

Stream Analytics

Log AnalyticsPower BI

SQL Server

Azure SQL Server

Redis Cache

Page 10: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Serverless 地獄

Page 11: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄

Page 12: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄

Page 13: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄

Page 14: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄

Page 15: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 16: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 17: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 18: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Function App

Function

Function

Function

AppSettingsConnection

Strings

Page 19: Visual Studio Team Services を使った Serverless のための継続的デリバリ

面倒

Page 20: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 21: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄(再掲載)

Page 22: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 23: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 24: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 25: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 26: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄(再掲載)

Page 27: Visual Studio Team Services を使った Serverless のための継続的デリバリ

テスト

Page 28: Visual Studio Team Services を使った Serverless のための継続的デリバリ

リリース

Page 29: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 30: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄(再掲載)

Page 31: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Ver 2.0

Page 32: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Data Factory

Blob StorageKey Vault

Storage Queue

Event Hub

Stream Analytics

Log AnalyticsPower BI

SQL Server

Azure SQL Server

Redis Cache

(再掲載)

Page 33: Visual Studio Team Services を使った Serverless のための継続的デリバリ

AppSettingsEndpointA: xxx

AppSettingsEndpointB: xxx

Page 34: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 35: Visual Studio Team Services を使った Serverless のための継続的デリバリ

地獄(再掲載)

Page 36: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Data Factory

Blob StorageKey Vault

Storage Queue

Event Hub

Log Analytics

SQL ServerRedis Cache

Terraform / ARM

Page 37: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 38: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Logic Appどうするよ?

Page 39: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Visual Studio でローカル開発する

Page 40: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 41: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Architecture

Page 42: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 43: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Orchestration – Manage the Complexity

Page 44: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Durable Functions – Orchestrators for Azure Functions

Reduce Complexity Simplify

Enable Long Running FunctionsEnable

Orchestrate Functions Coordinate

Page 45: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Why do we need “Durable Functions”

Long Running & Local State

01Simplify Function Coordination

02Easy Function Communication

03Code-Only

04

Page 46: Visual Studio Team Services を使った Serverless のための継続的デリバリ

What is Durable Functions?

Automatic Save of Local State

03No JSON schemas,

No designer!

01Sync & Async Functions Calls

02

Page 47: Visual Studio Team Services を使った Serverless のための継続的デリバリ

F1 F2 F3 F4

Page 48: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 49: Visual Studio Team Services を使った Serverless のための継続的デリバリ

// calls functions in sequencepublic static async Task<object> Run(DurableOrchestrationContext ctx){

try{

var x = await ctx.CallFunctionAsync("F1");var y = await ctx.CallFunctionAsync("F2", x);var z = await ctx.CallFunctionAsync("F3", y);return await ctx.CallFunctionAsync("F4", z);

}catch (Exception){

// global error handling/compensation goes here}

}

Page 50: Visual Studio Team Services を使った Serverless のための継続的デリバリ

F1

F2

F3

Page 51: Visual Studio Team Services を使った Serverless のための継続的デリバリ
Page 52: Visual Studio Team Services を使った Serverless のための継続的デリバリ

public static async Task Run(DurableOrchestrationContext ctx){

var parallelTasks = new List<Task<int>>();

// get a list of N work items to process in parallelobject[] workBatch = await ctx.CallFunctionAsync<object[]>("F1");for (int i = 0; i < workBatch.Length; i++){

Task<int> task = ctx.CallFunctionAsync<int>("F2", workBatch[i]);

parallelTasks.Add(task);}

await Task.WhenAll(parallelTasks);

// aggregate all N outputs and send result to F3int sum = parallelTasks.Sum(t => t.Result);await ctx.CallFunctionAsync("F3", sum);

}

Page 53: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Worker

Worker

Worker

Worker

WorkerStateful/Partitioned

Stateless

Control Queue(s)Triggers orchestrator

function execution

Work Item QueueTriggers activity function execution

History & Instance Tables

Page 54: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Key Takeaways - Orchestrator functions

Code Stateful Durable

When sleeping, not

billed

Automatically wake up

Scalable

Page 55: Visual Studio Team Services を使った Serverless のための継続的デリバリ

Serverlessを始めてみよう

Page 56: Visual Studio Team Services を使った Serverless のための継続的デリバリ

https://github.com/Azure-Samples/azure-serverless-workshop-

team-assistant/tree/lang/jp

https://blogs.msdn.microsoft.com/kenakamu/

Page 57: Visual Studio Team Services を使った Serverless のための継続的デリバリ

• Azure WebJobs SDK Script: https://github.com/Azure/azure-webjobs-sdk-script

• Azure Functions CLI: https://github.com/Azure/azure-functions-cli

• Durable Functions: https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-overview

• Azure Samples: https://azure.microsoft.com/en-us/resources/samples/?sort=0&service=functions

• Logic Apps: https://github.com/logicappsio

• Event Grid: https://docs.microsoft.com/en-us/azure/event-grid/overview

Page 58: Visual Studio Team Services を使った Serverless のための継続的デリバリ