Blog
04/03/2020
Administrator

Podejście Serverless – czy to jest programowanie bez serwerów?

W bardzo dużym skrócie można powiedzieć, że wiele zespołów developerskich podąża tą drogą. Trochę taka jest również historia rozwoju naszego oprogramowania. Wiele lat spędzonych nad „rozwojem”...

W bardzo dużym skrócie można powiedzieć, że wiele zespołów developerskich podąża tą drogą. Trochę taka jest również historia rozwoju naszego oprogramowania.

Wiele lat spędzonych nad „rozwojem” monolitu, dało nam w kość, jak u wielu innych przekonaliśmy się, że podążając tropem tego rozwiązania, nieuchronnie docieramy do ściany. Okazało się, że mnogość integracji jakie wykonaliśmy powoduje, że drobna zmiana staje się nieznośnie czasochłonna dla biznesu jak i niezwykle uciążliwa dla developerów oraz wdrożeniowców. Do tego przy każdej kolejnej zmianie potęguje się ryzyko „popsucia” czegoś.

Nieco dla zobrazowania monolitu trochę humorystycznie napiszę, że była to ogromna kanapka wielowarstwowa, z której odchodziła ogromna liczba macek spaghetti realizujących różnorodne integracje, do tego dochodził cache a następnie frontend który synchronicznie musiał się zmieniać razem z kanapką 😊

Dziś jesteśmy bardzo szczęśliwi, że „KTOŚ” 😊 (Solomon Hykes i Sebastien Pahla) wymyślił Dokera, a my znaleźliśmy odwagę aby podjąć się wyzwania „rozbicia” monolitu. Pół roku intensywnej pracy ZESPOŁU dało nam spory przyczółek w postaci nowego środowiska kontenerowego obejmującego główne funkcje monolitu. Po początkowej niepewności związanej z wchodzeniem na nieznany grunt okazało się, że developerzy .NET znakomicie radzą sobie z planowaniem nowej architektury dockerowej. Okazało się, że podział na domeny dockeryzacji nie jest taki trudny i po pewnym czasie cięcie tego ciastka na mniejsze kawałki stało się dla wszystkich oczywiste i jasne.

W tym miejscu należy napisać jakie główne korzyści osiągnęliśmy :

  • Prostota wdrożeń – użyliśmy chmury AWS (oczywiście można dowolnej innej), początkowo ręcznie robiona zmiana numeru obrazu pobieranego z DockerHuba. Tak - i na tym koniec. Bez żmudnych instrukcji wdrożeniowych, nocnych wgrywek , angażowania wielu osób.
  • Automatyzacja wdrożeń – użyliśmy Azure DevOps Pipelines, kolejnego "pięknego" narzędzia ułatwiającego życie gdzie po każdym commicie do mastera można zrobić ścieżkę automatycznych testów oraz wdrożenie na kolejne środowiska TEST, STG, PROD.
  • Ułatwienie testowania nowych funkcjonalności ze względu na fakt, że te już zdockeryzowane przestały wpływać regresyjnie na pozostały monolit.
  • Możliwość pisania kodu w różnych językach programowania, poprzednio byliśmy skazani na .NET, docker znosi to ograniczenie, możemy używać np. Golang, gdzie kontenery są mniejsze i wydajniejsze.
  • Podniesienie kompetencji zespołu develperskiego w kierunku do DevOps. To należy szczególnie docenić, biorąc pod uwagę indywidualną chęć rozwoju każdego developera.
Zobacz też...