2020 jest rokiem rozwiązań chmurowych
Dzisiaj publikujemy wywiad z jednym z naszych DevOps Engineers, Marcinem Szremskim. Wywiad jest pierwszym z serii rozmów na temat tego, jak pracujemy w Spyrosoft.
Jak rozwiązania chmurowe rozwijają się w 2020?
Całość zdecydowanie idzie w stronę serverless, chociażby dlatego że brak serwerów ściąga z nas konieczność zarządzania i utrzymania infrastruktury data centres. Rozproszone środowiska chmurowe oferują elastyczne rozwiązania zapewniające wysoką wydajność oraz skalowalność.
Jeśli mamy firmy, które oferują jakąś usługę i mamy kilka centrów danych rozrzuconych po całym świecie, to czas odpowiedzi do danego użytkownika od momentu wysłania zapytania do serwera i odpowiedź, jest znacznie krótszy. Nie tylko skracamy czas odpowiedzi, ale też minimalizujemy ryzyko utraty danych. Odpowiednia konfiguracja polityki backupów daje nam możliwość przechowywania danych w różnych zakątkach świata. Dodatkowo, rozpraszając architekturę pomiędzy różne serwerownie (zony), jest małe prawdopodobieństwo, że nagle dwa duże regiony AWSa przestaną działać i że stracimy dostęp do naszych danych.
Powstają też już rozwiązania cloud native.
Amazon ma już ponad 165 gotowych serwisów, które możemy wykorzystać takich jak chatbot, Polly [aplikacja, które konwertuje tekst na mowę – przypis M.C.], jak analizy obrazu i filmu (Amazon Recognition), np. narzędzie, które pozwala na identyfikowanie osób i wskazywanie, w której sekundzie danego nagrania się one pojawiają. Jest też rozwiązanie do analizy tekstu (Amazon Comprehend), które pozwala na określenie m.in. emocji, jakie są w nim zawarte.
Zamiast pisać aplikację od podstaw, można wykorzystać gotowy fragment, który dostarczy nam jakiegoś rozwiązania. My do niego dopisujemy wtedy tylko to, co jest ważne z punktu widzenia naszego biznesu.
Czy tego typu rozwiązania mają jakieś ograniczenia?
Ciężko jest znaleźć takie rozwiązanie, gdzie cloud nie będzie miał zastosowania. Nawet instytucje państwowe korzystają z usług cloudowych, np. w Stanach CIA ma swoją serwerownię w Amazonie. Co prawda, nie jest to współdzielona lokalizacja, to wydzielony, utajniony region, nikt nie wie, gdzie on jest, ale jest i korzysta z niej duża agencja bezpieczeństwa narodowego dużego kraju. To też o czymś świadczy. Ograniczenia clouda są minimalne, mogą wynikać z regulacji prawnych danego kraju lub prowadzonej polityki.
Na razie chyba jedynym problemem przy rozwiązaniach chmurowych może być brak standaryzacji.
Nie do końca bym się z tym zgodził. Przy konsoli zarządzania w AWS czy Microsoft Azure, one rzeczywiście, są inne, ale czy biorąc dowolne urządzenie sieciowe nie natykamy się na podobny problem? Co więcej, wszyscy duzi gracze dostarczają usługi mikroserwisów w postaci klastrów dockerowych – to jest standard.
Każdy ma swoje rozwiązania. Każdy stara się dostarczyć rozwiązania elastyczne i uniwersalne jednocześnie dokładając coś od siebie, coś co sprawia, że rozwiązanie staje się unikatowe.
Wyjściem może być w niektórych przypadkach zastosowanie rozwiązań hybrydowych.
Ich zastosowanie na pewno ma swoje miejsce, np. mamy swoją moc obliczeniową w naszej serwerowni, która znajduje się w firmie, ale nie mamy zasobu, żeby przechowywać dane, które przetwarzamy. Możemy wykupić storage w AWS i używając usługi, która nazywa się Storage Gateway podpiąć storage z chmury do naszego data centre. W ten sposób mamy rozwiązanie hybrydowe, używamy mocy obliczeniowej na miejscu, a dane wysyłamy do chmury i tam je przechowujemy. Nie potrzebujemy kupować dodatkowych macierzy dyskowych i utrzymywać dyski, żeby przechowywać te dane. Chmura gwarantuje nam to, że te dane nie znikną.
Częściej zdarzają się jednak rozwiązania w drugą stronę. Mamy storage w lokalnym data centre, ale nie mamy mocy obliczeniowej, zamiast inwestować w zakup nowych serwerów fizycznych wykupujemy usługę (Lambda czy Fargate) i w myśl pay-as-you-go płacimy tylko za rzeczywisty czas użycia.
Innym przykładem zastosowanie takich rozwiązań hybrydowych, jest na przykład postawienie infrastruktury testowej dla nowych rozwiązań w chmurze. Jeżeli się nie sprawdzą, szybko możemy się pozbyć ”wirtualnej serwerowni” i nie musimy się martwić, co zrobić ze sprzętem, który nam został. Jeżeli natomiast testowane rozwiązanie się sprawdzi i aplikacja zaczyna przynosić zyski, w każdej chwili możemy ją rozbudować o kolejne serwery.
Kolejne super rozwiązanie dostarczane przez AWS to AWS Device Farm, jeśli mamy zespół zajmujący się testowaniem aplikacji mobilnych. Zamiast kupować wszystkie możliwe urządzenia, setki, jeśli nie tysiące telefonów z różnych oprogramowaniem, możemy wykorzystać usługę dostarczaną przez AWSa, która daje nam możliwość przetestowania na różnych urządzeniach mobilnych w ramach tzw. farmy urządzeń.
Kolejna sprawa to bazy danych. Po co przechowywać duże bazy danych u siebie, zwłaszcza jeśli wykonują duże, skomplikowane obliczenia, kiedy możemy mieć samą bazę danych w chmurze, gdzie ona jest utrzymywana i backupowana, a my nie ponosimy kosztów. Jeśli nie potrzebujemy już tej mocy obliczeniowej, w każdej chwili możemy zwolnić miejsce. Fizycznego serwera nie oddamy, kiedy skończymy go używać. W chmurze możemy po prostu zmniejszyć ilość lub typ instancji i wyciszyć je trochę, a dane dalej są przechowywane.
Rozwiązanie hybrydowe może być dobrym wyjściem dla kogoś, kto zastanawia się, czy i jak zastosować rozwiązania chmurowe. Część danych możemy przenieść tak jak są, a potem systematycznie pracować nad resztą i stopniowo również umieszczać je w chmurze. Możemy to robić bardzo mało inwazyjnie.
Taką strategię przyjęliśmy właśnie w przypadku migracji bazy danych dla firmy TakTo, gdzie były one zbyt duże, żeby przenosić je wszystkie na raz. Przenoszenie zaczęliśmy od elementów, które nie miały wpływu na działanie aplikacji produkcyjnej. W AWSie postawiliśmy całą niezbędną infrastrukturę i serwery, a następnie zaczęliśmy przenosić aplikację i podpinać ją do niektórych elementów środowiska testowego, żeby zweryfikować, czy wszystko będzie działało prawidłowo. Ostatnim etapem było przygotowanie paczki głównej, a następnie w godzinie zero przepięcie bazy produkcyjnej i uruchomienie aplikacji.
Czy myślisz, że kiedyś wszystko będzie przeniesione do chmury?
Nie, na pewno znajdą się takie zastosowania, gdzie lepiej będzie mieć ten serwer u siebie. Załóżmy, że firma ma jakiś bardzo mocno spersonalizowany serwer albo przy pisaniu oprogramowania typu low-level, serwer musi być jednak fizycznie w firmie, bo w chmurze nie ma do tego dostępu. Zawsze będą więc przypadki, kiedy rozwiązania chmurowe nie będą odpowiedzią na wszystkie problemy.
O autorze