Development2019.10.17 3 min. czytania

Wirtualne farmy w produkcji filmowej

Kamil Wysocki Cloud Solutions Architect

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.

Wirtualne farmy w chmurze. Twardy orzech do zgryzienia

Projekt skalowania wirtualnych farm realizowaliśmy dla polskiej spółki odpowiedzialnej za produkcję spersonalizowanych filmów video oraz automatyzację procesów sprzedaży i działań marketingowych, które w rezultacie przekładają się na indywidualną komunikację z klientem. Rozwiązanie firmy 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. Do realizacji projektu zostaliśmy zarekomendowani przez firmę Microsoft, która aktywnie uczestniczyła w projekcie migracji rozwiązania do Chmury. Jako zespół pasjonatów od wielu lat tworzących innowacyjne rozwiązania w technologii Chmury, zdecydowaliśmy zmierzyć się z tym niezwykłym projektem. 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, potrzebny był mechanizm który nie działał na zasadzie prostego usuwania i tworzenia nowych maszyn, ale taki który 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.

Chmrua Azure? Kreatywność kluczem sukcesu

Aby zrealizować projekt musieliśmy wybrać odpowiednią drogę działania spośród dwóch możliwych opcji. Pierwsza, a zarazem oczywista to użycie Azure’owego VM Scale Seta. Niestety miała ona znaczące wady, które na starcie ją dyskwalifikowały:

  • maszyny do skalowania zawsze są usuwane i tworzone od nowa, a ich największym minusem jest brak możliwości ich zatrzymania;
  • nie ma  żadnej kontroli nad kolejnością usuwania maszyn.

Drugą możliwością było zarządzenie poszczególnymi maszynami poprzez REST API Azure Resource Managera. Zatem oczywistym wydał nam się wybór właśnie tej metody. Jednak była ona dla nas jedynie kierunkiem, a nie rozwiązaniem problemu, z którym się  mierzyliśmy. Jak pokazał czas, podjęliśmy dobrą decyzję, ponieważ na jej 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.

Software aplikacji

Czy opracowana przez nas aplikacja sprawdziła się? Tak, pomimo, że jej implementacja okazała się znacznie bardziej skomplikowana, aniżeli 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 oraz w trakcie dalszego użytkowania.

Dzięki wprowadzonym przez nas zmianom rozwiązanie w dużo większym stopniu 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ć ponoszone wydatki przez firmę.

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, ponieważ 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 które można wykonywać na maszynach. Ponadto, nie powinno się niczego na siłę zmieniać w sprawnie działającej realizacji, która sprawdza się świetnie…, ale ciekawie byłoby przetestować rezultaty działanie Service Fabric względem kosztów i łatwości implementacji.

Billennium LAB = Chmura Azure

Billennium LAB to zespół niezależnych ekspertów, którego celem jest stałe poszukiwanie i budowanie nowych rozwiązań. Badamy koncepcje technologiczne pod kątem biznesowych korzyści i możliwości przełożenia ich na nowe produkty. Pracujemy z nowymi technologiami jeszcze zanim ujrzą światło dzienne. O naszych rozwiązaniach rozmawiamy z inżynierami odpowiedzialnymi za poszczególne produkty w Redmond (siedzibie Microsoft). Na swoim koncie mamy projekty realizowane dla Ministerstwa Finansów, Uniwersytetu INSEAD oraz firmy Vintom. Nasze prace w dużej mierze opierają się na badaniu wykorzystania środowiska Azure i to w tym obszarze specjalizujemy się najbardziej. W końcu, Billennium LAB to specjaliści Microsoft Azure.

Autor

Kamil Wysocki

Cloud Solutions Architect

Skontaktuj się z nami

Chcesz wiedzieć, jak możemy pomóc Tobie? Porozmawiajmy!

Kontakt