Jakiś czas temu zostałem zaangażowany w projekt, który miał dostarczyć Windchilla w sposób wysoko dostępny – w sumie nic nowego, klaster załatwia sprawę i w zasadzie można by na tym zakończyć temat, ale…

Hostujemy całe rozwiązanie (PROD, QA, TEST i DEV) w AWS i fajnie by było mieć to wszystko na tyle zautomatyzowane, żeby nie zastanawiać się i nie pisać setek stron dokumentacji jak wprowadzić zmiany, albo jak naprawić jakieś środowisko.

O Windchillu i jego oporności na automatyzacje można napisać kolejny artykuł – ale to już ktoś inny, ja skupie się na automatyzacji związanej z utrzymaniem systemów przy życiu.

Kilka założeń na dobry początek:

  1. Wszystko mamy zdefiniowane w szablonach CloudFormation (IaaC)
  2. Używamy jednego szablonu do tworzenia zasobów na wszystkich stagach (PROD, QA, itd.)
  3. Mamy gotowe AMI, które dzięki skryptom startowym umie się odnaleźć w sytuacji i się dostosować

Z wymagań projektowych przyszło też kilka wymagań, które mają istotne znaczenie na dalsze projektowanie rozwiązania:

  1. Backup z kopią do zapasowej lokalizacji (inny region AWS)
  2. Odtwarzanie środowiska QA z aktualnego stanu produkcji

Biorąc powyższe wymagania i założenia trzeba było zrobić tak, żeby się samo robiło, a jednocześnie było na tyle elastyczne, żeby pozwalało na wprowadzanie zmian (np. odtworzenie QA ze wskazanego AMI i Snapshota RDS)

Szablony CloudFormation

Zgodnie z założeniami, wszystko co dzieje się z zasobami ma być robione poprzez szablony CloudFormation, które dodatkowo trzymamy w repozytorium, żeby wiedzieć kto i kiedy przy tym majstrował.
Dla uproszczenia, weźmy samego Windchilla, do którego potrzebujemy dwóch szablonów CloudFormation:

  • Szablon z definicją AutoScalling Group i używanego przez nią LaunchTemplate
  • Szablon z definicją bazy danych (RDS)

W obu szablonach musimy podać kilka wartości parametrów, które dla każdego stage będą inne a dodatkowo będą łatwo modyfikowalne. Można użyć plików json z parametrami, ale ich automatyczna aktualizacja w repozytorium wydaje się zadaniem mało przyjemnym.

Tu z pomocą przychodzą wspomniane już parametry SSM. Czym on właściwie są?

Czym właściwie są parametry SSM

Parametry Systems Managera (Parameter Store) to w uproszczeniu system pozwalający na przetrzymywanie wartości pod określonym kluczem, z możliwością szyfrowania i pozwalające na dokładne zarządzanie dostępem do konkretnego parametru i jego wersji.

Zmiany wartości parametru można dokonać prostym wywołaniem API używając np. AWS CLI lub któregoś z dostępnych SDK (np. boto3)
Dodatkowo CloudFormation i sam SystemsManager mają wbudowaną integrację z parametrami SSM pozwalającą na odczyt wartości podczas tworzenia i aktualizacji Stacka CloudFormation lub wywoływania dokumentów SSM.

Dzięki temu mamy proste w obsłudze miejsce w którym możemy trzymać wartości parametrów szablonów CloudFormation.

Na co to pozwala?

Automatyzacja z CloudFormation i SSM.

Wróćmy do Windchilla (chociaż może być to każda inna aplikacja), mamy dwa szablony CloudFormation, które potrzebują kilku parametrów:

Szablon z AutoScaling Group i Launch Template:

  • AMI ID – żeby wiedzieć, jakiego AMI użyć w Launch Template
  • Desired Count – żeby wiedzieć, ile maszyn ma być uruchomionych

Szablon z bazą danych:

  • RDS Snapshot Id – żeby wiedzieć z jakiego Snapshota odwinąć bazę danych

Poniżej diagram, który to obrazuje.

SSM Parameters diagram 1

W sumie niewiele się różni od zakodowania tych wartości na stałe w template, a jednak się różni.

Parametry możemy modyfikować przez API, co za tym idzie możemy w łatwy sposób np. funkcją Lambda zmieniać wartość poszczególnych parametrów. Dodatkowo parametry możemy grupować ścieżką (jak katalogi). Na diagramie mamy ścieżkę „/dev/”. Dzięki temu, możemy stworzyć zestawy parametrów dla każdego stage: „/dev/”, „/qa/”, „/prod/” i trzymać tam właściwe dla danego Stage wartości.

Zmienimy wartość parametru i co?

To zależy. CloudWatch Events potrafi wykryć zmianę parametru, co możemy wykorzystać do uruchomienia funkcji Lambda, która wywoła nam aktualizację stacka CloudFormation. Np. tak

SSM parameters diagram 2

W momencie wywołania lambdy aktualizującej stack, CloudFormation pobierze aktualne parametry z SSM i zastosuje do zasobów. Oczywiście należy z tym uważać i sprawdzić w dokumentacji, zmiana jakich parametrów jest bezpieczna, a których spowoduje wymianę zasobu (np. bazy danych).

Sama funkcja update-stack ma przełącznik „–use-previous-template” który pozwala na użycie aktualnego szablonu do aktualizacji stacku co w tym przypadku jest bardzo przydatne.

Nie musimy się martwić o:

  • trzymanie szablonu w S3,
  • dostępem do szablonu z poziomu funkcji
  • użyciem niewłaściwego szablonu

Jak to się ma do backupu?

Jako system Bakupu możemy zastosować AWS Step Functions, które pozwalają na orkiestracje funkcji Lambda. Taki system w zasadzie wykonuje 3 kroki:

  1. Tworzy AMI z działającej instancji EC2
  2. Aktualizuje Parametr SSM
  3. Wysła AMI do regionu Disaster Recovery
  4. Opcjonalnie może wywołać funkcję aktualizującą Stack, jeżeli nie jest zaimplementowane uruchamianie z poziomu CloudWatch Events

A jak sprawdzić ten backup?

Robienie backupu to jedna cześć procesu, aby mieć pewność, że backup działa i jest prawidłowy należy co jakiś czas go sprawdzać.

Tu wracamy do wymagań projektowych, które zakładają odtwarzanie środowiska QA z aktualnego stanu produkcji. Zatem codziennie rano uruchamiany jest automatyczny proces, który z tych samych szablonów CloudFormation buduje całe środowisko QA wykorzystując najświeższe AMI i Snapshoty zrobione przez system Backupowy, działając w zupełnej nieświadomości istnienia takiego systemu.

Co zyskujemy?

  1. Backup takiego rozwiązania jest prosty jak budowa urządzenia do oddzielania ziarna od plew
  2. Dzięki automatycznemu aktualizowaniu stacków CloudFormation po zmienia parametrów w SSM, AutoScalling Group zawsze
  3. używa najświeższego dostępnego AMI (nie takiego sprzed roku)
  4. W przypadku awarii dwóch nodów klastra tracimy tylko dane z okresu od awarii do ostatniego backupu (RPO ze slangu środowisk backupowych)
  5. W przypadku konieczności cofnięcia się do konkretnego miejsca w czasie, ustawiamy parametry SSM na właściwe AMI i Snapshoty i aktualizujemy stacki
  6. Nie trzymamy parametrów w plikach. Prostym API Call możemy wyświetlić aktualne wartości parametrów danego stage
  7. Mamy granularną kontrolę dostępu do poszczególnych parametrów (DEV tylko do ścieżki /dev/
  8. Wszystko się samo robi

Jeśli potrzebujesz pomocy przy automatyzacji swoich rozwiązań w chmurze skontaktuj się z nami.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

W przypadku naruszenia Regulaminu Twój wpis zostanie usunięty.
Votre nom et prénom

_Wszystkie wpisy z tej kategorii

Jak optymalizować koszty chmury AWS z wykorzystaniem FinOps?

Chmura to nie on-premise Inżynierowie tworząc architekturę i powołując nowe zasoby w chmurze w sposób niejawny podejmują decyzje zakupowe. Czasem wielokrotnie wciągu jednego dnia! Każda z nich ma wpływ na wielkość rachunku wystawionego na koniec miesiąca przez dostawcę chmury publicznej. Dla organizacji z długą historią jest to zupełnie nowa rzeczywistość. Działom finansowym trudno odnaleźć się …
Czytaj dalej

Chmura napędza cyfrową transformację

Chmura coraz częściej stanowi kluczowy aspekt powodzenia procesu transformacji cyfrowej. Rozmowa z Christianem Thiem, starszym analitykiem biznesowym w TT PSC Germany GmbH, dostarczy odpowiedzi na pytania: co należy uwzględnić w harmonogramie migracji do chmury oraz jak przygotować organizację do jej wdrożenia?
Czytaj dalej

Co musisz wiedzieć o serverless computing?

Serverless cmputing nadal budzi sporo wątpliwości, szczególnie wśród tych środowisk, które właśnie zaczynają korzystanie z usług chmurowych lub dopiero planują migrację do chmury swoich systemów. Na najważniejsze pytania dotyczące tego rozwiązania spróbujemy odpowiedzieć w niniejszym artykule.
Czytaj dalej

Czym jest DevOps as a service i czemu warto z tego skorzystać?

Oszczędność, skrócenie czasu wdrażania zmian oraz weryfikowanie ich poprawności – to tylko kilka przykładowych korzyści, których gwarantem jest DevOps. Ta innowacyjna metodologia wprowadziła nową jakość pracy nad projektami IT. Bazuje na kooperacji autonomicznych obszarów: inżynierii oprogramowania, administracji oraz kwestii dotyczących bezpieczeństwa i jakości.
Czytaj dalej

9 powodów, dla których powinno się wykorzystywać chmurę w prowadzeniu biznesu

Zgodnie z raportem firmy RightScale „2019 State of the Cloud Report from Flexera”, aż 94% firm używa chmury. To nie przypadek, że tyle przedsiębiorstw przechodzi na rozwiązania cloud computing. Z tego artykułu dowiesz się, dlaczego to taka popularna koncepcja, jak Twój biznes skorzysta na wdrożeniu chmury i dlaczego ten, kto jeszcze jej nie używa, zostaje z tyłu za konkurencją.
Czytaj dalej

Jak zacząć przygodę z Azure i przygotować się do certyfikacji AZ-900

Zapotrzebowanie na specjalistów w obszarze Cloud stale rośnie. Jak zdobyć szeroki zakres kompetencji i szybko odnaleźć się w temacie chmury? Najlepiej zacząć od solidnych podstaw, czyli certyfikatu Azure AZ- 900.
Czytaj dalej

Chmura na czas kryzysu, czyli jak usprawnić pracę w swojej firmie

Świat, który znaliśmy przez ostatnie lata mocno się zmienia. Wymusza na nas zmianę przyzwyczajeń, a także sposobów w jaki pracujemy i realizujemy nasze codzienne obowiązki. Zarówno te zawodowe, jak i te prywatne. Okoliczności, w których się znaleźliśmy sprawiły, że wiele osób pracuje teraz zdalnie.
Czytaj dalej

Jak zadbać o bezpieczeństwo aplikacji serverless w AWS?

Konferencja AWS re:Invent 2019, podobnie jak jej poprzednie edycje, obfitowała w ciekawe wykłady typu breakout sessions, których celem było przybliżenie uczestnikom wybranego zagadnienia technicznego związanego z chmurą Amazon Web Services. Jedno z takich wystąpień zainspirowało mnie do napisania kilku słów na temat bezpieczeństwa aplikacji stworzonych w modelu serverless.
Czytaj dalej

Parametry SSM w automatyzacji AWS

Jakiś czas temu zostałem zaangażowany w projekt, który miał dostarczyć Windchilla w sposób wysoko dostępny – w sumie nic nowego, klaster załatwia sprawę i w zasadzie można by na tym zakończyć temat, ale…
Czytaj dalej

Jak dotknęliśmy chmur – relacja z AWS re:invent 2019

Udział w konferencji AWS re:Invent wymaga od uczestników, pomijając finansowanie, nieco zaangażowania i odrobiny samozaparcia. W naszym przypadku zakup wejściówek na konferencje w sierpniu rozpoczął długi proces przygotowywania i planowania udziału w tym wydarzeniu.
Czytaj dalej

Najważniejsze nowości z AWS re:Invent 2019

Ciekawi Cię jakie nowości zostały zaprezentowane na AWS re:Invent, ale nie masz czasu stale przeglądać doniesień z Vegas? Nie musisz już szukać. Specjalnie dla Ciebie, w jednym miejscu, zebraliśmy wszystkie najważniejsze zapowiedzi, które są ogłaszane podczas trwania tej konferencji.
Czytaj dalej

Jak wykorzystać Talend Open Studio w branży medycznej?

Wykorzystywanie nowoczesnych technologii w medycynie jest coraz powszechniejsze. Papierowe karty pacjentów wypadają z obiegu i zastępują je elektroniczne formy przechowywania danych. Proces digitalizacji służby zdrowia właśnie trwa! W jakich obszarach? Odpowiedź na to pytanie znajdziesz w dalszej części artykułu.
Czytaj dalej

Czym jest chmura Amazon Web Services?

Chmura obliczeniowa to jedna z najdynamiczniej rozwijających się technologii na świecie. Stopniowo wypiera tradycyjne rozwiązania serwerowe, zgarniając dla siebie coraz większą część rynku. Firma badawcza Gartner przewiduje, że w 2019 całkowite wydatki na chmurę publiczną wzrosną o 17,5% i wyniosą 214 miliardów dolarów. Dla porównania budżet Polski na 2019 przewiduje przychody na poziomie 387,7 mld zł, czyli prawie 100 mld dolarów. Nie ma wątpliwości, że to duży i atrakcyjny to rynek.
Czytaj dalej

Dlaczego serverless jest przyszłością aplikacji

Co kilka lat, w świecie IT, pojawia się nowe, przełomowe rozwiązanie. Aktualnie, wszystkie oczy są skupione na Machine Learning(ML) oraz Sztucznej Inteligencji(AI). Wcześniej były to kontenery, do których istnienia, chyba już wszyscy zdążyli przywyknąć. Jak się okazuje, to co kilka lat temu było absolutną nowością, dziś jest rutyną.
Czytaj dalej

Windchill Single Sign On – jak z Amazon Web Services dostać się do Active Directory w sieci klienta?

Jednym z punktów migracji klienta do Amazon Web Services było włączenie SSO (Single Sign On) – co jest bardzo wygodnym rozwiązaniem. Po szybkiej weryfikacji (jakie mamy możliwości), okazało się, że możemy użyć ADFS. Klient już wykorzystywał ADFS pod inne usługi, zatem mogliśmy pominąć etap przekonywania Security Team. Po kilku dniach walki z różnymi zawiłościami Ping …
Czytaj dalej

Budujemy własne AWS Echo (z AWS Alexa na pokładzie)

Jak zamienić (nie)zwykłe RaspberryPi w AWS Echo komunikujące się z otoczeniem przy użyciu modułu konwersacyjnego AWS Alexa? Jak z jej pomocą zapytać o pogodę w Londynie, poprosić o wyłączenie świateł w domu czy umówić wizytę u dentysty? Jak w paru krokach rozszerzyć Aleksę o (praktycznie) dowolne funkcjonalności? Jak sprawdzić czy słuchający nas ludzie są zadowoleni, …
Czytaj dalej

Dlaczego rozwiązania Cloud?

Rozwiązania Cloudowe, czyli tak zwane Chmury Obliczeniowe, są w Polsce o wiele mniej popularne niż na Zachodzie Europy i w Stanach Zjednoczonych. Rynek jest młody i dopiero się kształtuje. Klienci stopniowo nabierają zaufania do tego typu rozwiązań.   Obawy polskich firm związnane z bezpieczeństwem / „chmurowe” doświadczenia przedsiębiorstw z całego świata. Rozwiązania Cloudowe oferują szereg …
Czytaj dalej

Rosnąca popularność modelu usług Serverless

Jeszcze nie tak dawno na DevOps Days Warsaw 2016 przewijały się przepowiednie o konteneryzacji i Dockerze jako technologii, która jest przyszłością. Każdy kto wówczas zainwestował swój czas w naukę Dockera z pewnością dziś tego nie żałuje. W TTPSC uważamy, że konteneryzacja nie jest ostatnim etapem ewolucji i zdecydowanie stawiamy na rozwiązania serverless jako ostateczny wynik …
Czytaj dalej

Chmura to przyszłość

Obecnie aż 63% firm przechodzi cyfrową transformację. Klasyczne, papierowe dokumenty są wypierane przez swoje elektroniczne odpowiedniki. Dzięki temu działy takie jak administracja czy księgowość znacznie zredukowały swoje wydatki oraz usprawniły działanie, gdyż przepływ danych stał się znacznie lepszy. Jednak magazynowanie tak dużej ilości dokumentacji elektronicznej nie jest prostym zadaniem. Dlatego w ostatnich czasach pojawiła się …
Czytaj dalej

Transition Technologies PSC uzyskało tytuł Standard Consulting Partner Amazon Web Services (AWS)

Z dumą oświadczamy, że partnerstwo Transition Technologies PSC oraz Amazon Web Services (AWS) wkroczyło na kolejny poziom. Kilka dni temu uzyskaliśmy status Standard Consulting Partner AWS w Polsce. Jest to potwierdzenie ze strony Amazon, że nasza firma posiada certyfikowanych specjalistów i ekspertów dziedzinowych, którzy są w stanie efektywnie pomagać klientom projektować, budować, migrować oraz zarządzać …
Czytaj dalej

_Zostańmy w kontakcie

Skontaktuj się