Bouw een moderne applicatie met speciaal gebouwde AWS-databases

Geleverd door Amazon-webservices





De dagen van one-size-fits-all, monolithische databases liggen achter ons. Als Werner Vogels, CTO en vice-president van Amazon.com, zei, Zelden kan één database voldoen aan de behoeften van meerdere verschillende gebruiksscenario's. In het verleden werden webapplicaties gebouwd met behulp van de LAMP-stack (Linux, Apache, MySQL en PHP), waarbij een enkele database werd gebruikt voor veel verschillende ervaringen. Daarentegen zijn de hedendaagse webapplicaties van klanten zoals: Expedia, Airbnb en Capital One gebruik geen enkele database - ze gebruiken verschillende soorten databases.

Inderdaad, ontwikkelaars bouwen tegenwoordig sterk gedistribueerde applicaties met behulp van een veelvoud aan speciaal gebouwde databases . In zekere zin doen ontwikkelaars waar ze goed in zijn: complexe applicaties in kleinere stukjes verdelen, waardoor ze de juiste tool voor de juiste taak kunnen kiezen.



In deze blogpost bespreken we speciaal gebouwde AWS-databases en hoe u deze kunt gebruiken om rijke ervaringen voor uw klanten te creëren. We doorlopen ook een gedetailleerd voorbeeld van deze databases die verschillende ervaringen in een applicatie mogelijk maken, en bieden de tools die je nodig hebt om de app binnen enkele minuten voor jezelf op te starten.

AWS-klanten vertellen ons dat ze schaalbare, goed presterende en functionele applicaties willen bouwen met specifieke prestatie- en zakelijke behoeften. In de afgelopen jaren hebben we op deze klantbehoeften gereageerd door nieuwe diensten te introduceren, zoals: Amazone Neptunus voor grafiekendatabases, Amazone-Aurora voor volledig beheerde relationele databases van commerciële kwaliteit, evenals een steeds betere functieset zoals: Amazon Aurora Serverloos . Op AWS re:Invent 2018, AWS bekend gemaakt verschillende nieuwe toevoegingen en functies aan onze familie van speciaal gebouwde databases:

In januari 2019, AWS aangekondigd Amazon DocumentDB (met MongoDB-compatibiliteit). Met deze toevoegingen kunnen ontwikkelaars een keuze hebben van relationele, sleutelwaarde-, document-, in-memory-, zoek-, grafiek-, tijdreeks- en grootboekdatabases die passen bij hun individuele gebruiksscenario's. Elk van deze databases is gebouwd om de juiste tool voor de juiste taak te zijn.



Hoe AWS-klanten speciaal gebouwde databases gebruiken

Hoe gebruiken AWS-klanten al deze speciaal gebouwde databases samen? Op AWS re:Invent 2018 presenteerden we: Databases op AWS: de juiste tool voor de juiste taak . In deze sessie hebben we besproken hoe AWS-klanten verschillende databases samen gebruiken om rijke, end-to-end-ervaringen voor hun klanten te leveren.

We toonden een demo in de sessie die een realistisch voorbeeld geeft van hoe klanten applicaties bouwen met behulp van speciaal gebouwde architectuur op AWS. De demonstratie schetst hoe een webwinkel (in dit geval een boekwinkel) wordt gebouwd op meerdere databases, die elk een ander gebruiksscenario behandelen. Een clip van de demo volgt, vanaf 21:43.

Hoe verschillende use-cases aan te pakken met verschillende speciaal gebouwde databases

De voorgaande clip toonde een demo-applicatie voor een online boekwinkel (zie de volgende schermafbeelding). Zoals met elke moderne, full-stack webtoepassing, heeft deze toepassing meerdere verschillende gebruiksscenario's, waaronder een productcatalogus, productzoekopdracht, lijst met bestsellers en sociale aanbevelingen.



afbeelding 1

Figuur 1: Een screenshot van de AWS Bookstore Demo-app

Laten we beginnen met de use case van de productcatalogus. Wanneer een gebruiker de webwinkel van de boekwinkel opent, kan hij een lijst met producten verwachten. Producten bevatten doorgaans unieke ID's en kenmerken, zoals beschrijvingen, hoeveelheden, locaties en prijzen. In technische zin is de methode voor het ophalen van dit soort attributen vaak een sleutel-waarde-lookup op basis van de unieke ID van het product. Dit betekent dat een toepassing deze andere kenmerken kan ophalen wanneer de unieke identificatie van een product wordt verstrekt. Deze use-case maakt Amazon DynamoDB een uitstekende pasvorm als het duurzame systeem van registratie voor de productcatalogus van de boekhandel, omdat DynamoDB snelle, voorspelbare prestaties biedt op elke schaal voor het opzoeken van sleutelwaarden. Met DynamoDB kan de productcatalogus beginnen met een paar honderd producten en opschalen naar miljarden producten zonder dat databases opnieuw hoeven te worden ontworpen of gewijzigd.

De tweede use case is om klanten in staat te stellen de productcatalogus te doorzoeken. Wanneer klanten naar de boekwinkel komen, willen ze het product vinden dat ze van plan zijn te kopen of de catalogus doorzoeken om hun volgende geweldige boek te vinden. In de wereld van vandaag worden gebruikers getraind om efficiënt te zijn met zoekopdrachten op trefwoorden om te vinden wat ze zoeken. Amazon Elasticsearch-service (Amazon ES) is een databasetechnologie die in deze gebruikersbehoeften voorziet. Met natuurlijke taalmogelijkheden, gefacetteerde navigatie en gerangschikte resultaten, helpt Amazon ES klanten om snel de items te vinden die ze willen in de productcatalogus.



De boekwinkeltoepassing moet de productcatalogus (in DynamoDB) synchroon houden met de zoekindex in Amazon ES. Telkens wanneer een product wordt toegevoegd, bijgewerkt of verwijderd uit de producttabel van de catalogus in DynamoDB, moet de wijziging ook worden weergegeven in de zoekindex in Amazon ES. Een gemakkelijke manier om dit te doen is door gebruik te maken van Amazon DynamoDB-streams met AWS Lambda om de Amazon ES-index asynchroon bij te werken telkens wanneer er een wijziging wordt aangebracht in de productcatalogus in DynamoDB.

De derde use case is een bestsellerlijst voor de productcatalogus waarmee de gebruikers van de boekwinkel kunnen zien wat de top 20 gekochte boeken zijn. Voor deze ervaring stelt de ideale database de boekwinkel in staat om een ​​leaderboard bij te houden zonder lange en dure sommatiequery's voor alle aankopen te hoeven doen telkens wanneer een gebruiker de webpagina vernieuwt. Amazon ElastiCache voor Redis biedt precies wat nodig is, inclusief ingebouwde gegevensstructuren in het geheugen, zoals gesorteerde sets waarmee de boekhandel snel en effectief een lijst met bestsellers kan maken. Om het aan de gang te krijgen, kan de boekwinkel DynamoDB Streams gebruiken (vergelijkbaar met het product zoeken use case) uit de besteltabel om de laatste status in ElastiCache bij te werken telkens wanneer een nieuw item wordt gekocht. Met de lijst met bestsellers die beschikbaar is, kan de boekhandel ook een deel ervan op de startpagina van zijn website laten zien. Bovendien, omdat de gegevens in het geheugen staan ​​en beschikbaar zijn via de ingebouwde gesorteerde sets, ervaart de boekwinkel leesvertragingen van microseconden voor zoekopdrachten op de lijst met bestsellers.

De vierde use case is om sociale aanbevelingen te doen om de klanten van de boekhandel te helpen meer contextueel geschikte inhoud te vinden, in dit geval inhoud op basis van wat hun vrienden hebben gekocht. Omdat sociale aanbevelingen op de startpagina van de boekhandel en andere pagina's op de site staan, moeten de aanbevelingen snel zijn. Naarmate de website groeit, moet de oplossing ook meegroeien met meer producten, pagina's en gebruikers. Met deze vereisten kan een speciaal gebouwde grafiekdatabase zoals: Amazone Neptunus is een natuurlijke fit om door links in de gegevens te navigeren, waardoor aanbevelingen mogelijk zijn die zijn gebaseerd op sociale connecties en gerelateerde aankoopactiviteiten. Neptune biedt de benodigde functionaliteit en prestaties die we nodig hebben om snel query's te bouwen en uit te voeren om grafiekrelaties te doorkruisen, en het zal worden geschaald naarmate de website (en applicatie) groeit zonder concessies te doen aan de prestaties.

Om al deze informatie op te halen en bij te werken, voert de webwinkel een reeks verschillende API-aanroepen uit. Hier is een weergave van hoe de applicatie eruitziet in de backend, met behulp van Amazon API Gateway en AWS Lambda:

afbeelding 2

Figuur 2: Architectonisch diagram van de AWS Bookstore Demo-app

Voor deze boekwinkelapplicatie hebben we de belangrijkste use-cases van de applicatie beoordeeld en de beste database voor elke use-case gekozen. Met speciaal gebouwde databases kunt u schaalbare, goed presterende en functionele backend-infrastructuren creëren om uw applicaties van stroom te voorzien, waarbij elke gebruikssituatie wordt aangepakt met de meest geschikte component. Door deze aanpak te volgen, kunt u met uw eigen middelen een vergelijkbare architectuur bouwen.

Ga ermee aan de slag

Elke klant die een webapplicatie maakt, moet bijna exact hetzelfde proces doorlopen om componenten te kiezen, maar dat is slechts het halve werk. Misschien nog belangrijker, na het kiezen van hun gewenste architectuur, moeten ze de stapel elke keer opnieuw opbouwen. Dit zette ons aan het denken: waarom zouden we de architectuur niet eenvoudiger te bouwen maken? Hoe kunnen we dit vereenvoudigen, met zoveel klanten die een zeer vergelijkbaar proces doorlopen? Voor klanten die zich nog in de leer- of verkenningsfase bevinden, hoe kunnen we hen helpen om met behulp van deze speciaal gebouwde databases binnen enkele minuten een full-stack applicatie in gebruik te nemen?

Om deze vragen te beantwoorden, hebben we een single AWS CloudFormation sjabloon om de creatie van deze volledige stapel met demo-applicaties voor de boekwinkel, end-to-end, in slechts een paar minuten te automatiseren. Verder hebben we alle broncode, afbeeldingen en voorbeeldgegevens beschikbaar gemaakt op GitHub voor u om te implementeren, verkennen, wijzigen en uitbreiden.

Afbeelding 3

Figuur 3: De AWS Bookstore Demo App-repository op GitHub

Zoals we hebben aangetoond in de re:Invent-sessie, is de AWS Bookstore Demo-app een werkende applicatie die gebruikmaakt van vier speciaal gebouwde databases om een ​​krachtige, functionele gebruikerservaring te bieden. U kunt de applicatie met een paar klikken in uw AWS-account implementeren met behulp van AWS CloudFormation (raadpleeg voor meer informatie het bestand readme.md op GitHub ). Eenmaal geïmplementeerd in uw account, kunt u de datasets in Amazon DynamoDB, Amazon Elasticsearch, Amazon ElastiCache voor Redis en Amazon Neptune verkennen. Het bestand readme.md bevat aanvullende stappen die u stap voor stap uitleggen hoe u dit kunt doen, samen met commentaar over hoe alles in elkaar past. Je kunt de app gebruiken als sandbox of leermiddel om te ontdekken hoe zo'n architectuur in elkaar past, of als startsjabloon om je eigen applicatie te bouwen.

Wat als mijn aanvraagvereisten anders zijn?

De AWS Bookstore Demo App is slechts één voorbeeld van hoe u speciaal gebouwde databases kunt gebruiken om een ​​schaalbare en krachtige full-stack applicatie te bouwen, zoals een webwinkel. Als u met deze stapel als basislijn wilt beginnen, maar uw use-case meer geschikt is voor een relationele database (zoals Amazon RDS), kunt u de toepassing in plaats daarvan aanpassen om die te gebruiken. Als u ElastiCache wilt gebruiken voor caching voor sommige van de andere databasecomponenten om de prestaties te verbeteren, kunt u dat ook toevoegen. We moedigen u zelfs aan om onze repo en pas de demo-applicatie aan om gebieden te verkennen waarover u meer wilt weten. U kunt databasetypes verwisselen, verschillende componenten uitproberen en uw eigen bronnen en gegevens laden. Als je iets interessants ontwikkelt waarvan je denkt dat het waardevol is voor anderen om te gebruiken, dien dan een pull-verzoek in zodat we de demo kunnen verlengen.

Als je applicatie heel anders is, maar je nog steeds op zoek bent naar een basis full-stack applicatie om bovenop te bouwen, dan is de AWS Bookstore Demo App er bovenop gebouwd AWS Full-Stack-sjabloon (ook beschikbaar op GitHub ). AWS Full-Stack-sjabloon biedt de basisservices, componenten en sanitair die nodig zijn om een ​​basiswebtoepassing in gebruik te nemen, waardoor u tijd bespaart en u zich kunt concentreren op de onderscheidende factoren van uw toepassing. U kunt bovenop de AWS Full-Stack-sjabloon bouwen om elke gewenste toepassing te maken, of het nu een tool voor het boeken van reizen, een blog of een andere web-app is. De AWS Bookstore Demo-app is slechts één voorbeeld van wat u kunt maken met AWS Full-Stack-sjabloon .

Probeer je de volgende keer dat je een applicatie gebruikt je voor te stellen welke database er achter de gordijnen zit. Meer dan waarschijnlijk zijn er verschillende databases (en andere services) die samenwerken om uw ervaring te versterken. Als je meer wilt weten en wilt beginnen met bouwen, probeer dan een van deze full-stack applicaties. We zijn benieuwd wat je gaat bouwen!

zich verstoppen