Wykorzystanie Serverless

Jakub Gutkowski

@gutek       blog.gutek.pl       @kuba@gutek.pl

Dema z poprzedniej sesji

  • Proste problemy zwykłych użytkowników
  • Tanie rozwiązanie dla wystartowania projektu
  • Wsparcie Minimum Viable Product (MVP)
  • Pokazywały inny tryb myślenia o produkcie

Jak to robią

wielcy (i nie tylko) tego świata

Case 01: Troy Hunt

Problem

Case 01

Problem

$$$

Case 01

Rozwiązanie

BLOCK IP

Abuse Detected

Unblock IP?

UNBLOCK IP

Case 01

Rezultat

Case 01

Koszt

Case 01

Case 02: Konrad Kokosa

Problem

  • Chciał znaleźć rozwiązanie dzielenia się ciekawymi artykułami
  • Nie ma czasu co tydzień usiąść i pisać artykuł

Case 02

Rozwiązanie

Case 02

Rezultat

Case 02

Case 03: Romper

Problem

  • Skoncentrowanie się na dostarczeniu wartości klientowi
  • Pozbycie się problemu zarządzania infrastrukturą
  • Przeniesienie ludzi do TWORZENIE rozwiązania a nie zarządzania deploymentami

Case 03

Rozwiązanie

API Gateway

Lambda

Kinesis

Redis

Aggregate Data

Lambda

Create Events

...

Aplikacja wywołuje

API

Case 03

Rezultat

  • Nie muszą się rozrastać liczbowo
  • Mają prostsze niż poprzednio skalowanie całego systemu
  • 84% redukcja kosztów

Case 03

Case 04: DEKKI

Problem/Zadanie

  • Stworzenie systemu łatwo skalowalnego
  • Nowy system ma ponosić Małe Koszty

Case 04

Rozwiązanie

Case 04

Rezultat

  • 40 mln page req. w cenie 1 700 USD per miesiąc
  • Z czego: ~200 USD Lambda/DynamoDB
  • Nie ma NoOps ale jest LessOps

Warto odwiedzić blog: Trek10

Case 04

Case 05: EURO '16 This One's For You

Case 06: BanqUP

Problem

  • Integracja z różnymi usługami zewnętrznymi
  • Różne wymagania per integracja

Case 06

Rozwiązanie

Case 06

Rezultat

  • Przyspieszenie procesu dostarczania funkcjonalności
  • Na resztę trzeba poczekać... :-(

Case 06

Case 07: Quest

Problem

  • Aktualne rozwiązanie SaaS - kosztowe
  • time-to-market jest kluczowy

Case 07

Rozwiązanie

  • Wykorzystanie całego stack Serverless od Azure
  • CosmoDB - do logów audytów 
  • Functions - do logiki biznesowej i jako microservices
  • API Management - do "połączenia" mikroservices
  • Event Hubs - do przekazywania informacji
  • Table Storage - do przechowywania metadanych
  • Key Vault - zabezpieczenie delikatnych danych

Case 07

Rezultat

  • time-to-market: przyspieszył o ~65%
  • prosty sposób obciążenia klienta kosztami - chce więcej ? nie ma sprawy, można zeskalować

Case 07

Case 08: ASOS

Problem

  • Skalowalność i koszty posiadania własnej infrastruktury
  • Obsługa WIELU page requests na sekundę
  • Obsługa WIELU zamówień na sekundę

Case 08

Rozwiązanie

Case 08

Rezultat

  • 3 500 page request per sec
  • 33 zamówienie na sekundę
  • Przy 48 milisekundowym response time

Case 08

Case 09: Plexure

Problem

  • Duzi klienci inne prawa - co klient to inne wymaganie
  • BAAAAARDZO duża liczba odpytań do API (szacowana na 7K per sekunda)
  • Problem z dopasowaniem i rozszerzaniem jak i wydajnością systemu

Case 09

Rozwiązanie

  • Azure Logic Apps do tworzenia przepływów pracy zarówno dla Plexure jak i dla klientów Plexure
  • Azure Functions mikroserwisy podtrzymujące całe rozwiązanie jak i miejsca rozszerzalności dla klientów.

Case 09

Rezultat

  • Niepowtarzalne na rynku narzędzie dla klienta do dostosowywania rozwiązania do siebie (Plexure nie musi już tam im tego pisać)
  • Odpowiedź na potrzeby klienta w czasie rzeczywistym
  • Mniejsze koszty jak i szybsze dostarczanie nowszych rozwiązań
  • Ale oni dopiero zaczynają - serverless to jest najmniejsza część całego rozwiązania.

Case 09

Case 10: FujiFilm Software

Problem

  • Stare oprogramowanie
  • Własne data-center
  • Duże koszty utrzymania całego rozwiązania
  • Duży przyrost danych dziennie (ponad 1TB)
  • Wolno wprowadzane zmiany
  • Ciężko rozszerzalny system

Case 10

Rozwiązanie

Case 10

Rezultat

  • Czas wytarzania nowej/aktualizacja istniejącej funkcji skrócony o 75%!!!
  • Przyspieszenie całego systemu 10 krotnie, a momentami 20 krotnie

Case 10

Case 11: f-secure

Problem

  • Dowiedzenie się dlaczego użytkownicy nie rejestrują/aktywują aplikacji
  • Znalezienie punktów "krytycznych" które powodują problemy
  • Szybka reakcja i naprawa ich

Case 11

Rozwiązanie

Case 11

Rezultat

  • 70% oszczędności na infrastrukturze
  • Przyspieszenie procesu "rejestracji" użytkownika
  • Łatwiejsze i szybsze reagowanie na problemy napotkane w trakcie instalacji 

Case 11

Case 12: Localytics

Problem

  • Nowy feature wymagał całego deploymentu
  • Wsparcie przepływu i analizy miliardów danych dziennie

Case 12

Rozwiązanie

Case 12

Rezultat

  • Wyjście ku klientom - nowy feature, nowa lambda i klient jest zadowolony
  • Automatyczne skalowanie
  • Brak konieczności re-buildowania całego rozwiązania co nowy feature

Case 12

Use Cases...

wiele, wielE, wieLE, wiELE, wIELE, WIELE INNYCH

tylko mało kto się przyznaje ;)

Gdzie Serverless

nie wykorzystywać?

przy duuużych obliczeniach

systemy wymagające szybkiej odpowiedzi

Podsumowanie

  • Serverless to nie tylko Funkcje
  • Można na tym tworzyć całe rozwiązania
  • Dla systemów nie mających problemu z latacy
  • Do dużych, skomplikowanych, czasochłonnych obliczeń dalej stara metoda najlepsza