Wybierz region
pl
  • PL
  • EN
Wydrukuj

Piaskownica DevOps. Z czym się bawimy.

Celem pierwszego postu z serii o DevOps będzie przedstawienie czym jest DevOps, jakie narzędzia są stosowane i co jest najważniejszym w nowym podejściu do wytwarzania oprogramowania.

O podejściu DevOps wiemy już od ponad 10 lat, ale tak naprawdę do tej pory to pojęcie nie zostało w 100% jednoznacznie zdefiniowane. O “DevOps” możemy dyskutować w nieskończoność, coraz więcej HeadHunterów poszukuje specjalistów DevOps, ale każdy rozumie to pojęcie “po swojemu”: programista - jako zbiór narzędzi do szybkiego i sprawnego wdrożenia oprogramowania, administrator - jako zbiór narzędzi do automatyzacji codziennej pracy, managerzy - jako podejście do zarządzania projektem informatycznym. I każdy ma racje.

Źródło: https://legacy.devopsdays.org/blog/wp-content/uploads/2010/05/itsdevops.png

DevOps - jest to filozofia która ma na celu zburzyć barierę pomiędzy zespołem developmentu a zespołem eksploatacji. Jest to synergia. Największy nacisk w praktyce DevOps należy położyć na zbudowanie kultury pracy przy której wszyscy członkowie zespołu będą współpracować, komunikować się i nie będą się bały że czegoś nie wiedzą.

Jednym z najważniejszych aspektów w tym podejściu jest wspólne ponoszenie odpowiedzialności za dostarczany produkt.

Cele DevOps

Celem DevOps jest zbudowanie wydajnego procesu dostarczania rozwiązania, wdrażając DevOps osiągamy:

Usprawnienie procesu dostarczania produktu na wszystkich etapach developmentu

Polepszenie jakości dostarczanego oprogramowania

Skrócenie czasu dostarczania poprawek na środowiska produkcyjne (bug fixing)

Zwiększenie efektywności i produktywności zespołu

Dzięki temu zwiększa się częstotliwość dostarczania zmian (w zależności od zapotrzebowań klienta możliwość osiągnięcia 20000+ release/day) oraz większa zwinność w wytwarzaniu oprogramowaniu co za tym idzie większa satysfakcja klientów.

Jak wdrożyć DevOps?

 

W praktykach DevOps nie wystarczy zatrudnić DevOps inżyniera który powie co należy robić, a czego nie warto dotykać, również nie wystarczy że administrator skonfiguruje kilka narzędzi CI/CD i powiedzieć: “Mamy DevOps!” - wszystko zostanie zrobione automatycznie - “Niech programista klika w ten przycisk i wszystko będzie zrobione”. DevOps należy wychować w zespole. W DevOps całkowicie zmienia się podejście do wytwarzania i wdrożenia oprogramowania, kształt zespołu. W tej metodologii nie ma osobno programistów i administratorów, osoba pisząca kod zapewnia to aby ten kod trafił na odpowiednie środowisko. Zespołem DevOps można nazwać taki w którym całkowicie zostanie wyeliminowane - “To nie nasz problem”.

Ale dla ludzi technicznych bardzo często stosunki werbalne nie są zbyt ważne - ich interesuje tylko technologia, jeżeli odizolujemy się od budowy kultury i skupimy się na technologiach i narzędziach które możemy w tej metodyce zastosować, każdy nawet bardzo wymagający specjalista będzie zadowolony.

Praktyki i narzędzia DevOps

Ze względu na to że metodologia DevOps ma na celu zapewnić jak najszybsze reakcje na zmiany, co za tym idzie zadowolenie potrzeb biznesowych klienta, możemy określić najlepsze praktyki stosowane w tym podejściu:

  • Ciągła integracja (Continuous Integration)
  • Ciągłe wdrażanie (Continuous Deployment)
  • Ciągłe dostarczanie (Continuous Delivery)
  • Automatyzacja testowania (Automation Testing)
  • Infrastruktura jako kod (Infrastructure as Code)
  • Zarządzanie konfiguracją (Configuration Management)
  • Monitorowanie (Monitoring)

Do wyżej wymienionych praktyk najczęściej stosowane są narzędzia wspierające albo pozwalające na całkowitą automatyzację tych procesów, niektóre narzędzia:

  • Git - zarządzanie konfiguracją oprogramowania (SCM)
  • Docker - konteneryzacja (wirtualizacja środowiska)
  • Jenkins - ciągła integracja
  • Gradle/Make - automatyczne bildy
  • Kubernetes - orkiestracja
  • EasyMock/Mocha - testowanie oprogramowania
  • Puppet - zapewnienie IaC
  • ELK - logowanie oraz zarządzanie wydarzeniami aplikacji 
  • Nagios - monitorowanie

Jest to tylko kilka narzędzie zapewniające większą automatyzację oraz uproszczenie w pracy, co pozwala na zwiększenie czasu dla “siebie”. DevOps wymaga ciągłego uczenia się, poznawania nowych technologii oraz polepszania już istniejącej infrastruktury, tak że zaoszczędzony czas na rutynowych czynnościach jak najbardziej się przyda ????

W kolejnych częściach zapoznamy się z praktykami stosowanymi w DevOps oraz skonfigurujemy narzędzia wspomagające procesy zachodzące w metodyce.

Podsumowanie

Wdrożenie DevOps nie powinno być koniecznym celem. Koniecznym celem jest - efektywne zaspokojenie potrzeb biznesu, właśnie dla tego należy wdrażać DevOps.


Artur Vasylkov

Programista .Net, lubię nowe technologie, programowanie jest dla mnie pracą i hobby. Interesuje się tematami związanymi IoT, Blockchain, optymalizacją kodu, usprawnieniem procesu wytwarzania kodu od roku zagadnieniami związanymi z DevOps. W wolnym czasie lubię pograć w squash :)


Wydrukuj