AWS Lambda to sterowana zdarzeniami, bezserwerowa platforma obliczeniowa dostarczana przez Amazon jako część Amazon Web Services. Usługa ta uruchamia kod w odpowiedzi na zdarzenia i automatycznie zarządza wszelkimi wymaganymi zasobami obliczeniowymi. Została wprowadzona w listopadzie 2014 roku.
Brzmi świetnie? Nie dla programistów Ruby. Do 29 listopada 2018 roku Ruby nie był wspierany, aby rozpocząć bezserwerową rewolucję. Ale potem pojawił się Jets i wszystko się zmieniło.
Jak dumnie głosi oficjalna strona Ruby on Jets:
"Ruby on Jets pozwala z łatwością tworzyć i wdrażać usługi bezserwerowe oraz płynnie łączyć usługi AWS z najpiękniejszym dynamicznym językiem: Ruby. Zawiera wszystko, czego potrzebujesz, aby zbudować API i wdrożyć je w AWS Lambda. Jets wykorzystuje moc Rubiego, aby uczynić serverless radosnym dla każdego"
Rzeczywiście, praca z Jets, zwłaszcza dla kogoś, kto ma doświadczenie w Railsach lub Sinatrze, staje się stosunkowo łatwa i przyjemna.
Aby to udowodnić, w tym artykule zbudujemy prostą aplikację bezserwerową.
Gotowy?
Aplikacja budowlana
To, co zamierzamy zrobić, to stworzyć bardzo prostą aplikację Jets. Dostarczy nam to podstawowych informacji o tym, jak tworzyć trasy, kontrolery i akcje oraz jak wdrożyć je w AWS Lambda. Aby zachować prostotę i łatwość, użyjemy tylko jednego punktu końcowego, który zwróci losowy żart Chucka Norrisa.
Instalacja
Po pierwsze, zainstalujmy gem Jets globalnie. W konsoli wpisz:
Następnie utwórz nowe Jets projekt z:
(Opcje -mode api i -no-database nie są wymagane, to tylko przyspieszy nieco instalację, ponieważ nie potrzebujemy tutaj żadnej bazy danych ani widoków).
Teraz, w katalogu chuck-norris-jokes uruchom:
Wejście localhost:8888
w przeglądarce, powinieneś zobaczyć coś takiego:
Jeśli to właśnie widzisz - gratulacje, zrobiłeś wszystko poprawnie!
Kontroler i trasy
Teraz utworzymy nasz pierwszy kontroler Jets.
W konsoli wpisz:
Spowoduje to utworzenie naszego kontrolera JokesController z jedną akcją wewnątrz - create. Domyślnie Jets tworzy trasę typu "get" dla akcji, więc musimy ją zmodyfikować.
W routes.rb zmiana pliku get "jokes/create" do post "dowcipy", do: "jokes#create".
Pobieranie żądania
Aby pobrać kilka rzeczy o Chucku Norrisie, musimy wykonać połączenie z John Doe Api. Następnie odpowiemy jsonem zawierającym pobrany żart.
Testowanie lokalne
Możemy uruchomić to lokalnie, aby sprawdzić, czy otrzymujemy oczekiwaną odpowiedź. To, co zamierzamy zrobić, to wysłać żądanie POST do naszego lokalnego serwera przy użyciu polecenia zwijać się
.
(Uwaga: upewnij się, że serwer nadal działa).
Wdrożenie
Zakładając, że posiadasz konto AWS z odpowiednimi politykami (możesz je znaleźć w oficjalnej dokumentacji Jets), ostatnią rzeczą, którą musisz zrobić, jest po prostu uruchomienie:
Spowoduje to przesłanie naszej aplikacji do AWS.
Po zakończeniu wdrażania otrzymasz punkt końcowy bramy API (najprawdopodobniej ostatni wiersz w konsoli).
Przetestuj swoją aplikację AWS Lambda
Nadszedł więc czas, aby przetestować naszą wdrożoną aplikację!
Możemy to zrobić ponownie za pomocą curl, ale teraz zastępując localhost punktem końcowym bramy API, który otrzymaliśmy.
Podsumowanie
To już wszystko! Mam nadzieję, że podobało Ci się to krótkie spojrzenie na Ruby on Jets i świat serverless.
Czytaj więcej: