Jak architektury bezserwerowe zarządzają połączeniami z bazą danych?

10

Mówi się, że główną zaletą architektury bezserwerowej jest to, że takie programy nie potrzebują dedykowanego serwera do ciągłego działania. Następnie są wywoływane na żądanie i zatrzymują się przy wychodzeniu z funkcji.

Oznacza to, że program bezserwerowy będzie musiał się szybko uruchomić, aby był responsywny. Jak zatem radzi sobie z czasochłonnymi działaniami, takimi jak połączenie z bazą danych? Czy łączy się z bazą danych za każdym razem, czy zarządza połączeniem z bazą danych osobno w celu obsługi wywołań, tak jak ma to miejsce w aplikacjach serwerowych?

zarejestrowany użytkownik
źródło

Odpowiedzi:

9

Ponieważ aplikacja bez serwera nie utrzymuje stanu między uruchomieniami, nie może utrzymywać puli połączeń z bazą danych. Aplikacje bezserwerowe naprawdę napotykają te same ograniczenia, co skrypty CGI lat 90. Zasadniczo trwały proces serwera będzie w stanie przewyższyć architekturę procesu na żądanie lub kontenera na żądanie, ponieważ serwer wykonuje inicjalizację raz, a nie raz na żądanie.

Programy bezserwerowe nie nadają się idealnie do zadań wrażliwych na opóźnienia, takich jak obsługa witryny internetowej. Są one lepiej dostosowane do sporadycznych zadań w tle, których nie chcesz uruchamiać na głównym serwerze, bez konieczności ręcznego zarządzania i równoważenia obciążenia dodatkowych serwerów aplikacji. Mogą być również dobrym rozwiązaniem, jeśli produktywność programistów jest znacznie ważniejsza niż reakcje o niskim opóźnieniu.

amon
źródło
Doskonałe punkty. Sugeruję również, że jedną z głównych zalet, które doprowadzają ludzi do braku serwerów, jest koszt. Jeśli płacisz dostawcy (np. Amazonowi) tylko na podstawie liczby żądań i nie płacisz za utrzymanie bezczynnego serwera, zaoszczędzisz pieniądze, szczególnie na etapie uruchamiania.
Paul
2
@Paul Główną zaletą bezserwera jest wygoda (PaaS vs. IaaS). Bezpieczne administrowanie serwerem to zestaw umiejętności, którego większość programistów (w tym mnie) nie ma. Jestem pewien, że istnieją pewne scenariusze, w których bezserwerowość jest zauważalnie tańsza. Ale wirtualne prywatne serwery zaczynają się od 5 USD / m, co jest bardzo konkurencyjne, delikatnie mówiąc. Zwłaszcza biorąc pod uwagę, że VPS ma znacznie mniej ograniczeń, co pozwala na uruchamianie dowolnego oprogramowania i stałych usług. To trochę porównanie jabłek z pomarańczami. W jednym modelu płacisz za bezczynny serwer, w innym płacisz za powtarzalny czas uruchamiania.
amon
4

To zależy.

Wpłynie to na wdrożenie za kulisami biegacza lambda. Widzimy, że w AWS pojemnik może być ponownie użyty.

http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html

Mogliśmy więc zobaczyć pulę połączeń / ponowne użycie przynajmniej dla niektórych żądań. Powinniśmy również rozważyć samą bazę danych i sposób, w jaki traktuje przychodzące żądania połączeń.

To pytanie dla mnie podkreśla niektóre problemy z „bezserwerowym”, wciąż bardzo nowym i niedojrzałym, więc szczegóły nie zostały wykreślone.

Zawsze powinniśmy pamiętać, że brak serwera nie oznacza braku serwerów. Jeśli szybkość z jaką nazywamy lambda jest wystarczająco wysoka, to może skutecznie mieć kilka serwerów lub „kontenery” uruchomione.

W praktyce czas uruchomienia i zasoby, takie jak adresy IP lambdas, mogą być prawdziwym problemem. Być może, gdy dojrzeją, pojawi się konsensus co do sposobu ich prowadzenia, a problemy te otrzymają solidne odpowiedzi.

Ewan
źródło