Ga naar inhoud
  • Drifter
    Drifter

    AWS introduceert gratis AWS Emulator: ontwikkelaars kunnen cloudapplicaties lokaal bouwen en testen zonder AWS-account

    Amazon Web Services (AWS) heeft AWS Emulator geïntroduceerd, een gratis ontwikkeltool waarmee programmeurs en AI-gestuurde coding agents AWS-applicaties lokaal kunnen bouwen, uitvoeren en testen. De emulator bootst verschillende AWS-diensten na, waardoor ontwikkelaars niet langer voor iedere ontwikkel- of testrun verbinding hoeven te maken met de daadwerkelijke AWS-cloud. Een AWS-account, actieve cloudresources of een deployment zijn hiervoor niet nodig. De broncode is bovendien vrijgegeven onder de CC0 1.0 Universal-licentie, waarmee AWS de software in het publieke domein beschikbaar stelt.

    Met AWS Emulator wil Amazon het ontwikkelen en testen van cloudapplicaties eenvoudiger, sneller en toegankelijker maken. Vooral bij het ontwikkelen met AI-codeerassistenten en autonome coding agents kan dat voordelen opleveren. Deze systemen kunnen zelfstandig code schrijven, API-aanroepen uitvoeren, cloudresources configureren en fouten herstellen. Wanneer iedere test daarvoor afhankelijk is van een echte AWS-omgeving, kost dat niet alleen tijd, maar kan het ook leiden tot onnodige cloudkosten en ingewikkelde configuratie.

    AWS Emulator biedt hiervoor een lokaal alternatief. Ontwikkelaars kunnen hun applicaties en infrastructuur testen in een nagebootste AWS-omgeving, zonder dat daarvoor daadwerkelijk resources in de cloud hoeven te worden aangemaakt.

    AWS-aanroepen worden lokaal afgehandeld

    Een belangrijk uitgangspunt van AWS Emulator is dat ontwikkelaars hun bestaande ontwikkelmethoden grotendeels kunnen blijven gebruiken. De emulator is ontworpen om bestaande AWS SDK's (Software Development Kits) en de AWS Command Line Interface (CLI) te ondersteunen.

    Normaal gesproken sturen deze ontwikkelhulpmiddelen opdrachten naar de API's van AWS. Daarmee kunnen programmeurs bijvoorbeeld databases aanmaken, gegevens opslaan, toegangsrechten instellen en andere cloudservices configureren. Met AWS Emulator worden deze API-aanroepen omgeleid naar een lokaal draaiende emulatorinstantie.

    In plaats van een verzoek naar de AWS-cloud te versturen, wordt de opdracht dus op de eigen computer of binnen een CI-omgeving (Continuous Integration) verwerkt. De emulator geeft vervolgens een antwoord terug alsof de opdracht door de betreffende AWS-dienst is afgehandeld.

    Dat gebeurt volgens AWS binnen enkele milliseconden. Hierdoor kunnen ontwikkelaars hun code snel uitvoeren, controleren en aanpassen. Ook kunnen coding agents zelfstandig meerdere ontwikkel- en testrondes doorlopen zonder dat iedere afzonderlijke handeling afhankelijk is van een externe cloudomgeving.

    Het grote voordeel is dat bestaande applicatiecode en ontwikkelworkflows niet volledig opnieuw hoeven te worden ingericht. Door de configuratie van de SDK of CLI naar de lokale emulator te verwijzen, kunnen ondersteunde AWS-aanroepen binnen de lokale omgeving worden uitgevoerd.

    Dezelfde API-aanroepen voor het beheren van cloudresources

    AWS Emulator is bedoeld om het gedrag van AWS-diensten zo nauwkeurig mogelijk na te bootsen. Ontwikkelaars gebruiken hiervoor dezelfde API-aanroepen als bij het echte AWS-platform.

    Dat geldt onder meer voor het aanmaken, configureren, opvragen en beheren van ondersteunde resources. De emulator verwerkt deze opdrachten binnen zijn eigen omgeving en houdt de bijbehorende status lokaal bij.

    Ook de authenticatie is onderdeel van deze werkwijze. De emulator verstrekt eigen credentials waarmee API-verzoeken kunnen worden ondertekend. Daardoor kunnen ontwikkelaars de gebruikelijke AWS-authenticatiemechanismen blijven toepassen zonder dat hiervoor echte AWS-accountgegevens nodig zijn.

    Voor API-operaties die daadwerkelijk worden ondersteund, streeft AWS naar hetzelfde resultaat als bij het gebruik van de overeenkomstige AWS-dienst. Ook ongeldige verzoeken moeten vergelijkbare foutmeldingen opleveren. Dat is belangrijk, omdat applicaties niet alleen moeten worden getest op succesvolle handelingen, maar ook op de manier waarop ze omgaan met fouten en uitzonderingssituaties.

    Er is wel een duidelijke beperking: niet iedere AWS-operatie wordt automatisch volledig ondersteund. Wanneer een ontwikkelaar een API-aanroep uitvoert waarvoor de emulator nog geen implementatie heeft, retourneert deze een HTTP-statuscode 501 (Not Implemented). Daarmee wordt aangegeven dat de gevraagde functionaliteit nog niet beschikbaar is.

    AWS Emulator moet daarom worden beschouwd als een ontwikkel- en testomgeving voor ondersteunde AWS-functionaliteit, en niet als een volledige vervanging van de daadwerkelijke AWS-cloud.

    Praktijkvoorbeeld: DynamoDB testen zonder clouddeployment

    AWS noemt als voorbeeld het ontwikkelen van een applicatie die gebruikmaakt van Amazon DynamoDB, de beheerde NoSQL-databasedienst van het bedrijf.

    Een coding agent kan zelfstandig de benodigde code schrijven en vervolgens via de AWS SDK een DynamoDB-tabel aanmaken. In een traditionele ontwikkelomgeving zou hiervoor doorgaans een verbinding met AWS nodig zijn. De tabel wordt dan daadwerkelijk binnen een AWS-account aangemaakt.

    Met AWS Emulator kan hetzelfde ontwikkelproces lokaal plaatsvinden.

    De agent stuurt een opdracht om een DynamoDB-tabel aan te maken. De emulator verwerkt het verzoek en creëert de bijbehorende resource binnen zijn eigen omgeving. Vervolgens kan de agent controleren of de tabel correct is aangemaakt, gegevens toevoegen, lees- en schrijfbewerkingen uitvoeren en nagaan of de applicatie zich gedraagt zoals verwacht.

    Wanneer een fout wordt ontdekt, kan de agent de code aanpassen en de test opnieuw uitvoeren. Dat proces kan zich meerdere keren herhalen zonder dat daarvoor een echte DynamoDB-instantie in de AWS-cloud nodig is.

    Pas wanneer de applicatie voldoende is getest en klaar is voor gebruik, kan deze naar de daadwerkelijke AWS-omgeving worden uitgerold.

    Hierdoor ontstaat een duidelijk onderscheid tussen de ontwikkel- en testfase enerzijds en het daadwerkelijk inzetten van cloudresources anderzijds.

    Geïsoleerde emulatorinstanties voorkomen onderlinge beïnvloeding

    Een belangrijk onderdeel van AWS Emulator is de manier waarop afzonderlijke instanties worden beheerd.

    Iedere keer dat een emulator wordt gestart, ontstaat een zelfstandige omgeving met een eigen netwerkpoort, eigen cryptografische sleutels en een eigen statusopslag in het werkgeheugen. Hierdoor zijn verschillende emulatorinstanties van elkaar gescheiden.

    Dat is vooral nuttig wanneer meerdere ontwikkelaars, coding agents of geautomatiseerde testprocessen tegelijkertijd aan verschillende onderdelen van een applicatie werken.

    Een testproces kan bijvoorbeeld een database aanmaken en daarin testgegevens opslaan, terwijl een ander proces tegelijkertijd een volledig andere applicatieomgeving opbouwt. Doordat iedere instantie een eigen geïsoleerde status heeft, kunnen deze processen elkaars resources niet beïnvloeden.

    Ook voor CI-pipelines biedt dit voordelen. Verschillende builds en testsuites kunnen hun eigen emulatorinstantie gebruiken, zonder dat testgegevens of aangemaakte resources tussen afzonderlijke opdrachten worden gedeeld.

    De status van aangemaakte resources blijft beschikbaar zolang de betreffende emulator draait. Wanneer de instantie wordt gestopt, gaat de in-memory status verloren. De emulator is daarmee in de eerste plaats bedoeld voor tijdelijke ontwikkel-, test- en automatiseringsomgevingen, niet voor permanente opslag van productiedata.

    Geen afhankelijkheid van een specifieke AWS-regio

    AWS Emulator is bovendien niet gebonden aan een specifieke AWS-regio.

    Bij het gebruik van de echte AWS-cloud moeten ontwikkelaars rekening houden met regionale configuraties. Niet iedere dienst of functionaliteit is in iedere regio op dezelfde manier beschikbaar. Ook kunnen regionale instellingen invloed hebben op de configuratie en het gedrag van een applicatie.

    Omdat AWS Emulator lokaal draait, is het voor de uitvoering van ondersteunde API-aanroepen niet noodzakelijk om een daadwerkelijke AWS-regio te gebruiken. De ontwikkelomgeving kan daardoor onafhankelijk van de regionale infrastructuur van AWS worden ingericht.

    Dit maakt het eenvoudiger om applicaties te ontwikkelen en te testen zonder eerst een specifieke cloudregio te configureren.

    Dat betekent overigens niet dat regionale verschillen in de daadwerkelijke AWS-cloud automatisch volledig worden nagebootst. Voor toepassingen waarbij regionale beschikbaarheid, netwerkgedrag of specifieke cloudconfiguraties een rol spelen, blijft aanvullende validatie in een echte AWS-omgeving noodzakelijk.

    API-modellen vormen de basis van de emulator

    De technische basis van AWS Emulator bestaat uit de API-modellen die AWS zelf publiceert.

    Deze modellen beschrijven hoe de verschillende AWS-diensten via hun API's kunnen worden aangeroepen. Ze bevatten onder meer informatie over beschikbare operaties, invoerparameters, uitvoerstructuren en de verwachte gegevensformaten.

    AWS gebruikt dezelfde API-modellen ook als basis voor de ontwikkeling van zijn SDK's. Door deze modellen als uitgangspunt te nemen, kan de emulator de beschikbare interfaces van AWS-diensten op een gestandaardiseerde manier genereren.

    Een belangrijk gevolg daarvan is dat nieuwe diensten en API-operaties in de gepubliceerde modellen ook in de emulator kunnen verschijnen. Dat betekent echter niet dat iedere nieuwe functionaliteit direct volledig werkt. Het beschikbaar maken van de API-structuur en het implementeren van het daadwerkelijke gedrag zijn twee verschillende stappen.

    AWS vult de functionele ondersteuning daarom geleidelijk aan. Per release wordt het gedrag van de betreffende operaties verder geïmplementeerd, getest en gecontroleerd.

    Fidelity report maakt nauwkeurigheid inzichtelijk

    Omdat een emulator nooit zonder meer gelijkgesteld kan worden aan het echte cloudplatform, is de nauwkeurigheid van de nagebootste functionaliteit een belangrijk aandachtspunt.

    AWS maakt daarom gebruik van een zogenoemd fidelity report. Daarmee wordt inzichtelijk gemaakt in hoeverre de implementatie van de emulator overeenkomt met het gedrag van de daadwerkelijke AWS-diensten.

    Dit is relevant voor ontwikkelaars die willen weten welke API-operaties betrouwbaar lokaal kunnen worden getest en voor welke onderdelen aanvullende controles nodig zijn.

    De mate van overeenkomst kan immers per dienst en per operatie verschillen. Het feit dat een bepaalde API-aanroep beschikbaar is, betekent niet automatisch dat alle details van de onderliggende AWS-dienst volledig worden nagebootst.

    Voor ontwikkelaars is het daarom verstandig om het fidelity report te raadplegen voordat zij een teststrategie volledig op AWS Emulator baseren.

    Ook blijft het belangrijk om applicaties uiteindelijk in een echte AWS-omgeving te controleren. Denk daarbij aan zaken als daadwerkelijke netwerkverbindingen, toegangsrechten, prestaties, schaalbaarheid, regionale beschikbaarheid en de integratie met andere cloudservices.

    Vooral interessant voor AI-agents en geautomatiseerde ontwikkelprocessen

    De introductie van AWS Emulator sluit aan bij de ontwikkeling van AI-gestuurde softwareontwikkeling.

    Coding agents kunnen tegenwoordig meer dan alleen codefragmenten genereren. Ze kunnen complete ontwikkeltaken uitvoeren, bestanden aanpassen, opdrachten uitvoeren, API's aanroepen en zelfstandig fouten analyseren en herstellen.

    Daarvoor hebben ze een omgeving nodig waarin ze hun wijzigingen veilig en herhaaldelijk kunnen testen.

    Wanneer een coding agent voor iedere test een echte AWS-resource moet aanmaken, ontstaat een afhankelijkheid van cloudinfrastructuur. Dat kan het ontwikkelproces vertragen en onnodige kosten veroorzaken. Bovendien moeten tijdelijke resources na afloop vaak weer worden verwijderd.

    AWS Emulator maakt het mogelijk om een groot deel van deze werkzaamheden lokaal uit te voeren. Een agent kan bijvoorbeeld een database configureren, testgegevens invoeren, applicatiecode uitvoeren, foutmeldingen analyseren en vervolgens verbeteringen doorvoeren.

    Dat maakt het ontwikkelproces beter automatiseerbaar en verlaagt de drempel om AI-agents zelfstandig met AWS-gerelateerde applicaties te laten werken.

    Ook ontwikkelteams die geen AI-agents gebruiken, kunnen hiervan profiteren. De emulator kan namelijk worden ingezet voor reguliere softwaretests, integratietests en geautomatiseerde controles tijdens het ontwikkelproces.

    Gratis beschikbaar en vrijgegeven in het publieke domein

    AWS Emulator is gratis te gebruiken. Er worden geen afzonderlijke kosten in rekening gebracht voor het uitvoeren van de emulator zelf.

    Dat betekent dat ontwikkelaars lokaal kunnen experimenteren, tests kunnen uitvoeren en tijdelijke ontwikkelomgevingen kunnen opzetten zonder daarvoor AWS-verbruikskosten te maken.

    Kosten voor daadwerkelijke AWS-resources ontstaan pas wanneer applicaties naar de cloud worden uitgerold en daar gebruikmaken van betaalde diensten.

    Daarnaast heeft AWS de broncode vrijgegeven onder de CC0 1.0 Universal-public domain dedication. Daarmee wordt de code in het publieke domein beschikbaar gesteld. Dit biedt ontwikkelaars ruime mogelijkheden om de software te gebruiken, te bestuderen, aan te passen en verder te verspreiden, zonder de gebruikelijke beperkingen van een traditionele softwarelicentie.

    De openbare beschikbaarheid van de broncode maakt het bovendien mogelijk dat ontwikkelaars en andere geïnteresseerden de werking van de emulator zelf onderzoeken en bijdragen leveren aan de verdere ontwikkeling ervan.

    AWS Emulator vervangt de cloud niet, maar maakt ontwikkelen efficiënter

    Met AWS Emulator zet Amazon een stap richting een ontwikkelproces waarin cloudapplicaties steeds vaker buiten de daadwerkelijke cloudinfrastructuur kunnen worden gebouwd en getest.

    De belangrijkste winst zit in de combinatie van snelheid, isolatie en compatibiliteit met bestaande AWS-ontwikkelhulpmiddelen. Ontwikkelaars hoeven voor ondersteunde API-operaties niet steeds een verbinding met AWS op te zetten. Ook kunnen meerdere tests en coding agents naast elkaar werken in afzonderlijke omgevingen, zonder elkaars resources te beïnvloeden.

    Vooral bij intensief gebruik van geautomatiseerde tests en AI-codeerassistenten kan dat een aanzienlijke verbetering opleveren. Ontwikkelaars kunnen sneller experimenteren, fouten eerder ontdekken en wijzigingen doorvoeren voordat deze in een echte cloudomgeving terechtkomen.

    Er zijn tegelijkertijd duidelijke grenzen. Niet alle AWS-functionaliteit is noodzakelijkerwijs geïmplementeerd, de status wordt alleen tijdens de looptijd van de emulator bewaard en lokaal testgedrag garandeert niet dat een applicatie zich in alle opzichten hetzelfde gedraagt als in productie.

    Een controle in de daadwerkelijke AWS-omgeving blijft daarom noodzakelijk voordat software in gebruik wordt genomen.

    AWS Emulator is daarmee vooral een praktische aanvulling op de bestaande AWS-ontwikkelomgeving: een gratis, lokaal beschikbare testlaag waarmee ontwikkelaars en AI-agents sneller en gecontroleerder AWS-applicaties kunnen bouwen, fouten kunnen opsporen en software kunnen valideren voordat deze daadwerkelijk naar de cloud wordt uitgerold.

    Door: Drifter




    Feedback Gebruiker

    Aanbevolen Reacties

    Er zijn geen reacties om weer te geven.



    Log in om te reageren

    Je kunt een reactie achterlaten na het inloggen



    Login met de gegevens die u gebruikt bij softtrack

×
×
  • Nieuwe aanmaken...