Zbuduj nowoczesną aplikację ze specjalnie zbudowanymi bazami danych AWS

Dostarczone przez Usługi internetowe Amazon





Czasy uniwersalnych, monolitycznych baz danych już za nami. Jako Werner Vogels, CTO i wiceprezes Amazon.com, powiedział, Rzadko jedna baza danych może odpowiadać potrzebom wielu różnych przypadków użycia. W przeszłości aplikacje internetowe były konstruowane przy użyciu stosu LAMP (Linux, Apache, MySQL i PHP), gdzie pojedyncza baza danych była używana do wielu różnych doświadczeń. W przeciwieństwie do dzisiejszych aplikacji internetowych od klientów takich jak Expedia, Airbnb i Capital One nie używają jednej bazy danych — używają kilku różnych typów baz danych.

Rzeczywiście, obecnie programiści budują wysoce rozproszone aplikacje przy użyciu wielu specjalnie zbudowane bazy danych . W pewnym sensie programiści robią to, co robią najlepiej — dzielą złożone aplikacje na mniejsze części — co pozwala im wybrać właściwe narzędzie do odpowiedniej pracy.



W tym poście na blogu omawiamy bazy danych AWS specjalnie zbudowane i sposoby ich wykorzystania do tworzenia bogatych doświadczeń dla Twoich klientów. Przeanalizujemy również szczegółowy przykład tych baz danych, które zasilają różne środowiska w aplikacji i udostępniamy narzędzia potrzebne do samodzielnego uruchomienia aplikacji w ciągu kilku minut.

Klienci AWS mówią nam, że chcą budować skalowalne, wydajne i funkcjonalne aplikacje, które mają określoną wydajność i potrzeby biznesowe. W ciągu ostatnich kilku lat odpowiadaliśmy na te potrzeby klientów, wprowadzając nowe usługi, takie jak: Amazonka Neptuna dla grafowych baz danych, Amazonka-Aurora dla w pełni zarządzanych relacyjnych baz danych klasy komercyjnej, a także stale ulepszanego zestawu funkcji, takich jak Amazon Aurora bezserwerowy . W AWS re:Invent 2018, AWS ogłoszony kilka nowych dodatków i funkcji do naszej rodziny specjalnie zbudowanych baz danych:

W styczniu 2019 AWS ogłosił Amazon DocumentDB (z kompatybilnością MongoDB). Dzięki tym dodatkom programiści mieć wybór relacyjnych baz danych, dokumentów, w pamięci, wyszukiwania, wykresów, szeregów czasowych i ksiąg, aby dopasować je do indywidualnych przypadków użycia. Każda z tych baz danych została zbudowana tak, aby była właściwym narzędziem do właściwej pracy.



W jaki sposób klienci AWS korzystają ze specjalnie zbudowanych baz danych

W jaki sposób klienci AWS wspólnie wykorzystują wszystkie te specjalnie opracowane bazy danych? Na AWS re:Invent 2018 zaprezentowaliśmy Bazy danych w AWS: właściwe narzędzie do właściwej pracy . W tej sesji omówiliśmy, w jaki sposób klienci AWS wspólnie korzystają z różnych baz danych, aby dostarczać swoim klientom bogate, kompleksowe doświadczenia.

Podczas sesji pokazaliśmy demo, które stanowi rzeczywisty przykład tego, jak klienci budują aplikacje przy użyciu specjalnie zbudowanej architektury na AWS. Demonstracja pokazuje, w jaki sposób witryna sklepu internetowego (w tym przypadku księgarnia) jest budowana na bazie wielu baz danych, z których każda odnosi się do innego przypadku użycia. Klip z dema zaczyna się o 21:43.

Jak radzić sobie z różnymi przypadkami użycia za pomocą różnych specjalnie zbudowanych baz danych

W poprzednim klipie zaprezentowano aplikację demonstracyjną księgarni internetowej (patrz poniższy zrzut ekranu). Podobnie jak w przypadku każdej nowoczesnej aplikacji internetowej z pełnym stosem, ta aplikacja ma wiele różnych zastosowań, w tym katalog produktów, wyszukiwanie produktów, listę bestsellerów i rekomendacje społecznościowe.



obraz 1

Rysunek 1: Zrzut ekranu aplikacji demonstracyjnej AWS Bookstore

Zacznijmy od przypadku użycia katalogu produktów. Gdy użytkownik uzyskuje dostęp do sklepu internetowego księgarni, może spodziewać się, że zobaczy listę produktów. Produkty zazwyczaj zawierają unikalne identyfikatory i atrybuty, takie jak opisy, ilości, lokalizacje i ceny. W sensie technicznym metoda pobierania tego typu atrybutów to często wyszukiwanie klucz-wartość na podstawie unikalnego identyfikatora produktu. Oznacza to, że aplikacja może pobrać te inne atrybuty po podaniu unikalnego identyfikatora produktu. Ten przypadek użycia sprawia, że Amazon DynamoDB doskonale pasuje jako trwały system ewidencjonowania katalogu produktów księgarni, ponieważ DynamoDB zapewnia szybką i przewidywalną wydajność w dowolnej skali w przypadku wyszukiwania kluczowych wartości. Dzięki DynamoDB katalog produktów może zacząć się od kilkuset produktów i skalować do miliardów produktów bez konieczności ponownego projektowania lub zmiany baz danych.

Drugim przypadkiem użycia jest umożliwienie klientom przeszukiwania katalogu produktów. Gdy klienci przychodzą do księgarni, chcą zlokalizować produkt, który zamierzają kupić lub przeszukać katalog, aby znaleźć kolejną świetną lekturę. W dzisiejszym świecie użytkownicy są szkoleni, aby skutecznie wyszukiwać słowa kluczowe, aby znaleźć to, czego szukają. Usługa Amazon Elasticsearch (Amazon ES) to technologia baz danych, która rozwiązuje te potrzeby użytkowników. Dzięki funkcjom języka naturalnego, nawigacji wieloaspektowej i wynikom rankingowym Amazon ES pomaga klientom szybko znaleźć pozycje, które chcą znaleźć w katalogu produktów.



Aplikacja księgarni musi synchronizować katalog produktów (w DynamoDB) z indeksem wyszukiwania w Amazon ES. Za każdym razem, gdy produkt jest dodawany, aktualizowany lub usuwany z tabeli produktów katalogu w DynamoDB, zmiana musi również zostać odzwierciedlona w indeksie wyszukiwania w Amazon ES. Jednym z łatwych sposobów na to jest użycie Strumienie Amazon DynamoDB z AWS Lambda do asynchronicznej aktualizacji indeksu Amazon ES za każdym razem, gdy wprowadzana jest zmiana w katalogu produktów w DynamoDB.

Trzeci przypadek użycia to lista bestsellerów katalogu produktów, która pozwoli użytkownikom księgarni zobaczyć, jakie są 20 najczęściej kupowanych książek. W tym celu idealna baza danych umożliwia księgarni prowadzenie tabeli wyników bez konieczności wykonywania długich i kosztownych zapytań podsumowujących wszystkie zakupy za każdym razem, gdy użytkownik odświeża stronę internetową. Amazon ElastiCache dla Redis zapewnia dokładnie to, co jest potrzebne, w tym wbudowane struktury danych w pamięci, takie jak posortowane zestawy, które umożliwiają księgarni szybkie i skuteczne tworzenie listy bestsellerów. Aby to uruchomić, księgarnia może użyć strumieni DynamoDB (podobnie do przypadku użycia wyszukiwania produktów) z tabeli zamówień, aby aktualizować najnowszy stan w ElastiCache za każdym razem, gdy kupowany jest nowy przedmiot. Mając dostępną listę bestsellerów, księgarnia może pokazać jej część również na stronie głównej swojej witryny. Dodatkowo, ponieważ dane znajdują się w pamięci i są dostępne za pośrednictwem wbudowanych, posortowanych zestawów, księgarnia będzie doświadczać mikrosekundowych opóźnień odczytu w przypadku zapytań z listy bestsellerów.

Czwartym przypadkiem użycia jest dostarczenie rekomendacji społecznościowych, które pomogą klientom księgarni znaleźć bardziej odpowiednie kontekstowo treści — w tym przypadku treści oparte na tym, co kupili ich znajomi. Ponieważ rekomendacje społecznościowe znajdują się na stronie głównej księgarni i innych stronach w witrynie, rekomendacje muszą być szybkie. Ponadto wraz z rozwojem witryny rozwiązanie musi skalować się z większą liczbą produktów, stron i użytkowników. Spełniając te wymagania, specjalnie skonstruowana baza danych wykresów, taka jak Amazonka Neptuna to naturalne dopasowanie do poruszania się po linkach w danych, umożliwiające rekomendacje oparte na powiązaniach społecznościowych i związanej z nimi aktywności zakupowej. Neptune zapewnia niezbędną funkcjonalność i wydajność, których potrzebujemy do szybkiego tworzenia i wykonywania zapytań w celu przemierzania relacji wykresów, i będzie się skalować wraz ze wzrostem witryny (i aplikacji) bez uszczerbku dla wydajności.

Aby pobrać i zaktualizować wszystkie te informacje, witryna sklepu internetowego wykonuje serię różnych wywołań interfejsu API. Oto widok, jak aplikacja wygląda w backendzie, wykorzystując Amazon API Gateway i AWS Lambda:

obraz 2

Rysunek 2: Schemat architektoniczny aplikacji demonstracyjnej AWS Bookstore

W przypadku tej aplikacji księgarni oceniliśmy główne przypadki użycia aplikacji i wybraliśmy najlepszą bazę danych dla każdego przypadku użycia. Specjalnie zbudowane bazy danych umożliwiają tworzenie skalowalnych, wysokowydajnych i funkcjonalnych infrastruktur zaplecza do obsługi aplikacji, uwzględniając każdy przypadek użycia za pomocą najbardziej odpowiedniego komponentu. Stosując to podejście, możesz zbudować podobną architekturę przy użyciu własnych zasobów.

Uruchom i uruchom

Każdy klient, który tworzy aplikację internetową, musi przejść niemal dokładnie ten sam proces wyboru komponentów, ale to tylko połowa sukcesu. Co być może ważniejsze, po wybraniu odpowiedniej architektury muszą za każdym razem budować stos od zera. To skłoniło nas do zastanowienia się: dlaczego nie ułatwić budowania architektury? Skoro tak wielu klientów przechodzi przez bardzo podobny proces, jak możemy to uprościć? W jaki sposób możemy pomóc klientom, którzy są nadal w fazie uczenia się lub eksploracji, w uruchomieniu pełnej aplikacji w ciągu kilku minut przy użyciu tych specjalnie zbudowanych baz danych?

Aby odpowiedzieć na te pytania, stworzyliśmy singiel Tworzenie chmury AWS szablon, aby zautomatyzować tworzenie całego stosu aplikacji demonstracyjnych księgarni, od początku do końca, w ciągu zaledwie kilku minut. Ponadto udostępniliśmy cały kod źródłowy, obrazy i przykładowe dane na GitHub abyś mógł wdrażać, eksplorować, modyfikować i rozszerzać.

Obraz 3

Rysunek 3: Repozytorium AWS Bookstore Demo App włączone GitHub

Jak pokazaliśmy w sesji re:Invent, aplikacja demonstracyjna AWS Bookstore to działająca aplikacja, która wykorzystuje cztery specjalnie zaprojektowane bazy danych, aby zapewnić użytkownikom potężne, funkcjonalne wrażenia. Możesz wdrożyć aplikację na swoim koncie AWS za pomocą kilku kliknięć za pomocą AWS CloudFormation (więcej informacji znajdziesz w pliku readme.md na GitHub ). Po wdrożeniu na koncie możesz przeglądać zestawy danych w Amazon DynamoDB, Amazon Elasticsearch, Amazon ElastiCache for Redis i Amazon Neptune. Plik readme.md zawiera dodatkowe kroki, które przeprowadzą Cię krok po kroku, jak to zrobić, wraz z komentarzem na temat tego, jak wszystko do siebie pasuje. Możesz użyć aplikacji jako piaskownicy lub narzędzia do nauki, aby zbadać, jak taka architektura pasuje do siebie, lub jako początkowy szablon do zbudowania własnej aplikacji.

Co się stanie, jeśli moje wymagania dotyczące aplikacji są inne?

Aplikacja demonstracyjna AWS Bookstore to tylko jeden przykład tego, jak można wykorzystać specjalnie skonstruowane bazy danych do zbudowania skalowalnej i wydajnej aplikacji z pełnym stosem, takiej jak witryna sklepu internetowego. Jeśli chcesz zacząć od tego stosu jako punktu odniesienia, ale Twój przypadek użycia jest bardziej odpowiedni dla relacyjnej bazy danych (takiej jak Amazon RDS), możesz zamiast tego zmodyfikować aplikację, aby z niej korzystała. Jeśli chcesz wykorzystać ElastiCache do buforowania przed niektórymi innymi komponentami bazy danych w celu poprawy wydajności, możesz to również dodać. W rzeczywistości zachęcamy do rozwidlenia naszych repozytorium i zmodyfikuj aplikację demonstracyjną, aby poznać obszary, o których chcesz dowiedzieć się więcej. Możesz wymieniać typy baz danych, wypróbowywać różne komponenty i ładować własne zasoby i dane. Jeśli opracujesz coś interesującego, co według Ciebie mogłoby być wartościowe dla innych, prześlij żądanie ściągnięcia, abyśmy mogli rozszerzyć demo.

Jeśli Twoja aplikacja jest zupełnie inna, ale nadal szukasz podstawowej aplikacji z pełnym stosem do zbudowania, aplikacja demonstracyjna AWS Bookstore jest zbudowana na Szablon pełnego stosu AWS (dostępne również na GitHub ). Szablon AWS Full-Stack zapewnia podstawowe usługi, komponenty i instalacje potrzebne do uruchomienia i uruchomienia podstawowej aplikacji internetowej, oszczędzając czas i pomagając skupić się na wyróżnikach aplikacji. Możesz budować na szablonie AWS Full-Stack, aby stworzyć dowolną aplikację, jaką sobie wyobrazisz, czy to narzędzie do rezerwacji podróży, blog czy inną aplikację internetową. Aplikacja demonstracyjna AWS Bookstore to tylko jeden z przykładów tego, co możesz stworzyć za pomocą Szablon pełnego stosu AWS .

Następnym razem, gdy będziesz korzystać z aplikacji, spróbuj wyobrazić sobie, która baza danych jest za zasłoną. Jest bardziej niż prawdopodobne, że istnieje kilka baz danych (i innych usług), które współpracują ze sobą, aby zwiększyć Twoje wrażenia. Jeśli chcesz dowiedzieć się więcej i zacząć budować, weź jedną z tych pełnych aplikacji na przejażdżkę. Nie możemy się doczekać, aby zobaczyć, co zbudujesz!

ukryć