Bye, Bye Infrastructure · VS Code-Extension npm install -g yo npm install -g generator-azuresfmesh...

Post on 14-Oct-2020

10 views 0 download

Transcript of Bye, Bye Infrastructure · VS Code-Extension npm install -g yo npm install -g generator-azuresfmesh...

Bye, Bye InfrastructureMicroservices mit Service Fabric Mesh

Tobias Meier, BridgingIT GmbH

Bilder: www.dreamstime.com

Logos: Jeweilige Hersteller

26.09.2018 BASTA!

Wir bringen Dinge zusammen

Standort Heidelberg

Berliner Straße 41

69120 Heidelberg

Standort Nürnberg

Königtorgraben 11

90402 Nürnberg

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 | September 2018 | www.bridging-it.de

Lead Softwarearchitekt Microsoft

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

Tobias Meier

Agenda1. Status Quo

2. Kurzer Überblick

3. Service Fabric Mesh

im Detail

4. Ausblick

Azure

Service Fabric

Microservice Microservice Guest Executable

Reliable Actor API Reliable Service API

Service Fabric

On-Premise

Microservice Microservice

Naming Service

Failover Manager

Resource Balancer

Replicator

Health Manager

Cluster Manager

Image Store Hosting

Transport

Testability

Communication

Federation

System services

Eigenes

Rechenzentrum

Beliebige Cloud-

Anbieter

Azure

Service Fabric

Microservice Microservice Guest Executable

Reliable Actor API Reliable Service API

Service Fabric

On-Premise

Microservice Microservice

Naming Service

Failover Manager

Resource Balancer

Replicator

Health Manager

Cluster Manager

Image Store Hosting

Transport

Testability

Communication

Federation

System services

Eigenes

Rechenzentrum

Beliebige Cloud-

Anbieter

Betreuungs-aufwand

Betreuungs-aufwand

Service Fabric as a Service:

Service Fabric Mesh

▪Serverlose Infrastruktur

▪Skalierung bei Bedarf

▪Programmiersprachen-unabhängig

• Entwicklung von Microservices

▪Sekundengenaue Abrechnung

▪ Lifecycle Management

▪ Intelligent traffic routing

▪Verwaltung von Microservices und Containern

ServerlessExplizites Cluster - Management

Service Fabric Service Fabric Mesh

Bring your own infrastructure Azure Infrastructure „As A Service“

Schon wieder etwas Neues ?

Service Fabric Mesh setzt auf Service Fabric auf !

Service Fabric

Service Fabric Mesh

Entwicklungsumgebung vorbereiten

▪ Visual Studio 2017 (15.6 oder neuer) bzw. VS Code

▪ Docker (Hyper V muss aktiviert sein)

▪ Service Fabric Mesh SDK

▪ Visual Studio Service Fabric Tools Preview

▪ Regionale Settings auf “Englische Lokale” umstellen

▪ Cluster manuell einrichten

▪ ./DevClusterSetup.ps1 -UseMachineName -CreateOneNodeCluster

Achtung: Nach jedem Wechsel der IP-Adresse muss der Cluster neu eingerichtet werden!

VS Code-Extension

▪ npm install -g yo

▪ npm install -g generator-azuresfmesh

▪Visual Studio Code Extension installieren

Entwicklungsumgebung vorbereiten

▪ Visual Studio 2017 (15.6 oder neuer)

▪ Docker (Hyper V muss aktiviert sein)

▪ Service Fabric Mesh SDK

▪ Visual Studio Service Fabric Tools Preview

▪ Regionale Settings auf “Englische Lokale” umstellen

▪ Cluster manuell einrichten

▪ ./DevClusterSetup.ps1 -UseMachineName -CreateOneNodeCluster

Achtung: Nach jedem Wechsel der IP-Adresse muss der Cluster neu eingerichtet werden!

Empfehlung: Windows Server 2016

Install-Module -Name DockerMsftProvider -Repository PSGallery –ForceInstall-Package -Name docker -ProviderName DockerMsftProviderRestart-Computer -Force Sconfig// 6 auswählen

Service Fabric Resources

Service Fabric /

Service Fabric Mesh

Resources

• Applikation / Dienste

• Netzwerk

• Laufwerke

• Routing-Regeln

• Secrets

• Skalierungs-Regeln

YAML / JSON

deployment.json

Service Fabric Resources

Service Fabric /

Service Fabric Mesh

Resources

• Applikation / Dienste

• Netzwerk

• Laufwerke

• Routing-Regeln

• Secrets

• Skalierungs-Regeln

YAML / JSON

deployment.json

Container

Service Fabric Resources

YAML / JSON

Service Fabric Bibliotheken• Reliable Collection• Local H/A Storage (Asp.Net Core only)• SF API Client

18

Service Fabric Application Models

Native Model

▪Manifest-Dateien

▪ Prozesse und Container

▪ .Net / Java

▪ Statefull, Stateless, Actor Services.

Docker Compose

▪Docker-Container in Service Fabric

▪Minimale Service Fabric-Integration

Resource Model

▪Yaml /Json

▪Container

▪ Lose gekoppelt

Service Fabric Application Models

Native Model

Resource-Model

Docker Compose

Local Any Cloud On-Prem Azure Mesh

Mesh in Azure erzeugen: Visual Studio

Mesh in Azure erzeugen: Azure CLI 1/2

▪Extension hinzufügen / aktualisieren:▪ az extension add --name mesh

▪ az extension update --name mesh

▪Deployment über URL (Bash-Syntax)▪ az mesh deployment create --resource-group myResourceGroup--template-urihttps://sfmeshsamples.blob.core.windows.net/templates/voting/mesh_rp.windows.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"

Mesh in Azure erzeugen: Azure CLI 2/2

▪Deployment über lokales Template

az mesh deployment create --resource-group myResourceGroup--template-file merged-arm.json –parameters @myparams.json

Mesh in Azure erzeugen: Fallstricke

Passwort für Container-Registry muss angegeben werden: myparams.json

{"$schema": "https://schema.management.azure.com/schemas/2015-01-

01/deploymentParameters.json#","contentVersion": "1.0.0.0","parameters": {

"registryPassword": {"value": "xytXYmEHzxaa=7d4TvVvVvtvhde23bU"

}}

}

Wie lautet die Adresse ?

az mesh network list

Wie lautet die Adresse ?

az mesh network list

Service.yaml

## Service definition ##application:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoproperties:services:- name: RestaurantService

properties:description: RestaurantService…osType: WindowscodePackages:- name: RestaurantServiceimage: restaurantservice:devendpoints:- name: RestaurantServiceListener

port: 20004

environmentVariables:- name: ASPNETCORE_URLSvalue: http://+:20004

resources:requests:cpu: 0.5memoryInGB: 1

replicaCount: 1networkRefs:- name: BASTA2018DemoNetwork

Service.yaml

## Service definition ##application:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoproperties:services:- name: RestaurantService

properties:description: RestaurantService…osType: WindowscodePackages:- name: RestaurantServiceimage: restaurantservice:devendpoints:- name: RestaurantServiceListener

port: 20004

environmentVariables:- name: ASPNETCORE_URLSvalue: http://+:20004

resources:requests:cpu: 0.5memoryInGB: 1

replicaCount: 1networkRefs:- name: BASTA2018DemoNetwork

Keine Tabs erlaubt, nur Spaces

Visual Studio: Edit | Advanced | View White Space

Network.yaml

## Network definition ##network:schemaVersion: 1.0.0-preview1name: BASTA2018DemoNetworkproperties:

description:BASTA2018DemoNetwork description.

addressPrefix: 10.0.0.4/22

ingressConfig:layer4:

- name: PortalIngresspublicPort: 20009applicationName:

BASTA2018SFMeshDemoserviceName: PortalendpointName:

PortalListener

Network.yaml

## Network definition ##network:schemaVersion: 1.0.0-preview1name: BASTA2018DemoNetworkproperties:

description:BASTA2018DemoNetwork description.

addressPrefix: 10.0.0.4/22

ingressConfig:layer4:

- name: PortalIngresspublicPort: 80applicationName:

BASTA2018SFMeshDemoserviceName: PortalendpointName:

PortalListener

Service skalieren

az mesh deployment create --resource-group visualdemob1 --template-urihttps://sfmeshsamples.blob.core.windows.net/templates/visualobjects/mesh_rp.scaleout.linux.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"

Service skalieren

az mesh deployment create --resource-group visualdemob1 --template-urihttps://sfmeshsamples.blob.core.windows.net/templates/visualobjects/mesh_rp.scaleout.linux.json --parameters "{\"location\": {\"value\": \"westeurope\"}}"

Offizielles Microsoft Beispiel:

https://github.com/Azure-Samples/service-

fabric-mesh/tree/master/src/visualobjects

Anleitung:

https://docs.microsoft.com/en-

us/azure/service-fabric-mesh/service-fabric-

mesh-howto-app-scale-out

Ignite 2018: Auto Scaling

autoScalingPolicies: [{"name": "MyAutoscaleRule1","trigger": {

"kind": "AverageLoad","metric": {

"kind": "Resource","name": "cpu",

},"lowerLoadThreshold": 0.3,"upperLoadThreshold": 0.5,"scaleIntervalInSeconds": 10},

"mechanism": {"kind": "AddRemoveReplica","minCount": 1,"maxCount": 100,"scaleIncrement": 10}

}]

Video von Microsoft:

https://youtu.be/-6qds7KSeC0

Routing

▪Plattformunabhängige Namensauflösung

▪Unterstützung für ▪ Retries

▪ Circuit Breaker-Pattern (dt. Sicherung)

▪ Throttling

Netzwerk

Service 3Service 2

Routing (in der Preview noch nicht vorhanden)

Service 1

Proxy Proxy Proxy

Proxy Routing-

Resource.yaml

Volume Resource

Service

Service FabricVolume Disk

Azure File Storage Volume

Re

pliz

iert

Volume.yaml

## Volume definition ##volume:schemaVersion: 1.0.0-preview1name: BASTA2018SFMeshDemoVolumeproperties:description: Azure Volumeprovider: SFAzureFileazureFileParameters:shareName: "[parameters('azurefile-shareName')]"accountName: "[parameters('azurefile-accountName')]"accountKey: "[parameters('azurefile-accountKey')]"

Offizielles Microsoft Beispiel:

https://github.com/Azure-Samples/

service-fabric-mesh/tree/master/src/counter

Anleitung:

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

mesh/service-fabric-mesh-howto-deploy-app-azurefiles-volume.md

Microsoft Ignite 2018: Statefulness

• NuGet-Packages für .Net Core und Library für Java

• Replikation erfolgt über ein Service Fabric Volume

Service Package

Reliable Collection

Service Package

Reliable Collection

Service Fabric Volume

Microsoft Ignite 2018: Secrets

Service

Secr

ets,

Cer

tifi

cate

s

Unterstützung von HTTPS-Endpoints in Mesh!

Einschränkungen der Preview

▪Max. 5 Applikationen

▪Max 5 Netzwerk und Ingress-Endpunkte

▪Max 10 Azure-Volumen

▪Max 3 Replikas

▪Max 16 GB RAM pro Container

▪Max. 48 GB RAM pro Applikation

▪Max 12 cores pro Applikation

▪Max 4 Cores pro Container

Roadmap

Kurzfristig:

▪ Reliable Collections

▪ Service Fabric volume driver

▪ Secrets (Key Vault)

▪ Network (Erweiterung)

▪ Gateway

▪ Autoscale

▪ Erweitertes Tooling in VS.Net

▪ Maven-Unterstützung

Weitere Roadmap:

▪Version 1.0

Beispiele des Vortrags und Folien

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

▪ https://github.com/bitTobiasMeier/basta2018mesh

Ab 27.09.2018

Nächste Schritte

▪Übersicht: https://docs.microsoft.com/de-de/azure/service-fabric-mesh/service-fabric-mesh-overview

▪Dokumentation: https://docs.microsoft.com/de-de/azure/service-fabric-mesh/

▪Beispiele von Microsoft:https://github.com/Azure-Samples/service-fabric-mesh

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

Email: Tobias.Meier@bridging-it.de

Twitter: @bITTobiasMeier