{"id":30345,"date":"2021-11-24T12:15:00","date_gmt":"2021-11-24T11:15:00","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/bezserwerowe-programowanie-z-aws-lambda\/"},"modified":"2024-09-17T15:35:51","modified_gmt":"2024-09-17T13:35:51","slug":"bezserwerowe-programowanie-z-aws-lambda","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/bezserwerowe-programowanie-z-aws-lambda\/","title":{"rendered":"Bezserwerowe programowanie z AWS Lambda"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Id\u017a do:<\/p>\n    <ol>\n                    <li><a href=\"#Czym-jest-AWS-Lambda\">1.  Czym jest AWS Lambda?<\/a><\/li>\n                    <li><a href=\"#AWS-Lambda-jak-to-dzia\u0142a\">2.  AWS Lambda \u2013 jak to dzia\u0142a?<\/a><\/li>\n                    <li><a href=\"#AWS-Lambda-Function\">3.  AWS Lambda Function<\/a><\/li>\n                    <li><a href=\"#Infrastruktura-czyli-co-skrywa-wewn\u0105trz-AWS-Lambda\">4.  Infrastruktura, czyli co skrywa wewn\u0105trz AWS Lambda?<\/a><\/li>\n                    <li><a href=\"#Jak-wygl\u0105da-cykl-\u017cycia-naszej-aplikacji\">5.  Jak wygl\u0105da cykl \u017cycia naszej aplikacji?<\/a><\/li>\n                    <li><a href=\"#Skalowalno\u015b\u0107-sky-is-the-limit\">6.  Skalowalno\u015b\u0107 \u2013 sky is the limit?<\/a><\/li>\n                    <li><a href=\"#Parametry-i-konfiguracja-Lambdy\">7.  Parametry i konfiguracja Lambdy<\/a><\/li>\n                    <li><a href=\"#AWS-Lambda-wa\u017cne-elementy-konfiguracji\">8.  AWS Lambda \u2013 wa\u017cne elementy konfiguracji<\/a><\/li>\n                    <li><a href=\"#O-czym-jeszcze-warto-pami\u0119ta\u0107-tworz\u0105c-Lambd\u0119\">9.  O czym jeszcze warto pami\u0119ta\u0107, tworz\u0105c Lambd\u0119?<\/a><\/li>\n                    <li><a href=\"#Koszty-czyli-czy-to-si\u0119-op\u0142aca\">10.  Koszty \u2013 czyli czy to si\u0119 op\u0142aca?<\/a><\/li>\n                    <li><a href=\"#A-jak-to-wygl\u0105da-gdy-trzeba-zacz\u0105\u0107-p\u0142aci\u0107\">11.  A jak to wygl\u0105da, gdy trzeba zacz\u0105\u0107 p\u0142aci\u0107?<\/a><\/li>\n                    <li><a href=\"#AWS-Lambda-zalety-i-wady\">12.  AWS Lambda \u2013 zalety i wady<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">13.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Czym-jest-AWS-Lambda\">Czym jest AWS Lambda?<\/h2>\n\n\n\n<p>AWS Lambda to bezserwerowa funkcja jako us\u0142uga, czyli Function as a service (FaaS), kierowana zdarzeniami (event-driven). Lambda pozwala na tworzenie kodu i zarz\u0105dzanie aplikacj\u0105 bez konieczno\u015bci utrzymywania w\u0142asnych serwer\u00f3w. Umo\u017cliwia tworzenie <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/korzysci-z-przeniesienia-firmy-do-chmury\/\">aplikacji w chmurze <\/a>np. za pomoc\u0105 popularnej metody ZIP deployment.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.11.11_logo.png\" alt=\" class=\" class=\"wp-image-57055\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Us\u0142ugi <em><strong>Function as a Service<\/strong><\/em> zyskuj\u0105 na popularno\u015bci, poniewa\u017c u\u017cytkownik p\u0142aci tylko za czas przetwarzania danej funkcji. Na przyk\u0142ad w przypadku serwisu REST, kt\u00f3ry wyzwala Lambd\u0119, op\u0142ata pobierana jest tylko za pojedyncze wywo\u0142anie naszego endpointu (takie podej\u015bcie znane jest jako <em>pay-as-you-go<\/em>) przy zachowaniu dost\u0119pno\u015bci, niezawodno\u015bci i skalowalno\u015bci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AWS-Lambda-jak-to-dzia\u0142a\">AWS Lambda \u2013 jak to dzia\u0142a?<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.11.11_graphic_1-1.png\" alt=\" class=\" title=\"\"><figcaption class=\"wp-element-caption\">AWS Lambda \u2013 architektura<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Trigger<\/h3>\n\n\n\n<p>Zdarzenie (event), kt\u00f3re wyzwala dzia\u0142anie Lambdy. Mo\u017ce to by\u0107 1 lub wi\u0119cej zdarze\u0144 pochodz\u0105cych z r\u00f3\u017cnych serwis\u00f3w AWS, np.:<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wywo\u0142anie przez API-Gateway (wywo\u0142anie REST)<\/li>\n\n\n\n<li>Dodanie nowego pliku, jego modyfikacja lub usuni\u0119cie na S3<\/li>\n\n\n\n<li>Wiadomo\u015b\u0107 z kolejki SQS<\/li>\n<\/ul>\n\n\n\n<p>lub z system\u00f3w zewn\u0119trznych, takich jak Atlassian, Symantec, PagerDuty i wiele innych. Dla ka\u017cdego z event\u00f3w mo\u017cna by pokusi\u0107 si\u0119 o napisanie osobnego artyku\u0142u, wi\u0119c chc\u0105cych zg\u0142\u0119bi\u0107 temat zach\u0119cam do lektury dokumentacji <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/lambda-services.html#intro-core-components-event-sources\" target=\"_blank\" rel=\"noopener\">Lambda Amazon Web Services<\/a>, gdzie wszystko jest szczeg\u00f3\u0142owo opisane.<\/p>\n\n\n\n<p>Warto tutaj wspomnie\u0107 o typie wywo\u0142ania funkcji (<em>InvocationType<\/em>). Lambd\u0119 mo\u017cna wywo\u0142a\u0107 w dw\u00f3ch trybach:<\/p>\n\n\n\n<p><strong>Synchronicznym <\/strong><em>\u2013<\/em> ten tryb mo\u017cna por\u00f3wna\u0107 do wywo\u0142ania REST-owego, w kt\u00f3rym wysy\u0142ane jest \u017c\u0105danie i otrzymywana jest odpowied\u017a, st\u0105d nazywany jest typem <strong>request\/response.<\/strong><\/p>\n\n\n\n<p><strong>Asynchronicznym <\/strong>\u2013 w tym trybie \u017c\u0105danie do Lambdy wysy\u0142ane jest do kolejki zdarze\u0144. W przypadku b\u0142\u0119du \u017c\u0105danie jest ponawiane maksymalnie dwukrotnie. AWS nie gwarantuje, \u017ce wszystkie wiadomo\u015bci zostan\u0105 dostarczone, np. je\u017celi aplikacja nie jest w stanie obs\u0142u\u017cy\u0107 takiej liczby zdarze\u0144 w kolejce. Z racji tego, \u017ce nie otrzymujemy tutaj informacji o poprawnym wykonaniu funkcji, przydatne mo\u017ce by\u0107 zastosowanie DLQ (dead-letter-queue). W takim przypadku z pomoc\u0105 przychodzi blok Destination. Ten tryb wywo\u0142ania nosi nazw\u0119 <strong>event.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AWS-Lambda-Function\">AWS Lambda Function<\/h2>\n\n\n\n<p>Czyli kod funkcji. Mo\u017ce on by\u0107 napisany w jednym z j\u0119zyk\u00f3w obs\u0142ugiwanych przez AWS. Obecnie mamy do wyboru takie j\u0119zyki jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>.NET (C#)<\/li>\n\n\n\n<li>Java<\/li>\n\n\n\n<li>GO <\/li>\n\n\n\n<li>Node.js<\/li>\n\n\n\n<li>Python<\/li>\n\n\n\n<li>Ruby<\/li>\n<\/ul>\n\n\n\n<p>Przy technologii takiej jak np. Node.js mo\u017cna skorzysta\u0107 z wbudowanego edytora do pisania funkcji lub dostarczy\u0107 kod funkcji zbudowanej zewn\u0119trznie w formie paczki w pliku ZIP. Istniej\u0105 r\u00f3\u017cne wtyczki do narz\u0119dzi budowania, kt\u00f3re u\u0142atwi\u0105 stworzenie paczki z kodem w odpowiedniej strukturze (jak np. Apache Maven Shade tworz\u0105cy Uber-JAR).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Destination<\/h3>\n\n\n\n<p>Blok ten odpowiada za wysy\u0142anie powiadomie\u0144 o statusie wykonania funkcji. W przypadku poprawnego lub niepoprawnego wykonania funkcji AWS mo\u017ce wys\u0142a\u0107 powiadomienie na jeden z 3 dost\u0119pnych kana\u0142\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Topic SNS<\/li>\n\n\n\n<li>Wiadomo\u015b\u0107 na SQS<\/li>\n\n\n\n<li>EventBridge<\/li>\n<\/ul>\n\n\n\n<p>lub uruchomi\u0107 kolejn\u0105 funkcj\u0119 Lambda.<\/p>\n\n\n\n<p>Funkcjonalno\u015b\u0107 ta zadzia\u0142a jednak tylko wtedy, kiedy b\u0119dziemy wywo\u0142ywa\u0107 funkcj\u0119 Lambda asynchronicznie. W przypadku testowania Lambdy w UI AWS blok Destination nie zadzia\u0142a, poniewa\u017c \u017c\u0105danie jest wysy\u0142ane w trybie request\/response, a nie w trybie event.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Infrastruktura-czyli-co-skrywa-wewn\u0105trz-AWS-Lambda\">Infrastruktura, czyli co skrywa wewn\u0105trz AWS Lambda?<\/h2>\n\n\n\n<p>AWS Lambda jest typem FaaS, a wi\u0119c Amazon Web Services samodzielnie zarz\u0105dza infrastruktur\u0105. Sam kod funkcji przechowywany jest na AWS S3. Warto pami\u0119ta\u0107 o limitach, czyli o tym, ile kodu w GB mo\u017cna przechowywa\u0107 w danym regionie chmurowym. Dla regionu europejskiego jest to 75 GB.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Jak-wygl\u0105da-cykl-\u017cycia-naszej-aplikacji\">Jak wygl\u0105da cykl \u017cycia naszej aplikacji?<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.11.11_graphic_2-1.png\" alt=\" class=\" width=\"1068\" height=\"645\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W momencie wysy\u0142ania \u017c\u0105dania do funkcji Lambda uruchamiana jest ona jako instancja naszej us\u0142ugi w \u015brodowisku wewn\u0119trznym. Jest ono podobne do \u015brodowiska EC2 (maszyny wirtualne na AWS). Natomiast u\u017cytkownik nie ma dost\u0119pu do tego \u015brodowiska. Gdy pr\u00f3bujemy uruchomi\u0107 instancj\u0119, mechanizmy AWS sprawdzaj\u0105, czy taka instancja nie zosta\u0142a ju\u017c uruchomiona, a je\u015bli jest uruchomiona \u2013 czy nie przetwarza \u017c\u0105dania. Je\u015bli instancja jest zaj\u0119ta, mechanizmy AWS Lambda tworzy now\u0105 instancj\u0119 funkcji. W innym przypadku wykorzystuje obecn\u0105 instancj\u0119 lub je\u015bli instancja nie istnieje \u2013 tworzy now\u0105. Je\u015bli instancja funkcji nie jest wykorzystywana przez d\u0142u\u017cszy czas (AWS sam zarz\u0105dza czasem), instancja funkcji jest usuwana.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Skalowalno\u015b\u0107-sky-is-the-limit\">Skalowalno\u015b\u0107 \u2013 sky is the limit?<\/h2>\n\n\n\n<p>Przejd\u017amy teraz do tematu nierozerwalnie zwi\u0105zanego z zagadnieniem chmury, czyli skalowalno\u015bci. AWS Lambda, jak ka\u017cda us\u0142uga, ma swoje limity. Jednym z nich jest limit aktywnych instancji w danym regionie. Dla region\u00f3w europejskich Amazon Web Services jest to 1000 aktywnych instancji, a nale\u017cy pami\u0119ta\u0107, \u017ce dotyczy to wszystkich funkcji Lambda, jakie posiadamy na naszym koncie w danym regionie. Aby mie\u0107 pewno\u015b\u0107, \u017ce minimalna liczba instancji zawsze w razie potrzeby zostanie uruchomiona, mo\u017cna zarezerwowa\u0107 liczb\u0119 instancji per funkcja w konfiguracji Lambdy. Dodatkowo warto wspomnie\u0107, \u017ce ka\u017cda instancja Lambdy ma dost\u0119p do pami\u0119ci wewn\u0119trznej (\/tmp), kt\u00f3ra ma pojemno\u015b\u0107 512 MB i nie jest kasowana do momentu usuni\u0119cia instancji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Parametry-i-konfiguracja-Lambdy\">Parametry i konfiguracja Lambdy<\/h2>\n\n\n\n<p>Podczas tworzenia Lambdy nale\u017cy poda\u0107 dwa istotne parametry:<\/p>\n\n\n\n<p><strong>Memory<\/strong> \u2013 czyli dost\u0119pna pami\u0119\u0107 RAM przypisana do instancji naszej us\u0142ugi. W przypadku przekroczenia limitu pami\u0119ci instancja zostaje zatrzymana. Obecnie maksymalny limit pami\u0119ci to 10 GB.<\/p>\n\n\n\n<p><strong>Timeout<\/strong> \u2013 maksymalny czas wykonywania funkcji. Bardzo wa\u017cny parametr ograniczaj\u0105cy koszty. Je\u015bli ustawiamy ten parametr np. na 30 sekund, a czas wykonania naszej funkcji b\u0119dzie d\u0142u\u017cszy ni\u017c czas odpowiedzi, funkcja ta zostanie zatrzymana. Maksymalny czas, jaki mo\u017cna ustawi\u0107, to 15 minut.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AWS-Lambda-wa\u017cne-elementy-konfiguracji\">AWS Lambda \u2013 wa\u017cne elementy konfiguracji:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zmienne \u015brodowiskowe<\/strong> \u2013 tutaj mo\u017cna ustawi\u0107 zmienne, kt\u00f3re b\u0119d\u0105 przekazywane do naszej funkcji (np. namiary na bucket na AWS S3).<\/li>\n\n\n\n<li><strong>Permissions<\/strong> \u2013 ustawianie dost\u0119p\u00f3w Lambdy, np. do S3, RDS AWS itd.<\/li>\n\n\n\n<li><strong>Ustawienia sieciowe<\/strong> \u2013 od Security Groups, przez podsieci, do VPC. Wa\u017cne, je\u015bli np. nasza baza danych jest w konkretnym Virtual Private Cloud.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"O-czym-jeszcze-warto-pami\u0119ta\u0107-tworz\u0105c-Lambd\u0119\">O czym jeszcze warto pami\u0119ta\u0107, tworz\u0105c Lambd\u0119?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wyb\u00f3r technologii<\/strong>,<strong> w kt\u00f3rej piszemy funkcj\u0119<\/strong> \u2013 ma to wp\u0142yw na wydajno\u015b\u0107 aplikacji. W Lambdzie p\u0142acimy za czas trwania us\u0142ugi i zu\u017cyt\u0105 pami\u0119\u0107. Im \u201egrubsza\u201d b\u0119dzie aplikacja, tym wi\u0119cej wykorzysta pami\u0119ci, a ponadto d\u0142u\u017cszy b\u0119dzie cold-start. Oznacza to zatem, \u017ce przy pierwszym wywo\u0142aniu funkcji zap\u0142acimy po prostu wi\u0119cej. Dodatkowo aplikacja b\u0119dzie mia\u0142a wi\u0119ksz\u0105 baz\u0119 kodu, przez co zostanie zu\u017cyte wi\u0119cej miejsca na S3. Spo\u015br\u00f3d technologii, z kt\u00f3rych mia\u0142em okazj\u0119 korzysta\u0107, Node.js dawa\u0142 najlepsz\u0105 wydajno\u015b\u0107.<\/li>\n\n\n\n<li><strong>Logowanie b\u0142\u0119d\u00f3w<\/strong> \u2013 sam response z Lambdy nie zwr\u00f3ci nam zbyt u\u017cytecznej informacji, a monitorowanie i debugowanie Lambdy jest mocno ograniczone. Nale\u017cy pami\u0119ta\u0107, \u017ce logowanie na AWS te\u017c kosztuje, je\u017celi zale\u017cy nam na bardziej zaawansowanym wykorzystaniu ni\u017c to, kt\u00f3re umo\u017cliwia testowa wersja bezp\u0142atna. Zach\u0119cam do zapoznania si\u0119 z cennikiem Amazon CloudWatch.<\/li>\n\n\n\n<li><strong>Tworzenie Lambdy za pomoc\u0105 AWS CloudFormation<\/strong> \u2013 korzystanie z us\u0142ugi AWS pozwoli zaoszcz\u0119dzi\u0107 czas na tworzeniu i konfigurowaniu zasob\u00f3w i poszukiwaniu zale\u017cno\u015bci, ponadto unikniemy wielu problem\u00f3w zwi\u0105zanych m.in. z dost\u0119pami czy VPC (jak konfiguracja VPC, aby dla Lambdy by\u0142a widoczna baza danych lub inna us\u0142uga, kt\u00f3rej nie udost\u0119pniamy publicznie).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Koszty-czyli-czy-to-si\u0119-op\u0142aca\">Koszty \u2013 czyli czy to si\u0119 op\u0142aca?<\/h2>\n\n\n\n<p>Odpowied\u017a brzmi: to zale\u017cy. W AWS Lambda p\u0142aci si\u0119 za czas korzystania z funkcji oraz zu\u017cyt\u0105 pami\u0119\u0107. Jednostk\u0105 rozliczeniow\u0105 stosowan\u0105 przez AWS jest Gigabajt na sekund\u0119 (GB\/sec). P\u0142aci si\u0119 r\u00f3wnie\u017c za liczb\u0119 \u017c\u0105da\u0144, jednak nale\u017cy wspomnie\u0107, \u017ce w pakiecie startowym dla nowego konta (free-tier) dostajemy 1 milion \u017c\u0105da\u0144 co miesi\u0105c i 400 000 GB\/sec, a wi\u0119c ca\u0142kiem sporo jak na bezp\u0142atne testowanie rozwi\u0105za\u0144 chmury AWS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"A-jak-to-wygl\u0105da-gdy-trzeba-zacz\u0105\u0107-p\u0142aci\u0107\">A jak to wygl\u0105da, gdy trzeba zacz\u0105\u0107 p\u0142aci\u0107?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1 milion \u017c\u0105da\u0144 kosztuje 0,20 $<\/li>\n\n\n\n<li>1 GB\/sec kosztuje 0,0000166667 $ (dla architektury x86)<\/li>\n<\/ul>\n\n\n\n<p>Za\u0142\u00f3\u017cmy, \u017ce mamy aplikacj\u0119, kt\u00f3ra obs\u0142uguje 500 tys. \u017c\u0105da\u0144 dziennie i nasza aplikacja potrzebuje 512 MB pami\u0119ci. \u0141\u0105czny koszt miesi\u0119czny to oko\u0142o 267 $. Jest to jedyny koszt, jaki poniesiemy, poniewa\u017c nie musimy utrzymywa\u0107 infrastruktury aplikacji (k8s, Service Mesh itd.)<\/p>\n\n\n\n<p>Nie chcia\u0142bym tutaj por\u00f3wnywa\u0107 koszt\u00f3w do instancji serwerowej, np. EC2, bo to por\u00f3wnanie nie by\u0142oby adekwatne. Zostawiam ka\u017cdemu ocen\u0119, jakie podej\u015bcie w jego przypadku jest bardziej op\u0142acalne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AWS-Lambda-zalety-i-wady\">AWS Lambda \u2013 zalety i wady<\/h2>\n\n\n\n<p><strong>Plusy<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Przy wykorzystaniu j\u0119zyka skryptowego mamy mo\u017cliwo\u015b\u0107 napisania szybko zoptymalizowanej funkcji<\/li>\n\n\n\n<li>Oszcz\u0119dno\u015b\u0107 czasu przez brak obowi\u0105zku zarz\u0105dzania infrastruktur\u0105<\/li>\n\n\n\n<li>Automatyczna skalowalno\u015b\u0107<\/li>\n<\/ul>\n\n\n\n<p><strong>Minusy<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>W zale\u017cno\u015bci od wybranej technologii (np. Java ze Spring Boot) d\u0142ugi czas startu przy pierwszym wywo\u0142aniu (cold-start)<\/li>\n\n\n\n<li>Ograniczenia w monitoringu i ma\u0142e mo\u017cliwo\u015bci debugowania aplikacji<\/li>\n\n\n\n<li>Nie nadaje si\u0119 do aplikacji z du\u017cym narzutem obliczeniowym ze wzgl\u0119du na stosunkowo ma\u0142y maksymalny czas wykonywania funkcji oraz limit pami\u0119ci RAM<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Warto zastanowi\u0107 si\u0119, czy AWS Lambda odci\u0105\u017cy nasz\u0105 infrastruktur\u0119 i pozwoli na zoptymalizowane koszt\u00f3w. Podczas analizy mo\u017ce si\u0119 okaza\u0107 rozwi\u0105zaniem szytym na miar\u0119. Oczywi\u015bcie nie jest to narz\u0119dzie idealne, ma swoje limity czy ograniczenia i nie zawsze pozwoli osi\u0105gn\u0105\u0107 zamierzony cel. Mam nadziej\u0119, \u017ce uda\u0142o mi si\u0119 przybli\u017cy\u0107 zagadnienie AWS Lambda wraz z jego plusami i minusami. Wszystkich zainteresowanych tym tematem zach\u0119cam do dalszego zg\u0142\u0119biania i zapoznania si\u0119 z rozwi\u0105zaniami, kt\u00f3re pozwalaj\u0105 na wykorzystanie potencja\u0142u AWS Lambda \u2013 bibliotekami S3 czy SQS. Warto zna\u0107 r\u00f3wnie\u017c rozwi\u0105zania pozwalaj\u0105ce zminimalizowa\u0107 zjawisko \u201ecold-startu\u201d. Jest ich naprawd\u0119 du\u017co \u2013 na przyk\u0142ad AWS Serverless Java Container Spring, ale to ju\u017c temat na osobny artyku\u0142.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W czasach rosn\u0105cej popularno\u015bci architektury mikroserwisowej opr\u00f3cz zaprojektowania i napisania aplikacji nale\u017cy troszczy\u0107 si\u0119 r\u00f3wnie\u017c o zarz\u0105dzanie tymi aplikacjami, wybra\u0107 rozwi\u0105zania do orkiestracji, zarz\u0105dzania warstw\u0105 sieciow\u0105 itd. Wymaga to zazwyczaj zbudowania osobnego, wyspecjalizowanego zespo\u0142u. Aby tego unikn\u0105\u0107 i u\u0142atwi\u0107 sobie nieco \u017cycie, mo\u017cna napisa\u0107 aplikacj\u0119 w architekturze serverless. Tutaj z pomoc\u0105 mo\u017ce przyj\u015b\u0107 Lambda od Amazon Web Services (AWS).<\/p>\n","protected":false},"author":109,"featured_media":30356,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":72,"footnotes":""},"categories":[1,582],"tags":[576],"offering":[522],"class_list":["post-30345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-cloud-engineering","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=30345"}],"version-history":[{"count":2,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30345\/revisions"}],"predecessor-version":[{"id":32452,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30345\/revisions\/32452"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/30356"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=30345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=30345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=30345"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=30345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}