.NET Aspire: Bruggen bouwen tussen lokale ontwikkeling en cloud-native applicaties

Al jaren is er een duidelijke verschuiving waarneembaar in de wereld van softwareontwikkeling; van monolithische applicaties naar complexe, gedistribueerde systemen. Deze trend brengt nieuwe uitdagingen met zich mee voor ontwikkelaars. Microsoft introduceert .NET Aspire als een oplossing voor deze uitdagingen; een opinionated stack voor het bouwen van cloud-native applicaties.

De kloof tussen lokale ontwikkeling en cloud-native architectuur

“Moderne softwareprojecten zijn aanzienlijk complexer dan vroeger”, aldus Sander Molenkamp, principal architect bij Info Support. “De infrastructuur is veel gevarieerder – denk aan het inzetten van verschillende type databases. Ook zijn veel applicaties zijn nu gedistribueerd, bijvoorbeeld op basis van een microservices-architectuur. Zelfs eenvoudigere webapplicaties zijn vaak al opgedeeld in losse back-end- en front-end-componenten die onafhankelijk van elkaar draaien.”

Deze complexiteit leidt tot verschillende uitdagingen:

  1. Services moeten elkaar kunnen vinden en met elkaar kunnen blijven communiceren.
  2. Applicaties moeten om kunnen gaan met tijdelijke fouten en netwerkstoringen.
  3. Het draaien van een volledig gedistribueerde applicatie op een lokale ontwikkelmachine kan uitdagend zijn.
  4. Het is essentieel om inzicht te hebben in hoe de applicatie presteert, ook wel observeerbaarheid genoemd.

Hoe .NET Aspire de kloof overbrugt

Welke oplossing biedt .NET Aspire voor deze uitdagingen? Sander: “.NET Aspire is gebaseerd op drie pilaren. Orkestratie maakt het mogelijk om alle onderdelen van je applicatie, inclusief onderliggende infrastructuur, lokaal te draaien door eenvoudigweg op F5 te drukken. De tweede pilaar bestaat uit componenten die het gemakkelijker maken om verbinding te maken met populaire diensten en systemen zoals Redis, Kafka en PostgreSQL. De componenten configureren ook direct nuttige defaults voor je applicatie, zoals health checks, retries en monitoring. Als laatste is er de tooling: .NET Aspire wordt geleverd met veel projectsjablonen. Er is een starters-app die je helpt om in te zien hoe het allemaal werkt en hoe onderdelen met elkaar verbonden zijn.”

Cloud-ready vanaf dag één

.NET Aspire maakt het ook eenvoudig voor ontwikkelaars om met cloud-services te werken.  Als je Azure-componenten gebruikt in je applicatie, dan worden deze automatisch aangemaakt wanneer je de applicatie lokaal start. Hierdoor hoef je ze niet zelf vooraf te configureren. Het is ook mogelijk om op basis van context te bepalen welke type component gebruikt moet worden. Zo kun je bijvoorbeeld in je lokale ontwikkelomgeving gebruik maken van een containerized Redis-instantie en in de productieomgeving deze vervangen met de Azure Cache for Redis-dienst.

Observeerbaarheid als kernprincipe

Een belangrijk aspect van .NET Aspire is de ingebouwde ondersteuning voor observeerbaarheid. Sander: “Er is een dashboard waarop je alle resources kunt zien, inclusief containers en .NET-projecten. Dit dashboard biedt real-time inzichten. Ontwikkelaars kunnen traces zien die over al hun verschillende services lopen, zelfs tot aan de queries op de database. Dit maakt het veel eenvoudiger om de prestaties en het gedrag van de applicatie te begrijpen en te optimaliseren.”

Kortom: .NET Aspire biedt een krachtige oplossing voor de uitdagingen van moderne, cloud-native applicatieontwikkeling. Het overbrugt de kloof tussen lokale ontwikkeling en cloud-deployment door een gestroomlijnde ervaring te bieden voor het opzetten, ontwikkelen en observeren van gedistribueerde applicaties.

In deze aflevering van dotnetFlix gaan Edwin van Wijk en Sander Molenkamp dieper in op de mogelijkheden van .NET Aspire: