microservices für .net entwickler - bridgingit...

74
Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder: www.dreamstime.com Tobias Meier, BridgingIT GmbH, Lead Softwarearchitekt Microsoft

Upload: others

Post on 27-May-2020

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservices für .Net Entwickler

01.06.2017 .Net Developer Group Ulm Bilder: www.dreamstime.com

Tobias Meier, BridgingIT GmbH, Lead Softwarearchitekt Microsoft

Page 2: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Wir bringen Dinge zusammen

Standort Nürnberg

Königtorgraben 11

90402 Nürnberg

Standort Zug/Schweiz

Baarerstraße 14

CH-6300 Zug

Standort Mannheim

N7, 5-6

68161 Mannheim

Standort Karlsruhe

Rüppurrer Straße 4

76137 Karlsruhe

Standort Stuttgart

Marienstraße 17

70178 Stuttgart

Standort München

Riesstraße 12

80992 München

Standort Frankfurt

Solmsstraße 4

60486 Frankfurt

Standort Köln

Martinstraße 3

50667 Köln

Copyright © BridgingIT GmbH | Autor: Tobias Meier | Juni 2017 | www.bridging-it.de

Lead Softwarearchitekt Microsoft

http://blog.bridging-it.de/author/Tobias.Meier [email protected] @bitTobiasMeier

Tobias Meier

Page 3: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Agenda

Status quo

Was sind Microservices ?

Hello World

Pause

Service Fabric Cluster

Entwickeln für Service Fabric 1

Entwickeln für Service Fabric 2

Page 4: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Wer entwickelt bereits

Microservices ?

Page 5: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 6: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 7: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 8: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 9: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 10: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Monolitische Architektur

Skalierung über Hardware

bzw. VMs <=> DB Locks

Schichten Architektur

Wächst und wächst …

Page 11: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 12: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservice = SOA Done right

= SOA + DDD + Patterns

Patterns: Autonome Services, Bounded Context, Event Driven Design, Continuous Delivery, …

Page 13: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservice-Architektur

Kleine, unabhängige Services

Eigener Prozess

Leichtgewichtige Kommunikation

Unabhängige, automatisierte Installation

Verschiedene Technologien und/oder Programmiersprachen möglich

Unabhängige Datenspeicherung

Minimaler zentralisierter Managementaufwand

Page 14: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

“In short the microservice architectural style [...] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. “

Martin Fowler, https://martinfowler.com/articles/microservices.html

Page 15: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

„Ok, dann teilen wir unseren Monolithen in hunderte Services auf.“

Page 16: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Auch verteilte Anwendungen haben ihre

Fallstricke …

Page 17: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 18: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Komplexität von verteilten Anwendungen

Gesamtanwendung hat viele Abhängigkeiten

Komplexität der Orchestrierung

Daten-Konsistenz

Ermittlung des Bounded Context

Höherer Entwicklungsaufwand

Kommunikation untereinander

Netzwerklatenz

Versionierung von Schnittstellen

Abwärtskompatibilität

Welche Version ist installiert ?

Testbarkeit ist schwerer

Page 19: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

The Art of Scalability: Scale Cube

http://theartofscalability.com/

X: Horizontale Skalierung

Y: F

unktionale

Skalie

rung

Page 20: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservices mit C#

Azure Functions: https://functions.azure.com/try

AWS Lambda https://aws.amazon.com/de/visualstudio/

Container Services: http://aka.ms/acs

Service Fabric

Function as a Service (FaaS)

Page 21: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Aufbau Service Fabric

Microservice

WebAppOwin

Microservice

WebAppAsp.Net Core

Windows Container

Guest Executable

Reliable Actor API Reliable Service API

Service Fabric

On-Premise Azure

Windows Server LinuxWindows Server Linux

Microservice

Java

Microservice

Hosted in Container

Naming Service

Page 22: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Aufbau Service Fabric

Microservice

WebAppOwin

Microservice

WebAppAsp.Net Core

Windows Container

Guest Executable

Reliable Actor API Reliable Service API

Service Fabric

On-Premise Azure

Windows Server LinuxWindows Server Linux

Microservice

Java

Microservice

Hosted in Container

Naming Service

Build 2017: Roadmap

Reliable Actor und Reliable Services in Container verwendbar.

State-Management für Container

Page 23: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric: Platform as a service

Microsoft nutzt Service Fabric:

Azure Sql DatabaseCortanaCosmos DbEvent Hubs IoT-SuiteSkype for BusinessDynamicsPower BI Intune

Page 24: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric: Platform as a service

Microsoft nutzt Service Fabric:

Azure Sql DatabaseCortanaCosmos DbEvent Hubs IoT-SuiteSkype for BusinessDynamicsPower BI Intune

Build 2017

30 % of Azure cores run Service Fabric

Designed for mission critical tier 1 workloads

Page 25: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 26: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Visual Studio immer als Admin starten

Page 27: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleHello World

Web API ProjektRNDemo

Lokales Cluster

Page 28: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 29: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleDemo der fertigen Anwendung

Page 30: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispielanwendung

Benutzer kann sich registrieren

Thumbnails von Fotos werden angezeigt

Fotos können hochgeladen werden.

Aktuell nur Command-Line-Interface:Benutzer wählt ein Foto aus und bewertet es.. Zusätzlich können auch Kommentare geschrieben werden.

Angedacht: Wenn ein Foto im Detail aufgerufen wird, werden alle

Kommentare angezeigt.

Page 31: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric

PhotoAward.Platform

StatelessWebApi und

Fileserver

PhotoAward.MemberManagement

Statefull Service

PhotoAward.PhotoManagement

Statefull Service

PhotoAward.Thumbnail

Stateless Service

PhotoAward.PhotoActor

Actor Service

PhotoAward.MemberActor

Actor Service

Me

mb

erA

ctor.

Inte

rfaces

Ph

oto

Acto

r.

Inte

rfaces

Ph

oto

Db

.

Inte

rfaces

Me

mb

erM

anagem

ent.

Inte

rfaces

Ph

oto

Man

agemen

t.

Inte

rfaces

Ports: 8443

Co

nso

le.C

lien

tP

ho

toA

ward

Ap

p(A

ngu

lar2)

API-Gateway

Azu

re C

ogn

itive Service

s

PhotoAward.PhotoDb

Stateless Service

Thu

mb

naiil.

Inte

rfaces

Asynchrone Aufrufe Asynchrone Aufrufe aus einem Reminder,

werden im Fehlerfall wiederholt.

Co

smo

sDb

Page 32: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Cluster Lokal

Entwicklungs-Cluster

http://localhost:19080/

Page 33: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Cluster On Azure

https://github.com/Microsoft/azure-docs/blob/master/articles/service-fabric/service-

fabric-cluster-creation-via-portal.md

Vorbereitungen

Evtl. Ressourcengruppe

erstellen

Evtl. Key Vault anlegen

Zertifikat eintragen

Durchführung

Service Fabric Wizard starten

Page 34: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Vorbereitungen: Key Vault

LoginPS C:\> Login-AzureRmAccount

Key Vault anlegen PS C:\> New-AzureRmKeyVault -VaultName 'westeuropeVault' -

ResourceGroupName 'servicefabricdemo' -Location 'Westeurope' –EnabledForDeployment

Vault Name : westeuropevault

Resource Group Name : servicefabricdemo

Location : Westeurope

Resource ID : /subscriptions/00000000-0000-0000-0000-

000000000000/resourceGroups/servicefabricdemo

/providers/Microsoft.KeyVault/vaults/westeuropevault

Vault URI : https://westeuropevault.vault.azure.net

Tenant ID : 11111111-1111-1111-1111-111111111111

Page 35: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Vorbereitungen: Testzertifikat hinzufügen

Download Hilfsskripte: https://github.com/ChackDan/Service-Fabric/tree/master/Scripts/ServiceFabricRPHelpers

ImportPS C:\> Import-Module "C:\Projekte\Service-Fabric-

master\Scripts\ServiceFabricRPHelpers\ServiceFabricRPH

Testzertifikat erzeugenPS C:\> Invoke-AddCertToKeyVault -SubscriptionId

$SubID -ResourceGroupName "servicefabricdemo" -Location "westeurope"

-VaultName "mywesteuropevault"

-CertificateName "bitdemophotoappcertificate1"

-CreateSelfSignedCertificate

-DnsName "bitdemophotoawardapp.westeurope.cloudapp.azure.com"

-OutputPath "c:\Certificates"

Page 36: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Vorbereitungen: Testzertifikat hinzugefügt

Name : CertificateThumbprint

Value : 885BE4B2E6F80FD32A022E5087B2EAE5311FDEB8

Name : SourceVault

Value : /subscriptions/00000000-0000-0000-0000-

000000000000/resourceGroups/servicefabricdemo/providers/Microsoft.KeyVau

lt/vaults/westeuropevault

Name : CertificateURL

Value :

https://westeuropevault.vault.azure.net:443/secrets/bitdemophotoappcertif

icate1/22223333222222221111222211112222

Page 37: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric Cluster anlegen (1 / 5)

Page 38: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric Cluster anlegen (2 / 5)

Page 39: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric Cluster anlegen (3 / 5)

Page 40: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric Cluster anlegen (4 / 5)

Page 41: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Service Fabric Cluster anlegen (5 / 5)

Page 42: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Stateless Service

Zustandsloser Service

Typisches Modell für heutige Webanwendungen

Daten können extern gehalten werdenSql Datenbank

DocumentDB

Azure Storage

Page 43: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Reliable Service API

Stateless oder Statefull Service

Naming Service

Zugriff auf Service Fabric APIs

Modelle zum Data-Upgrade

Zuverlässigkeit

Reliability

Verfügbarkeit

Availability

Skalierbarkeit

Scalability

Beständigkeit

Consistency

Page 44: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Statefull Service

Zustand bleibt auch nach Neustart erhalten

Synchronisation über Replicas

StateManager

Reliable Collection

Transaktionen

Page 45: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleStatefull Service

Page 46: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Reliable Collectionsusing (var tx = StateManager.CreateTransaction()){

var members = await StateManager.GetOrAddAsync<IReliableDictionary<string,Person>>("members");

await members.AddOrUpdateAsync(tx, person.Email, person, (key, p) => person);

person.Email = person.Email.ToUpper();

await tx.CommitAsync();}

ToUpper() wird NICHT übernommen

Page 47: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Reliable Collectionsusing (var tx = StateManager.CreateTransaction()){

var members = await StateManager.GetOrAddAsync<IReliableDictionary<string,Person>>("members");

person.Email = person.Email.ToUpper();

await members.AddOrUpdateAsync(tx, person.Email, person, (key, p) => person);

await tx.CommitAsync();}

ToUpper() wird übernommen

Page 48: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Tipp: Objekte sollten Immutable sein

Private Setter

System.Collections.Immutable

https://www.nuget.org/packages/System.Collections.Immutable

Page 49: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Immutable Collection[DataContract]public sealed class PersonData{public PersonData(string name, IEnumerable<string> emails){this.Name = name;Emails = (emails== null) ? ImmutableList<string>.Empty :emails.ToImmutableList();

}[DataMember] public readonly string Name;[DataMember] public IEnumerable<string> Emails { get; private set; }

[OnDeserialized]private void OnDeserialized(StreamingContext context){Emails = Emails.ToImmutableList();

}}

Page 50: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Reliable Actors

Page 51: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Actor: Lifecycle

Automatisch erzeugt

Können manuell explizit gelöscht werden

Akteuere können „schlafen gelegt“ werden

Page 52: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Knoten 1

Reliable Actors

Partition 1

Partition 2

Partition 3

Knoten 2

Partition 1

Partition 2

Partition 3

Actor Proxy

Knoten 3

Partition 1

Partition 2

Partition 3

Client (Statefull Service, weitere Actor, …)

Page 53: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Actor erzeugen

var data = …

var photoActorId = ActorId.CreateRandom();

var client = ActorProxy.Create<IPhotoActor>(photoActorId,

"fabric:/PhotoAward/PhotoActorService" );

await client.SetPhoto(data, CancellationToken.None);

Page 54: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Actor löschen

var svc = (IActorService) this.ActorService;

await svc.DeleteActorAsync(this.Id, cancellationToken);

Page 55: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleActor-Service

Page 56: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Actor: Timer

Wrapper um .Net Timer

RegisterTimer

Nach Beendigung des Callbacks startet das nächste Zeitfenster

Unregister Timer

„Schlafen gelegte“ Actors erhalten keinen Timeraufruf

Page 57: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Actor: Reminder

Reminders werden auch zu bestimmten Zeitpunkten ausgelöst

Sie werden IMMER ausgelöst

public class ToDoListActor : Actor, IPhotoAwardActor, IRemindable{

public Task ReceiveReminderAsync(string name, byte[] context, TimeSpan dueTime, TimeSpan period){

if (name=="Abgabetermin"){

int amountToPay = BitConverter.ToInt32(context, 0);System.Console.WriteLine("Please pay your cell phone bill of ${0}!", amountToPay);

}return Task.FromResult(true);

}}

Page 58: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleDemo: Statefull Actor

Page 59: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Dependency Injection und Unit Tests

Asp WebApi kann Dependency Injection verwenden

In sonstigen Services nicht benötigt!

Mock-Klassen für StateManager, ReliableCollections,

Transaktionen u.ä. manuell schreiben

Page 60: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Beispiel ModuleDemo: Unit Testing

Page 61: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Update

Application Version erhöhen

Code Version erhöhen

Evtl. Data Version erhöhen

Page 62: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Continuous Delivery

TFS 2017 und TFS Online Eigene ServiceFabric Tasks für Build

und Release:

Versionsnummer setzen

Deployment

Page 63: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

1. Endpunkt im TFS definieren

Page 64: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

2. Continous Delivery erzeugen …

Page 65: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

3. Build Template bearbeiten

Page 66: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

3. Build Template bearbeiten: NPM install

Page 67: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

4. Build Template bearbeiten: Angular-CLI-Output verarbeiten

Page 68: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

5. Release Template

Page 69: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Backup and Restore

Ableitung vom Actor Service

Methode BackupAsync aufrufen

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-platform

https://github.com/Microsoft/azure-docs/blob/master/articles/service-fabric/service-fabric-reliable-services-backup-restore.md

Page 70: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:
Page 71: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservices für .Net Entwickler

Service Fabric bietet leistungsfähige Plattform mit

Z-Scale

Alles hat seinen Preis

Continous Delivery von Anfang an

Clustererstellung skripten

Clusterplanung ist komplex

Page 72: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Microservices für .Net Entwickler

Out of Scope

Authentication und Authorization

Partitionierung der Daten

Backup / Restore

Docker

Page 73: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Understanding Azure –a guide vor developers

http://aka.ms/adg

Service Fabric SDK

http://aka.ms/ServiceFabricSDK

Beispiele von Microsoft

http://aka.ms/ServiceFabricSamples

Case Studies

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

tag/case-study/

Beispielanwendung

http://blog.bridging-it.de/author/Tobias.Meier

Page 74: Microservices für .Net Entwickler - BridgingIT GmbHblog.bridging-it.de/media/blog/artikel/tobias... · Microservices für .Net Entwickler 01.06.2017 .Net Developer Group Ulm Bilder:

Vielen Dank

Email: [email protected] Twitter: @bITTobiasMeier

Blog: http://blog.bridging-it.de/author/Tobias.Meier

Bilder: www.dreamstime.com