Mijn ervaring met de Cloud Resume Challenge
De Cloud Resume Challenge was de perfecte manier om mijn perfectionistische, leergierige en onderzoekende zelf uit te dagen. In deze blog deel ik mijn ervaringen rondom elke stap in het proces: van het bouwen van een website tot het automatiseren van de infrastructuur via CI/CD.
Stap 1: Website bouwen met HTML en CSS
Aangezien ik vroeger de ambitie had om webdesigner of developer te
worden, is zowel HTML als CSS geen onbekend terrein voor mij. Deze
ervaring hielp mij dan ook om – na wat onderzoek te hebben gedaan en
een visueel ontwerp te hebben gemaakt – direct aan de slag te gaan. Ik
heb een creatieve en kritische blik, dus het duurt vaak even voordat
ik helemaal tevreden ben. Hierdoor heb ik verschillende iteraties
doorlopen.
Het responsief maken van de site bleek lastiger dan verwacht, omdat de
basisstructuur niet optimaal was en moderne layout tools als Grid of
Flexbox nog ontbraken. Na het herstructureren van de HTML, het
toepassen van responsive elementen zoals media queries en de Flexbox
layout module en het gebruiken van “em” en “rem” percentages, was het
resultaat zoals ik voor ogen had.
Stap 2: Hosting op Azure en HTTPS via CloudFlare
Voor de hosting koos ik Azure, en voor DNS en HTTPS CloudFlare. Dit
omdat CloudFlare bekend staat om zijn snelheid, betrouwbaarheid en
gebruiksgemak bij domeinregistratie.
Het opzetten van HTTPS vond ik een uitdaging. Dit omdat ik te maken
kreeg met een 'domain validation' foutmelding. Uiteindelijk bleek dit
te liggen aan de DNS/SSL/TLS-instellingen van CloudFlare. In Azure
kreeg ik namelijk een foutmelding tijdens het opzetten van de custom
domain. Na online research ontdekte ik dat het lag aan de CNAME record
die op proxied stond. Het tijdelijk uitzetten hiervan gaf Azure de
mogelijkheid om het domein te achterhalen en het succesvol toe te
voegen. Daarna heb ik de proxied weer aangezet.
Stap 3: Bezoekersteller bouwen met Azure Functions en CosmosDB
Stap 3 van de Cloud Resume Challenge heeft mij de meeste tijd gekost,
vooral omdat ik nog weinig ervaring had met Python, API’s, Azure
Functions en CosmosDB. Bij deze stap ik heb veel gehad aan mijn
persoonlijkheidskenmerken die ik in mijn inleiding noem. Juist bij dit
soort momenten duik ik er echt in om te begrijpen hoe alles precies
werkt. Ik lees veel, kijk video’s en blijf volhouden tot iets me lukt.
Na veel trial-and-error lukte het om een werkende setup te maken
waarin een HTTP-triggerd Azure Function data opslaat in CosmosDB en
een response terugstuurt met de huidige unieke bezoekers. De
response-tijd zelf was een uitdaging. Eerst dacht ik dat mijn
Python-code de oorzaak was, maar uiteindelijk bleek dat deze Azure
Function ‘slaapt’ bij inactiviteit en wakker moet worden bij de
eerstvolgende request die wordt opgeroepen. Wel heb ik de statische
variabelen buiten de HTTP-trigger geplaatst, wat heeft gezorgd voor
meer snelheid in de response-tijd.
Unieke bezoekers worden gemeten door middel van het IP-adres uit de
request headers te gebruiken. Bij een herhaalbezoek wordt de entry
geüpdatet in plaats van dat er een nieuwe wordt aangemaakt.
Stap 4: Infrastructuur als code en automatische deployment
Deze stap sprak me het meest aan: infrastructuur automatisch opzetten
met één druk op de knop. Dat voelt bijna magisch. Omdat ik ook
ervaring wilde opdoen met andere tools dan Azure-native oplossingen,
koos ik voor Terraform. Voor de CI/CD pipeline gebruikte ik GitHub
Actions.
Dit was voor mij nieuw terrein, dus opnieuw ben ik de documentatie
ingedoken – vooral via Microsoft Learn en Terraform zelf. Uiteindelijk
heb ik de pipeline zo ingericht dat bij een commit naar de main branch
de infrastructuur automatisch wordt getest en gedeployed naar Azure.
Ook kreeg ik bij Terraform Destroy een foutmelding tijdens het
verwijderen van de Custom Domain, omdat het DNS CNAME-record nog
aanwezig was. Dit heb ik opgelost door in Terraform een time_sleep van
60 seconden toe te voegen.
Reflectie
Wat het doorlopen van de Cloud Resume Challenge mij vooral heeft
geleerd, is hoe belangrijk het hebben van nieuwsgierigheid en
doorzettingsvermogen is. Er waren momenten waarop dingen niet werkten
zoals ik wilde. In plaats van gefrustreerd te raken, heb ik geprobeerd
rust en overzicht te creëren. Door écht te willen begrijpen hoe dingen
werken, heb ik mezelf ontwikkeld op manieren die ik van tevoren niet
had verwacht.
De Cloud Resume Challenge heeft niet alleen mijn technische kennis
vergroot, maar ook mijn zelfvertrouwen in het zelfstandig oplossen van
complexe vraagstukken.