Praktykanci kolor 3...2
Zespół Billennium LAB pracuje nad innowacyjnymi rozwiązanymi opartymi o Azure.

Zrealizowany przez nas projekt pokazuje jak tworzyć dedykowaną infrastrukturę, która przekłada się na optymalizację kosztów poprzez dostosowanie mocy obliczeniowej do faktycznego zapotrzebowania w danym czasie.


Wdrożenie innowacyjnego rozwiązania automatycznie skalującego farmy wirtualnych maszyn w oparciu o listę zadań i czas przetwarzania to proces wyjątkowo złożony. Dodatkowo, jeżeli odbywa się to w środowisku Microsoft Azure, a dziedziną docelową jest produkcja filmów video, to całość nabiera zupełnie nowego znaczenia, wymagającego analitycznego podejścia i obszernej wiedzy. Na przykładzie opracowanego przez nas mechanizmu pokażemy, że mimo ogromnej skali wyzwania i wynikających z niego ograniczeń, realizację można przeprowadzić sprawnie, w krótkim czasie i co najważniejsze bezawaryjnie.

Twardy orzech do zgryzienia

Naszym klientem była spółka odpowiedzialna za produkcję spersonalizowanych filmów video oraz automatyzację procesów sprzedaży i działań marketingowych w ramach indywidualnej komunikacji z klientem. Jej rozwiązanie operuje na dużej ilości indywidualnych danych, które docelowo miały znaleźć się w Chmurze - stąd też poszukiwania ekspertów specjalizujących się w środowisku Azure. Zarekomendował nas Microsoft, który uczestniczył w projekcie migracji rozwiązania do Chmury. Od wielu lat pracujemy w technologii Chmury, dlatego zdecydowaliśmy się zmierzyć z tym wyzwaniem. Chodziło o stworzenie możliwości automatycznego skalowania całych farm wirtualnych maszyn zależnie od liczby zadań oczekujących w kolejce oraz ich średniego przewidywanego czasu przetwarzania. Ponieważ dodanie nowej maszyny trwa stosunkowo długo, a skalowanie musiało być szybkie, mechanizm nie powinien działać na zasadzie prostego usuwania i tworzenia nowych maszyn, ale dodatkowo trzymać pewną pulę maszyn zatrzymanych, które w razie potrzeby można uruchomić w czasie znacznie krótszym niż potrzebny do utworzenia nowej. Warto dodać, że w chwili rozpoczęcia pracy nad projektem Microsoft Azure nie miał gotowego rozwiązania pozwalającego osiągnąć założenia realizacyjne.

Kreatywność kluczem do sukcesu

Musieliśmy wybrać z dwóch możliwych opcji. Pierwsza, a zarazem oczywista, to użycie Azure’owego VM Scale Seta. Niestety, znaczące wady zdyskwalifikowały ją na starcie:

– maszyny do skalowania zawsze są usuwane i tworzone od nowa, nie można ich zatrzymać;

– nie ma  żadnej kontroli nad kolejnością usuwania maszyn.

Drugą możliwością było zarządzenie poszczególnymi maszynami przez REST API Azure Resource Managera. Wybór był oczywisty - opcja druga. Jak pokazał czas, podjęliśmy dobrą decyzję. Na tej bazie stworzyliśmy własne rozwiązanie, które rozpoznawało jakie maszyny są w danej chwili aktywne, które są zatrzymywane, które są w trakcie tworzenia itd. W rezultacie na tej podstawie opracowaliśmy dedykowaną aplikację mogącą tworzyć nową maszynę, uruchamiać ją z puli zatrzymanych, zatrzymywać aktywną, a nawet usuwać. Tym samym uzyskaliśmy pełną kontrolę nad pojedynczymi maszynami, której nie zapewniał nam Scale Set.   

Stamina aplikacji

Czy opracowana przez nas aplikacja się sprawdziła? Tak, chociaż jej implementacja okazała się znacznie bardziej skomplikowana niż użycie Scale Seta (o ile byłoby to możliwe). Jednak to nie opracowanie software’u dało nam największą satysfakcję, a jego bezawaryjne działanie zaraz po wdrożeniu i w trakcie dalszego użytkowania.

Dzięki naszym zmianom rozwiązanie dużo lepiej wykorzystuje możliwości Chmury, niż to początkowo zakładano. Przeprowadzone przez nas badania i opracowane wdrożenia pozwoliły spółce dostarczać materiały znacznie szybciej  i wygodniej oraz, co istotne, znacząco zmniejszyć wydatki.

Wehikuł czasu

Czy wsiadając do DeLoreana DMC-12, który cofnie nas do początku prac nad projektem, zdecydowalibyśmy się coś zmienić? Nie, bo w przypadku konieczności kontrolowania pojedynczych wirtualnych maszyn korzystanie bezpośrednio z API Resource Managera jest najlepszym rozwiązaniem, które w żaden sposób nie ogranicza operacji wykonywanych na maszynach. Ponadto, nie powinno się niczego na siłę zmieniać w sprawnie działającej realizacji, która sprawdza się świetnie. Chociaż ciekawie byłoby przetestować rezultaty działania Service Fabric względem kosztów i łatwości implementacji.

Autorzy: Tomasz Telepko – Senior LAB Developer w Billennium oraz Kamil Wysocki – Cloud Solutions Architect w Billennium.