Architecting microservices and cross platform apps in .NET 5 on Azure


Microservices Software Architect in .NET5 on Azure using Docker
Opleiding ICT en informatiemanagement 190636

Introductie

Software ontwikkelaars zijn vandaag verplicht om snel en efficiënt in te spelen op de continu wijzigende noden van hun klanten en wijzigende marktomstandigheden willen zij concurrentieel aantrekkelijk en relevant blijven. De meeste van hun bestaande applicaties zijn momenteel gebouwd op basis van een verouderde monolitische architectuur. Hier wringt nu echter het schoentje! Immers het aanbrengen van wijzigingen hierin is niet evident. Dit omdat alle componenten onderling met elkaar geconnecteerd zijn en bijgevolg ook van elkaar afhankelijk zijn.

De shift naar een Agile Business omgeving resulteert bijgevolg ook in een shift van monolitische architectuur naar microservices architectuur waarbij de software opgedeeld is in een aantal kleinere, individuele en onafhankelijke services die als een autonoom proces kunnen werken en onderling met elkaar communiceren via asynchrone messaging queues. Elke microservice kan zelfs in een andere programmeertaal ontwikkeld zijn en zelfs op een ander platform draaien.

Het toepassen van een microservice architectuur resulteert in het sneller en efficiënter kunnen aanbrengen van wijzigingen in deze bouwstenen.

Wat kent men na het volgen van deze opleiding?

De focus van deze opleiding ligt vooral op het nieuwe .Net 5 platform, met Microservices als architectuur, mobile/web apps (SPA) als doel, Azure als cloud omgeving, Docker als container technology, oAuth als authenticatie mechanisme. Dit alles met een DevOps invalshoek.

De belangrijkste technologiën die in deze opleiding aan bod komen zijn :

  • .NET 5 ( + de migratie ernaar vanuit .NET 4.x)
  • MicroServices architectuur (REST based, gedreven door Open API Specification)
  • Azure (Service Bus, App Services, Container Registry, Active Directory)
  • oAuthen Identity server als Authenticatie mechanisme
  • DevOps (source control, pull requests, CI/CD)
  • Containers als deployment model (Docker/Kubernetes)

Moderne applicaties bestaan immers uit losgekoppelde services die op uiteenlopende platformen zullen draaien. Een sterk doorgedreven test en deployment omgeving nodig hebben met als doel op verschillende user interfaces beschikbaar te zijn. Uiteraard is de kwaliteit van de code ook de verantwoordelijkheid van de software architect.

Opbouw van een software referentie architectuur 3.0

De opleiding is zo opgebouwd dat er een volledige referentie architectuur in Visual Studio 2019 uitgebouw wordt, die dan in Azure Devops sourcecontrol beschikbaar is voor de deelnemers. Deze solution bevat alle behandelde patronen, maakt gebruik van de nodige libraries en toont proof-of-concepts voor uiteeenlopende types van applicaties, API’s backends, integraties, authenticatie mechanismes en database benaderingen. Vanuit deze referentie architectuur kan meteen een volledige applicatie snel en goed onderbouwd verder ontwikkeld worden na het beindigen van de opleiding. U leert ook Docker templates te bouwen en scripts op te zetten voor de hosting van de verschillende architectuur lagen in de Azure cloud.

Omschrijving

De opleiding is zo opgezet dat er een volledige referentie architectuur in Visual Studio uitgebouwd wordt, die dan in Azure Devops sourcecontrol beschikbaar is voor de deelnemers. Deze solution bevat alle behandelde patronen, maakt gebruik van de nodige libraries en toont proof-of-concepts voor uiteeenlopende types van applicaties, API’s backends, integraties, authenticatie mechanismes en message queueing systemen. Vanuit deze referentie architectuur kan meteen een volledige applicatie snel en goed onderbouwd verder ontwikkeld worden. U leert ook Docker template te bouwen en CI/CD pipelines op te zetten voor de hosting van de verschillende architectuur lagen in de Azure cloud.

5 redenen waarom u - als software ontwikkelaar - zou overschakelen naar microservices architectuur met .Net 5 Azure - Docker:

  • Gemakkelijker om applicaties te bouwen en te onderhouden
  • Georganiseerd rond zakelijke mogelijkheden
  • Verbeterde productiviteit en snelheid in ontwikkeling
  • Flexibiliteit in het gebruik van technologieën en de schaalbaarheid
  • Autonome en interdisciplinaire ontwikkel-teams

Word Future Proof Microservice Software Architect IN .NET 5- AZURE - Docker (of Software Architect van de 3de generatie)

Deze nieuwe opleiding heeft als doel Software developers of huidige Software Architecten voor het volgende decenium 'future proof' klaar te stomen waarbij zij inzichten ontwikkelen om de nieuwste generatie applicaties/services te ontwerpen die gebaseerd zijn .Net 5/Azure en MicroServices/Containers.

Tijdens deze opleiding leert u een referentie Software Architectuur op te bouwen. Hierbij staan microservices, .NET 5 en container deployment modellen centraal.

Ook is er aandacht voor nieuwe authenticatie oplossingen zoals Azure Active Directory in combinatie met IdentityServer.

Azure Devops is het platform voor zowel source control als voor continuous integration/deployment pipelines waarbij de services als docker containers via een Azure container registry naar verschillende omgevingen zal kunnen  gedeployed worden.

Voor wie is deze opleiding bestemd?

Software architecten die nood hebben aan een 'upgrade' van hun kennis naar de meest recente technologie met als doel een nieuwe microservices referentie Software Arhitectuur in .NET 5 op te bouwen en hiervoor zelf de tijd niet hebben om dit autonoom te realiseren. Deze opleiding biedt ze alle kennis en inzichten voor deze 'kennis' migratie naar deze nieuwe microservices referentie Software Architectuur.

Lead Developers die willen doorgroeien naar architecten rol waarbij van hen verwacht wordt dat zij de nieuwe generatie applicaties ontwerpen (gebaseerd op deze nieuwe microservices referentie Software Architectuur in .NET 5). Deze applicaties dienen snel en efficiënt inzetbaar en aanpasbaar te zijn en uiteraard perfect afgestemd te blijven op continue wijzigende business vereisten. Op basis hiervan kan de lead Developer de nodige guidance/richtlijnen voor zijn team opstellen, zodanig dat iedereen deze referentie Software Architectuur op dezelfde wijze gaat toepassen.

Iedere developer die deze nieuwe nieuwe microservices referentie Software Arhitectuur en bijhorende technologieën/patronen wil leren kennen vanuit de noodzaak om binnenkort niet achter te blijven met een 'legacy applicaties die gebaseerd zijn op een verouderde monolithische Architectuur'.

Voorkennis

Personal skills/competenties:

  • analytisch denkvermogen
  • empathisch
  • assertief
  • communicatief
  • aanleg voor formalisme
  • ...

Technical skills: minstens 2 jaar actieve programmeerervaring in OOP-taal zoals: VB.NET, of C#.NET, JAVA, C++, ...

Methodologie

'Consultancy in de vorm van opleiding'

Dit is een opleiding op niveau van consultancy. We beginnen dus niet met de code van een 'hello world' applicatie in te tikken en deze stap voor stap langzaam uit te bouwen.

Eerst worden de concepten uitgelegd vanuit de praktijk (en dus reallife ervaringen) waarbij deze oplossingen vormen voor bestaande problematieken in software architectuur. Daarna wordt een referentiearchitectuur opgezet waarbij componenten (zijnde code door de trainer volledig afgewerkt) ingeplugd worden. Deze code, die de technologieën/patronen implementeren, wordt in detail besproken. De componenten zijn direct uitvoerbaar waarbij de cursist de concepten at runtime kan ervaren. Het totaal van al deze componenten vormen een waardevolle referentie architectuur.

Praktische uitwerkingen

Bij elke module zijn er steeds praktische uitgewerkte referentie oefeningen die resulteren in herbruikbare componenten en waarbij deze terug andere reeds gebouwde componenten gaan aanspreken of technologieën demonstreren die in andere modules behandeld zijn. Zo komt de volledige referentiearchitectuur tot leven.

Voor deze opleiding dient u uw eigen laptop mee te brengen met daarop volgende software:

  • Windows 10,
  • Laatste versie van Visual Studio, .Net 5

Programma

We passen in de opleiding Azure Devops toe als source control, build en release omgeving waarin de te bouwen code vanuit SCRUM planning ontwikkeld zal worden. Daabij staan we stil bij verschillende branching/merging strategieën en zetten de verschillende deployment omgevingen op in Azure en dit zowel met en als zonder Docker.

Daarnaast is er ook aandacht voor SOLID C# ontwikkeling en worden nieuwe C#9.0 taalelementen voor het programmeren van clean code behandeld. Het IOC patroon wordt terug bekeken vanuit de .NET services container invalshoek waarbij we de vraag stellen of een externe ICO container nog nodig is.

Een terugkerende gedachtegang in de opleiding is dat we steeds de pro’s en con’s van een bepaalde technologie of patroon naast elkaar zetten om zo binnen een specifieke context een doordachte en correcte keuze te maken.

In deze opleiding kijken we ook af en toe naar nieuwe technologie en architectuur patronen.  Hoe matuur deze zijn en wat ze als voordeel kunnen bieden op lange termijn. We onderzoeken wat bv. gRPC als alternatief voor REST API’s kan betekenen.

Ook is het zinvol om alternatieven voor reeds gekende en toegepaste technologieën van naderbij te bekijken. We stellen ons bv. de vraag waarom Git eventueel beter is dat TFSC source control bij complexere applicaties.

Inhoudelijk is alles doorweven met best practices die vanuit de praktijkervaring van de trainer zijn opgedaan. Dit resulteert in een bruikbare en duidelijke guidance naar standaardisatie van coderichtlijnen, het verhogen van loosely coupling en een manier voor efficiënte samenwerking in het development team.

Ten slotte bekijken we ook de kost van hosting en ontwikkeling. Het is immers ook een verantwoordelijkheid van de architect om de kostprijs van de softwareontwikkeling te begroten en te beheersen tijdens de uitvoering van de project. En tevens het evenwicht te behouden met de gecreëerde business value ism de opdrachtgever. Hier zien we dat een Linux hosting heel wat goedkoper is en dat de mogelijkheid om een browser applicatie volledig in de vertrouwde .NET omgeving te maken (waardoor geen investering in aanleren TypeScript/Angular) de ontwikkelkost sterk verlaagd.

Module 1: .Net 5.0

  • What is er nieuw in .Net 5.0
  • Migratie vanuit .NET Core 3.x
  • Cross platform aspecten.
  • Self containing executables
  • IServiceCollection
  • De StartUp Class
  • Configuratie Modellen
  • HTTP Middleware

Module 2:  Microservices Design

  • Hoe microservices designen ?
  • CAP Theorem
  • Business driven approach
  • Migreren van bestaande monolitische database
  • Messaging bus contracten definieren
  • Gelaagdheid van API’s
  • Semantic versioning an API’s
  • Commands/Queries/Events

Module 3: REST API’s + Open API specification

  • REST Principles
  • Type vs. untyped methods in controllers
  • Code first vs. Open API specification first.
  • Code generatie (NSwag)
  • Unit of work patterns in API’s.
  • Een vooruitblik op gRPC als alternatief
  • GraphQL based API’s.

Module 4: oAuth Authenticatie (Azure Active Directory/IdentityServer)

  • Single sign on principles
  • oAuth/Open ID Connect
  • JWT tokens en claims
  • 2FA Authentication
  • Authentication flows (SPA, Mobile, Machine-to-machine)
  • Opzetten Identity Server 4.0
  • Opzetten Azure Active Directory (B2B, B2C)
  • External identities

Module 5: API Resiliency, Health monitoring

  • Resiliency Patterns (Retry, Bulkhead Isolation, Circuit breaker)
  • Logging
  • Polly als resiliency framework toepassen
  • Health monitoring API’s
  • Kubernetes als monitoring platform.

Module 6: BFF/API Gateways

  • Service Discovery patterns
  • Onafhankelijk ts. Client en API via BFF
  • Design van Backend-for-frontend web API’s.
  • De nood voor API Gateways
  • Consul, Azure API management, KONG

Module 7: Azure ServiceBus/RabbitMQ

  • Asynchrone messaging voor data uitwisseling tussen microservices
  • Pub/Sub patronen
  • Topic/Filters
  • Cloud based messaging vs. RabbitMQ
  • RabbitMQ in een docker container opzetten.

Module 8: Advanced Microservices Patterns

  • CQRS
  • Event Sourcing
  • Transactional Outbox
  • Caching (Redis cache in container)
  • Sagas

Module 9: Azure Devops

  • Git based source control
  • Feature branches en Pull Request
  • CI/CD Pipelines opzette.
  • Infrastructure as code
  • Release management

Module 10: Docker/Kubernetes deployment op Azure

  • Windows vs. Linux containers
  • 3th party containers in dockerhub Database
  • Multi stage builds
  • Docker en Docker Compose files opzetten
  • Docker file share en networking
  • Azure Container registry
  • Docker image als Azure App Service opzetten.
  • Intro Azure Kubernetes Services

Alle bovenstaande modules komen niet noodzakelijkerwijs in deze volgorde aan bod, maar geven hierbij wel een gedetailleerde inhoud terug van wat u in deze opleiding mag verwachten.

Bij aanvang van elke sessie zullen de deelnemers toegang krijgen tot de uitgewerkte oplossing van de vorige sessie. Zo kan iedereen steeds terug instappen en gaat er geen tijd verloren tijdens de opleiding.

2019-636-4-OmschrijvingDocent-1.jpg

Kurt Claeys

Kurt Claeys, ervaren software architect en trainer met meer dan 25 jaar ervaring in software ontwikkeling met Microsoft technologieën in verschillende projecten: 'Ik koppel in deze cursus mijn praktijkkennis in deze evolutie naar micoservices/.Net 5/Docker aan mijn ervaring als trainer. Kurt was Microsoft MVP, Microsoft Certified Trainer en Technical Solution Professional Azure en is momenteel actief als freelance software architect. Hij bouwde meerdere referentiearchitecturen (zowel backend als frontend). Zijn focus ligt nu vooral op microservices in .Net 5 en cross platform ontwikkeling.

Escala helpt u graag in uw continu streven naar verbetering en professionalisering.
Via in-house opleidingen, advies en begeleiding biedt Escala de nodige ondersteuning.