In november 2022 heb het certificaat "Azure Developer Associate" behaald. Blij dat ik dit certificaat had en rondlopend met het idee om te kijken naar een volgend certificaat. Maar toen ontving ik een e-mail van Microsoft. Op 29 november 2023 "verloopt" mijn certificaat, dus ik moet deze van tevoren verlengen. Dat was de eerste keer dat ik "opnieuw" voor een certificaat aan de bak mag. Bij de anderen was het zweten om ze te halen, maar als je dan het certificaat had, dan was je ook wel klaar. En dat is mooi, want als ik al mijn certificaten elk jaar zou moeten verlengen, dat zou niet best zijn. Dan ben je overdag aan het werk en elke avond ben je weer aan de studie. Terwijl je al zoveel andere dingen moet/wil doen.
Ik had het nog even laten liggen, maar toen kwam naar voren dat we bij TRES wederom een studiedag zouden houden, donderdag 26 oktober 2023. Toen ben ik mij erin gaan verdiepen, wat houdt het precies in?
Ik ben eerst naar deze pagina van Microsoft Learn gegaan: link en daar lees je dit:
- Het originele certificaat, je moest betalen voor dat examen. Een renewal is gratis. En Fundamentals, die verlopen nooit (dat is mooi).
- Je hebt 6 maanden de tijd om te vernieuwen en zodra je slaagt wordt is het certificaat weer geldig tot je verloopdatum + 1 jaar (dus niet vanaf de her-examendatum).
- De assessments zijn kort en worden niet onder toezicht gehouden. Het zijn open boek examens en je kunt een renewal zo vaak uitvoeren als nodig is, zolang het maar voor de "verloopdatum" is.
Samenvatting
Hieronder volgt nog een redelijk lang verhaal, de korte versie is dus dat het examen om je certificaat te vernieuwen "unproctored" is, dus niemand die meekijkt. Het is een open-boek examen, dus als je twijfelt over je antwoord kun je het opzoeken. In mijn geval waren het 25 vragen en zat er ook geen tijdslimiet aan. De minimale score is 60%, ik heb het ruim gehaald met 80%! Dus kan kan er weer een jaar tegenaan!
Ik kwam in de voorbereiding veel DAPR tegen. Die tool was ik al eerder tegengekomen en toen dacht ik al "ik zou hier wat mee moeten doen". Misschien iets om blogposts over te maken, kijk hieronder maar even naar de verschillende DAPR-items. En ook de verschillende design-patterns zijn de moeite waard: link. En de "oefen-examens" die Microsoft nu zelf aanbiedt zijn ook erg handig/goed om te doen: link.
En mocht je met dit examen aan de slag moeten, misschien heb je nog wat aan de onderstaande aantekeningen!
Het is mooi dat ik dit op de studiedag kan doen, maar eigenlijk had ik meteen even een renewal-certificering moeten aanvragen en uitvoeren: dan was ik al klaar geweest en had ik me op wat nieuws kunnen richten. Dus een tip voor jou (en voor mij voor volgend jaar), krijg je een mail van Microsoft over verlengen, pak het meteen op!
Dat het zonder toezicht gebeurt, het een open boek examen is, het betekent dat ik niet in een apart afgeschermd hokje hoef te zitten, maar gewoon op mijn werkplek met mijn koptelefoon op het examen kan doorlopen.
Ingelogd op Microsoft Learn en naar mijn profiel gegaan (mocht je willen weten hoeveel badges ik heb e.d., dat is hier te bekijken: link). Via het menu Certificeringen kom ik in de lijst, zie ik het te verlopen certificaat en klik op de knop "Verlengen".
Op de pagina waar ik kom staat wat informatie en een blauwe knop "De verlengingsevaluatie uitvoeren", er achter staat 45 minuten. Je kunt dus "meteen los", je hoeft niet van tevoren een examen in te plannen.
In het overzicht staat dat dit de nieuwe items zijn die behandeld zullen worden:
- Explore the Microsoft identity platform
- Implement authentication by using the Microsoft Authentication Library
- Implement Azure Key Vault
- Implement Azure App Configuration
- Monitor app performance
- Implement Azure Container Apps
- Manage container images in Azure Container Registry
- Run container images in Azure Container Instances
- Work with Azure Cosmos DB
- Consume an Azure Cosmos DB for NoSQL change feed using the SDK
Vervolgens staat daar onder de leerblokken van Microsoft Learn, totaal 10 stuks, 4 uur en 53 minuten. Ook staat er bij dat ik al 8 van ie blokken voltooid heb. Maar goed, die heb ik vorig jaar doorgenomen, dus ik ga ze nu allemaal (nog) een keer door. Die blokken kun je hier zelf doorlopen: link.
Hoewel die blokken redelijk kort van stof zijn, kun je soms doorklikken naar andere informatie. En het is mogelijk dat je op het examen vragen krijgt over iets wat daar staat. Die items deel ik hier ook nog even;
Module 1
Application Resource Type in Microsoft Graph: link.
Uitleg over Managed Identities (lijkt recent bijgewerkt): link.
Uitleg over OAuth 2.0 (bij mij wel bekend, maar wel goed dat je zaken nog eens ergens kunt nalezen en kunt gebruiken als referentie): link.
Uitleg over de machtigingen en toestemming (namens een gebruiker of als los "background-proces"): link.
Module 2
De Microsoft Authentication Library, beschikbaar voor verschillende platformen. Hier het overzicht: link en de directe link voor .NET: link. Ik vraag me af waarom ik ook alweer zelf een nuget-package heb opgezet voor de interactie met de API van Azure, maar dat komt omdat ik hier volgens mij niet kon vinden wat ik zocht. En ook de tekst "The software may collect information about you and your use of the software and send it to Microsoft.", daar word ik niet zo blij van. Als ik een code-bibliotheek gebruik wil ik kunnen aangeven of bepaalde informatie wel of niet gedeeld mag worden.
Module 3
De Key Vault en de bijbehorende prijzen: link.
Uitleg over de Azure Identity client library voor .NET: link.
Module 4
App Configuration. Ik heb die module inderdaad eerder gedaan, maar besef me dat hier niet zoveel van is blijven hangen. Want "feature flags" en dergelijke, dat zijn leuke dingen om wat mee te doen!
Voor App Configuration heb je weer verschillende codebibliotheken, hier de algemene pagina: link en hier de link voor .NET Framework: link en voor .NET Core: link.
Module 5
Deze module gaat over "Application Insights". Als developer wil je "bouwen" en "aan de slag", maar bij de start moet je eigenlijk meteen al aan de slag met: wat wil ik monitoren, hoe kan ik dat monitoren, hoe kunnen we dat doorzoeken en hoe kunnen we de boel weer opruimen? Een punt wat ook na dit verleng-examen mijn aandacht verdient!
In de eerste slide wordt "APM" genoemd, Application Performance Monitoring", iets wat bijvoorbeeld ook in Kibana zit.
Je kunt in je logs query's uitvoeren met de Kusto Query Language: link. Je kunt grafieken en data bekijken in de Metrics Explorer: link.
Soms hoef je geen code aan te passen om te zorgen dat de monitoring werkt. Een overzicht welke frameworks dat ondersteunen vind je hier: link. De open-source tool OpenCensus wordt hierbij ook genoemd: link.
Net zoals je Zabbix zaken kunt laten checken, zo kan dat ook via Insights. Ping: link, Standard Test: link en een eigen implementatie: link, met TrackAvailability: link en wat trouble-shootingtips: link.
Module 6
Uitleg over KEDA supported scaler voor Azure Container Apps: link.
Uitleg over DAPR: link.
Toevoeging voor DAPR, starten met met .NET: link en voorbeelden voor .NET: link.
Uitleg over het Sidecar pattern, trek bv. de logging "uit" je applicatie: link.
Uitleg over de Ambassador service, dit is een proxy die verzoek afhandelt: link.
VERDER UITZOEKEN, CLOUD DESIGN PATTERNS: link.
Uitleg over Reliability patterns: link.
Uitleg over het gebruik van Identity Providers bij je containers:
- Microsoft Identity Platform: link.
- Facebook: link.
- GitHub: link.
- Google: link.
- Twitter (X): link.
- Algemene OpenID Connect provider: link.
Container apps worden in versie bijgehouden, je kunt dus terug naar een oude versie: link.
Uitleg over AZ CLIE syntax voor containerapp: link.
Homepage van DAPR (open-source): link.
De 7 componenten van DAPR:
Service-to-service invocation: link.
State management: link.
Pub/sub: link.
Bindings: link.
Actors: link.
Observability: link.
Secrets: link.
Meer details over DAPR, met de beperkingen: link.
DAPR, argumenten bij aanroep van de applicatie: link.
Module 7
Azure Container Registry, naast Linux en Windows docker ook Helm charts (link) en Open Container Initiative Image Format Specification (link).
https://learn.microsoft.com/en-us/azure/container-registry/container-registry-helm-repos
https://github.com/opencontainers/image-spec/blob/master/spec.md
Het bouwen van images via Azure Container Registry Tasks: link.
Limieten voor Azure Container Registry: link.
Syntax/aanroep van AZ CLI voor Azure Container Registry: link.
ACR Tasks gebruiken YAML, hier de uitleg: link.
Docker, de syntax van de dockerfile: link.
Docker, run reference: link.
Docker, build reference: link.
Module 8
Azure Container Instances zijn "losse containers", voor meer orchestratie, gebruik Azure Kubernetes Service (AKS): link.
ACI: multi-containers kun je alleen voor Linux gebruiken, wil je Windows gebruiken, dan is het maximaal 1 container per containergroep.
Ik kwam een onbekende term tegen, CIFS. Dat staat voor Common Internet File System en is open-source, opgezet door Microsoft. Vergelijkbaar met SMB? Docs hier op learn.microsoft.com:
Module 9
In het blok "Work with Azure Cosmos DB", daar is een blokje bij gekomen, "Explore change feed in Azure Cosmos DB", die is er dus bij gekomen.
Azure Cosmos DB, Github repo voor .NET SDK v3, bevat ook allemaal voorbeelden: link.
Nog meer voorbeelden voor Azure Cosmos DB voor NoSQL SDK voor .NET: link.
Stored Procedures, Triggers, Functies met JavaScript (brrrrrr....): link.
Triggers worden niet automatisch uitgevoerd, je moet dit specificeren via de SDK.
Change-feed toont INSERT en UPDATE, maar geen DELETE. Work-around is een attribuut "deleted" die je op TRUE zet. Met een TTL waarde zorg je dat deze na verloop van tijd verwijderd wordt.
De change-feed kan met PUSH en PULL werken. Je kunt zelf triggers aan wijzigingen in de feed koppelen. Hier is meer te lezen: link.
Module 10
Deze hele module is nieuw, "een Azure Cosmos DB for NoSQL-wijzigingenfeed gebruiken met behulp van de SDK".
Oefening, process change feed events using the Azure Cosmos DB for NoSQL SDK.
Dit verwijst naar een "Lab", waarvoor je een account (gratis) nodig hebt. Mocht je dat willen skippen, je kunt de handleiding (link) en de instructies ook doornemen (link).
Volgens mij had ik deze al eens gezien (of getest?), je hebt een emulator voor Azure Cosmos DB, mocht je op je eigen pc aan de slag willen. Uitleg staat hier: link.
De download staat hier: link.
Data genereren voor je voorbeeldapplicatie: link.
Bij de instructies staat dit:
dotnet tool install cosmicworks --global --version 1.*
Dat heb ik gedaan.... maar die versie verwacht .NET Core 3.1. Die versie is allang uitgefaseerd.
Dus deze versie heb ik weer verwijderd met:
dotnet tool uninstall cosmicworks --global
Op de nuget-pagina van de tool staat dit:
dotnet tool install --global CosmicWorks --version 2.0.3
Daarna het commando om data toe te voegen. Helaas mislukt dat:
cosmicworks --endpoint <cosmos-endpoint> --key <cosmos-key> --datasets product
Nadat ik namelijk de connectiestring ingevoerd heb, krijg ik deze output:
Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: 37b46dc2-da34-4b45-ab4f-fde2813d8c4f; Reason: (Message: {"Errors":["x-ms-cosmos-migrate-offer-to-manual-throughput must be supplied and offercontent must contain autopilotSettings for migration of autoscale collection to manual throughput."]}
ActivityId: 37b46dc2-da34-4b45-ab4f-fde2813d8c4f, Request URI: /apps/DocDbApp/services/DocDbMaster0/partitions/780e44f4-38c8-11e6-8106-8cdcd42c33be/replicas/1p/, RequestStats:
RequestStartTime: 2023-10-26T09:13:33.3245236Z, RequestEndTime: 2023-10-26T09:13:33.3265256Z, Number of regions attempted:1
Daarom "met het handje" zelf 1 item in de emulator toegevoegd en ik zie deze netjes terug in de console binnen Visual Studio Code. Codeworks moet ik verder nog eens naar kijken, want dat lijkt een hele mooie tool om dynamisch data toe te voegen!
Dit afgerond. Nu kijken of de basis goed zit.
Microsoft biedt nu ook "Practise Assesments" aan, de lijst kun je hier bekijken:
De AZ-204 zit er ook tussen, dus hier ga ik mee aan de slag:
Een slechte generale is een goede repetitie. In mijn geval klopt dat zeker, deze oefening, daar haal ik "slechts" een score van 44% (je moet minimaal 60% halen).
Voordeel is wel dat je een lijst met referentiemateriaal krijgt. Ik ben vervolgens voor "het echt" gegaan en heb deze documentatie niet meer doorgelezen, maar misschien kan het jou helpen bij je voorbereidingen!
Allemaal te laag:
* Develop Azure compute solutions
* Develop for Azure storage
* Implement Azure security
* Monitor, troubleshoot, and optimize Azure solutions
* Connect to and consume Azure services and third-party services
Items ter referentie:
https://learn.microsoft.com/en-us/azure/azure-monitor/logs/log-analytics-tutorial
https://learn.microsoft.com/en-us/azure/azure-app-configuration/concept-private-endpoint
https://learn.microsoft.com/en-us/azure/azure-monitor/overview
https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/change-feed-processor?tabs=dotnet
https://pvandenheede.wordpress.com/2019/05/22/azure-api-management-execution-order-of-policies/
https://azure.microsoft.com/en-us/pricing/details/cache/
https://stackexchange.github.io/StackExchange.Redis/Basics.html
https://learn.microsoft.com/en-us/dotnet/api/azure.storage.sas.blobsaspermissions?view=azure-dotnet
https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-properties?tabs=azure-ad
https://learn.microsoft.com/en-us/azure/storage/common/authorize-data-access
De oefeningen heb ik niet gedaan en zou ik eigenlijk thuis nog een keer moeten doen: