Od kiedy zacząłem czytać i interesować się serverless miałem nastawione ucho na informacje o tym kto i gdzie wykorzystuje technologię serverless. Głównie z ciekawości. Słabo jest mówić o technologii, jeżeli nie jesteśmy wstanie ani podać możliwego praktycznego jej zastosowania. A jeżeli technologia już istnieje i nie jest w fazie “alpha” to nazwy firm które z tej technologii korzystają. Wyobraźcie sobie reklamowanie technologii: mamy taki feature, jest ZAJEFAJNY! Nikt z niego nie korzysta i sami nie wiemy po co on jest, ale jest SUPER nie? No nie? Słabo… bardzo :)
No więc z technologią serverless tak właśnie sprawa wygląda. Nawet nie wiem czy nie gorzej ;) w sensie opisanych rozsądnych przypadków użycia jest moim zdaniem mało. BARDZO mało. Nie wiem czy to kwestia jeszcze nie opisanych przypadków czy może po prosu… technologia jest właśnie do takich typowych (nudnych, podstawowych) zastosowań.
Świat
Azure chwali się wykorzystaniem Azure Functions przez firmę LISA, która wykorzystała Azure Function jako REST Endpoint….. Nawet nie wiem, czy były z tego jakieś korzyści finansowe. Czy po prostu darmo reklama kanałami MS i pierwsze lepsze (czyt. gorsze) zastosowanie funkcji tylko po to by o firmie była mowa. Przeczytałem cały Case Study i jakoś nie mogę powiedzieć, że to jest to coś.
Innym przypadkiem był AWS Lambda w którym wydawnictwo medialne czy tam firma medialna (jak zwał tak zwał) Bustle powiedziała, że dużo zyskała, bo udało im się rozbić ich Monholit. Ale nic o mikro serwisach już nie wspominali. W sensie, ok dużo im to dało, mają mniej pracy, potrafią szybciej reagować na problemy i mieć ogólnie fajne notyfikacje. Ale szczerze, jednym z najważniejszych powodów to rozbicie Monolitu? To znaczy, że od początku było coś u nich popsutego i odkryli oni “nową technologię załatwiającą problem starej”. Do mnie taki use case nie przemawia.
Zaciekawiła mnie zaś informacja o Netflix – o tym jak AWS Lambda im pomoże…. Ale to było to co może dla nich zrobić a nie to co zrobiła. Nie słyszałem już o tym, że im coś zrobiła. Zresztą Netflix słynie z tego, że ma masę mikro serwisów. Więc przynajmniej nie dają powodu firmu Blunt. Z tego co czytam to jedynie mają prototypy niektórych usług w funkcjach. Jedynie znalazłem info o ciekawym projekcie BLESS – usługa weryfikująca certyfikaty która w pełni jest oparta o AWS Lambda. Kod open source i do tego fajne zastosowanie. Brawo Netflix :)
Firma Flux7 zaś wykorzystała idealnie funkcje do tego do czego wszyscy piszą, że są one stworzone – notyfikacje. Flux na danych zapuszczał kilka funkcji odpalanych czasomierzem. Celem funkcji była analiza zbioru danych i wrzucenie notyfikacji do odpowiednich ludzi. Na przykład notyfikacje zarejestrowania nowych kont wysyłane do adminów raz dziennie jako jedna funkcja. Notyfikacje o nowym artykule w portalu dla użytkowników kolejna funkcja. Itd. Fajne, proste, łatwe w zarządzaniu.
Z takich jeszcze ciekawszych zastosowań to opisywał Troy Hunt. Mianowicie dzięki azure queue, CloudFlare i Azure functions był wstanie zablokować adresy IP które nadużywały gościnności. Dzięki czemu realnie poziom odpytań API Have I’ve been Pwned? spadł prawie do zera – poprawnej wartości. Jak tyko ktoś teraz nadużywa gościnności z miejsca jest banowany. Po jakimś czasie znów za pomocą funkcji ban jest zdejmowany. Fajne zastosowanie? Super! Mi się bardzo podoba :)
Intersującym przykładem zaś jest podejście SERVERLES EVERYWHERE!, które zastosowała A Cloud Guru, platforma z kursami online dotyczącymi chmury. Cała platforma jest stworzona w oparciu o serveless. Jak czytaliście jeden z moich postów o typach serverless to oni wykorzystali wszystkie możliwe ograniczając się do minimalnej liczby funkcji (AWS Lambda). Bardzo ciekawy case study do przeczytania tutaj.
Więcej pomniejszych przykładów wykorzystania Azure Functions można przeczytać na portalu Technical Case Studies – od kasowania duplikatów po notyfikacje. Nie wszystkie jakieś super duże, ale o jednej jeszcze tutaj napiszę poniżej.
Taką samą listę oferuje Amazon – All Customer Success Stories. Czasami się coś fajnego trafi :)
No ale dobra, TO SĄ ZAGRANICZNE przykłady. Czy jest coś co w Polsce też jest robione w tym temacie? Napisałem do kilku osób które znam z pytaniem czy są wstanie mi pomóc i wskazać PRAWDZIWE zastosowania funkcji w ich firmach lub w firmach zaprzyjaźnionych. I kurczę, nie padłą nigdy odpowiedź: nie wykorzystujemy, jedynie w najgorszym przypadku padło NDA ;)
Polska
Na polskim rynku można zobaczyć praktyczne wykorzystanie u Konrada, który co tydzień publikuje Niedzielnik Kokosa który jest stworzony w głównie poprzez funkcje. Dokładnie dwie funkcje, jedna filtruje posty jakie mają tam trafić, druga publikuje post. Proste, praktyczne zastosowanie. Do tego w pełni darmowe! :) Całość można przeczytać na blogu Konrada.
Innym trochę mniej dla mnie robiącym wrażenie, jest stworzony przez Polaków banqUP. Funkcje tam pełnią jedynie funkcje konektora z zewnętrznymi systemami. O tyle fajne i ciekawe, że po prostu przy niskiej liczbie zapytań do systemów zewnętrznych jak i systemów zewnętrznych do banqUP, całość może działać całkowicie za darmo. Opis co i jak zostało zrobione, można znaleźć tutaj.
Innym przykładem z rodzimego rynku jest firma Predica, która wykorzystuje funkcje na co dzień nie tylko wewnętrznie, ale także w projektach dla klientów. Bez konkretnych przykładów, funkcje są wykorzystywane do:
- Standardowej walidacji danych – coś co chyba każdy z miejsca pomyślał, że funkcje mogą się przydać do. Na przykład walidacja NIP, PESEL, numer telefonu, kodu pocztowego itp.;
- Grupowanie pewnych operacji – takie View na dane z innych serwisów. Na przykład pobierz wszystkich przyjaciół danej osoby z Facebooka wraz z przyjaciółmi tych przyjaciół. Wszystko zamknięte w jeden endpoint;
- Importowanie i Eksportowanie danych pomiędzy różnymi źródłami danych;
- Wysyłanie notyfikacji (znów, zastosowanie które IDEALNIE się do funkcji nadaje);
- Z ciekawszych to na przykład: startowanie i zatrzymywanie maszyn wirtualnych;
Podumowanie
Jak widać, zastosowania są. Trzeba tylko wpaść na pomysł
Dużo też jest zastosowań, gdzie podpisany dokument zabrania mówienia o tym. A to znaczy tylko tyle: mogą być SUPER ciekawe wykorzystania Funkcji o których się NIGDY nie dowiemy. Smutne to, ale chyba tak działa świat.
Więc jeżeli masz, znasz jakieś ciekawe wykorzystanie funkcji to daj znać, z chęcią dodam do tej listy a jak to będzie jeszcze lokalne, rodzime to tym bardziej PISZ :) będzie fajnie :)
Podam pare przykladow od siebie i nie nieobowiazuje mnie NDA w tym przypadku, nie wiem czemu mialoby:
– zarzadzanie backupami managed klastra elastic searcha
– disaster recovery i syunchronizacja pomiedzy roznymi s3 bucketami pomiedzy 3 kontami AWS
– konsumpcja eventow z kolejki komunikatow i zapis do snapshota danego bounded contextu
– pare customizowanych alertow na hipchacie
– roznego rodzaju mniejsze wieksze integracje pomiedzy systemami – np migracja pomiedzy jednym data storem a Salesforcem
– przelaczanie roznych feature togglow, np zmiana regionow raz na tydzien by przetestowac czy fail over mechanizm dziala
– badanie integralnosci danych ( mamy np dashboard z informacja ile eventow w snapshocie nam brakuje, cos jak SLA, jak spadnie ponizej 99% to jest problem bo spada rozdzielczosc danych dla klientow )
+ more
na prodzie mamy ~ 150 lambd
Ilosc wywolan waha sie pomiedzy ~200k na minute do ~1mln na minute ( w zaleznosci od pory dnia i ruchu)
to jeszcze tutaj, mega przykład, dzieki!
A jak zarządzasz tymi funkcjami? Tylko nie patrząc na poziom ich skomplikowania, ale ze względu na ich ilość?
Do deploymentu mix Serverless frameworku z cloud formation.
Do logow Cloud Watch + Elk Stack
Do alertow Seyren + Oager Duty
Mamy wlasny deployment pipeline ktory dziala na bazie konwencji i uzywa serverlessa ktory uzywa konwencji :) zeby wygenerowac powtarzalny artefakt ktory da sie zdeployowac na awsa. 4 srodowiska testowe + 2 produkcyjne – do maksymalnego weryfikowania czy deploy i funkcje dzialaja.
Do tego -> https://github.com/justeat/JustSaying nakladka na SNS / SQS robiaca cos ala rabitowe exchange z konsumentami i ich wlasnymi kolejkami.
Jakbys mial wiecej pytan to uderzaj smialo do mnie prywatnie bede dostepny po urlopie za 10 dni.
Brzmi mega ciekawie, ja na pewno się odezwę jak wrócisz ;)
Dla mnie fajnym Use-case wykorzystaniem Azure Functions jest hostowanie prostej strony HTML. Tutaj jest info jak zwracać pliki:
http://anthonychu.ca/post/azure-functions-static-file-server/
Do tego dodajemy 1-3 akcje typu konktakt czy zapytanie ofertowe i koniec – mamy stronę postawioną.
mistrz :)
Nadałoby się do comiesięcznego wysyłania danych do ZUS-u z Płatnika? Z tym zawsze są problemy (obciążenie pod koniec terminu składania danych).
sam nie wiem, bo nie wiem jakie dane ida i jak one ida. i czy trzeba jakies giodo itp utrzymac.
ale ogolnie jako konektor, tak, by dało radę
Pytanie czym spowodowane jest to ‘obciazenie’ i czemu generuje problemu. Znajac szczegoly jak dziala ZUS i jaka maja infrastrukture, latwiej byloby dobrac rozwiazanie. Jezeli koniec terminu skladnaia danych wiaze sie z duzym ‘spikem’ danych do przepchniecia krotko terminowo to wydaje sie ze Lambda / Funkcja spelnila by zadanie. Tylko teraz pojawia sie inne pytanei, co z inny czesciamy systemu, czy one beda w stanie przyjac to obciazenie, mysle tutaj o jakiejs bazie danych ktora najczesciej jest bottleneckiem.
Jak dobrze pamiętam to Ministerstwo Finansów ma takie rozwiązanie na Azure Blob + Azure Functions.
Branżą rządzi marketing, a marketingiem… giełda. Duże firmy muszą zaprezentować, zrobić, a na koniec zarobić swoje. Przez 13 lat pracy w IT zdążyłem się już nauczyć, że nie wszystkie nowe i mocno promowane technologie są warte zachwytów. Oczywiście, nie chcę w tym momencie hejtować tego aspektu, aczkolwiek dopiero przyszłość pokaże serverless znajdzie jakiekolwiek zastosowanie.
Comments are closed.