Steeds vaker is het .NET Aspire framework onderwerp van het gesprek. Het wordt vaak vergeleken met Docker Compose, een vergelijkbare oplossing die al jarenlang trouw wordt toegepast door ontwikkelaars. Maar wat zijn kenmerken van .NET Aspire, de grootste voordelen voor ontwikkelaars en tegen welke uitdagingen loop je mogelijk aan met de toepassing van het framework? Onze Thimo legt het uit.
Met Thimo Koolen, Senior Software Engineer.
Nog even terug: wat is .NET Aspire?
.NET Aspire is als het ware een framework om .NET heen, waarmee je makkelijk Cloud-native applicaties lokaal kunt ontwikkelen, draaien én uiteindelijk deployen richting de Cloud. Dit gaat dan met name om deployment naar Microsoft Azure, maar tegenwoordig is er in .NET Aspire ook ondersteuning voor AWS. Het framework heeft als doel om de ontwikkelcyclus soepeler en makkelijker te laten verlopen. .NET Aspire is daarnaast open-source, wat betekent dat iedereen buiten Microsoft contributer kan zijn en waarde kan toevoegen aan deze oplossing.
Als je start in een nieuw team, zoals bij een klant of opdrachtgever, moet je altijd eerst de code lokaal werkend krijgen. Dat is in veel gevallen een flinke klus, want je moet de code downloaden, veel dingen installeren en vaak zijn er veel afhankelijkheden. Dat kost veel tijd en dat is zonde: je wil immers snel aan de slag! Aspire maakt het makkelijker om de code lokaal werkend te krijgen. Vaak werkt het al met één druk op de knop, omdat je tegenwoordig heel veel met containers werkt. Hier wordt met name Docker veel voor gebruikt. Heel veel belangrijke dingen, zoals databases, kunnen tegenwoordig ook in containers draaien. Maar ook jouw .NET-applicatie. Sterker nog, er zit zelfs native support in .NET om jouw applicatie in een Docker-Container te kunnen draaien zonder een hele Docker-configuratie te moeten schrijven. Over efficiëntie gesproken!
Lokaal draaien
Aspire gebruikt heel de container-infrastructuur om lokaal te kunnen draaien én om communicatie tussen de containers te realiseren. Dus stel: jij hebt een applicatie die een database aanroept, dan geef je dit aan in de Aspire orchestrator code – gewoon in het vertrouwde .NET. Wanneer je de orchestrator start, zal Aspire (in samenwerking met Docker) de juiste container voor de database provider downloaden en opstarten. Aspire zal daarnaast de connection string in je applicatie aanpassen naar de connectie van de database, zodat dit direct werkt. Immers: Aspire weet welke database draait en kan zo het werk voor jou als developer versimpelen.
Deployen naar de Cloud
.NET Aspire speelt ook een grote rol in het deployen naar de Cloud. Voor Microsoft Azure kan je Bicep gebruiken om CI/CD pipelines te bouwen. Vanuit Azure Developer CLI kan je een base template generen voor je Aspire project, zodat je pipelines makkelijk kunnen draaien. In Azure zullen jouw applicaties als Azure Container Apps (ACA) gedeployed worden, inclusief de benodigde resources eromheen.
Wat zijn de grootste voordelen van .NET Aspire?
Dat zijn er best wel wat. Nog even praktisch: Aspire is een opiniated framework. Dit betekent dat er een aantal slimme mensen zijn die hier goed over hebben nagedacht en best practices hebben uitgezocht. Iedereen heeft er een eigen mening over, dus dit kan ook betekenen dat je er als ontwikkelaar soms anders over denkt. Geen zorgen: je kan een hoop aanpassen naar je eigen wensen!
Maar wat zijn volgens ons de grootste voordelen van het framework?
- Telemetry. .NET Aspire gebruikt telemetry om te bepalen hoe snel een service werkt en de applicatie draait. Hoelang duurt een request? Hoeveel request komen er binnen? Dit gaat om bepaalde endpoints, logs, traces en metrics. Dit maakt dat applicaties makkelijker en sneller te debuggen zijn. Telemetry zit standaard in je Aspire-project ingebouwd, dus je hoeft er helemaal niks voor te doen. Nog beter: de telemetry gebruikt de OpenTelemetry-standard, waardoor je deze gegevens ook kunt verbinden met andere dashboards buiten Aspire, zoals Prometheus;
- Dashboard voor lokaal ontwikkelwerk. Alle telemetry en traces kan je inzien in een volledig dashboard. Dit geldt ook voor logging, wat erg goed geïntegreerd is. Wel belangrijk: Deze gegevens worden niet opgeslagen, dus het is echt bedoeld voor lokaal werk. Een hoop softwareontwikkelaars complimenteren het Aspire dashboard, omdat het goed in elkaar steekt, uitgebreid is en fijn werkt. Ze zouden het graag ook in de Cloud willen gebruiken! Die goede integratie van logging is één van de redenen waarom Aspire steeds vaker gebruikt wordt. Tot voor kort werd Docker Compose heel veel toegepast, want daarbinnen kan je meerdere containers in één keer starten. Aspire lijkt daar echter heel veel op, behalve dat Compose een YAML-bestand gebruikt, terwijl Aspire het vertrouwde .NET toepast;
- Breed toepassingsgebied. .NET Aspire is niet alleen toepasbaar op .NET-applicaties. Je kunt het ook gebruiken voor bijvoorbeeld Python– of Java-applicaties, Als je dus als organisatie een groot systeem hebt waar niet alles in .NET draait, kan je alsnog .NET Aspire gebruiken.
Support
Als we het hebben over de support rondom .NET in het algemeen, kan je dat opdelen in twee typen:
- Long Term Support (LTS);
- Short Term Support (STS).
De release cadence van Aspire is momenteel anders: er is alleen support voor de laatste versie beschikbaar. Hier is bewust voor gekozen door het Aspire-team, omdat er momenteel veel verandert vanwege de nieuwigheid van Aspire. Wachten op een nieuwe release van .NET in november duurt dan te lang.
Dit heeft ook gevolgen voor de support van Aspire. Omdat er veel verandert, is de support heel simpel: alleen de laatste versie. Momenteel is Aspire 9.0 uit. Als straks 9.1 uitkomt, dan vervalt alle support op 9.0. Des te belangrijker momenteel om bij te blijven als je .NET Aspire gebruikt.
.NET Aspire 9.0 is nóg stabieler en beter dan de voorganger, met meer functionaliteit. Hierdoor is het steeds interessanter voor ontwikkelaars, bijvoorbeeld ten opzichte van Docker Compose. Echter willen veel organisaties die met .NET werken alleen de Long Term Support-versies gebruiken. Het Aspire-team heeft daarom Aspire 9.0 óók compatible gemaakt met .NET 8, waardoor ontwikkelaars die graag Aspire willen gebruiken, dit gewoon kunnen doen.
Thimo verwacht dat over één à twee jaar de situatie anders is. Aspire is dan nóg verder ontwikkeld en zal minder snel releases krijgen. Hierdoor zal het dezelfde release en support als .NET krijgen. Dan komt er elke november een nieuwe versie: de ene keer STS, de andere keer LTS. Ditzelfde zien we bijvoorbeeld ook bij Entity Framework Core en MAUI.
Waarom was niet iedereen direct fan van .NET Aspire?
In het begin was .NET Aspire nog niet zo stabiel. En sowieso is er sprake van een mindset change als je overgaat van Docker Compose naar een nieuwe framework als .NET Aspire. Maar uiteindelijk merk je dat een nieuw framework als dit ook steeds stabieler wordt en op de langere termijn zie je de competitieve voordelen. Een krachtige feature van .NET Aspire is de mogelijkheid om te zeggen “start applicaties Y pas op wanneer database X is opgestart”. De goede integratie met Aspire, Visual Studio, .NET en de Azure Cloud is erg krachtig en stelt developers in staat om productief te zijn en snel lokaal Cloud-native applicaties te ontwikkelen.
Wat zijn grootste uitdagingen voor ontwikkelaars met het gebruik van .NET Aspire?
De grootste uitdaging is vooral dat .NET Aspire anders is, zeker als je gewend bent om met Docker Compose te werken. Echter, als je eenmaal gewend bent aan Aspire, wil je ook niet meer anders. Daarnaast is de ondersteuning soms nog een struikelpunt. Hoewel Aspire lokaal draait en het STS/LTS-verhaal niet érg belangrijk is hier (Aspire 9.0 draait immers ook op .NET 8 LTS), is momenteel de support “alleen de laatste versie”. Hierdoor zal een team regelmatig de lokale Aspire orchestrator moeten updaten.
Microsoft probeert echter zo min mogelijk breaking changes door te voeren, waardoor een update naar een nieuwe versie in veel gevallen vaak pijnloos is en snel gaat. Erg fijn nieuws natuurlijk!
Conclusie
Al met al zorgt .NET Aspire voor meer structuur in het ontwikkelen en deployen richting de Cloud. En doordat het makkelijker gaat, kun je ook weer sneller aan de slag. Dit maakt het een fijn en stabiel framework voor ontwikkelaars, dat veel voordelen met zich meebrengt.
Geef .NET Aspire vooral een kans. Kijk wat er op de planning staat voor het framework. Immers, een hele groep slimme koppen van Microsoft werkt constant aan de ontwikkeling. Het kan je ontzettend veel brengen, dát is zeker.
Meer weten over .NET Aspire, de toepassingen voor jouw organisatie of ontwikkelaars, of gewoon even sparren? Neem contact met ons op of volg Thimo op LinkedIn voor meer over onder andere .NET!
Meer innformatie?
Wil je meer weten over .NET Aspire als vervanger van Docker Compose?, neem dan contact met ons op.