CI/CD + Terraform – czyli jak wdrożyć swoją aplikację w AWS? – cz. 2
Poznaj możliwości GitHub Actions - czyli jak szybko wdrożyć aplikację z użyciem GitHub Actions z wykorzystaniem technologii AWS oraz Terraform.
W niniejszym artykule postaramy się Wam przybliżyć tematykę wirtualizacji, konteneryzacji oraz Docker’a. Czym właściwie jest to oprogramowanie i po co go używamy? Jakie różnice są między maszynami wirtualnymi i Docker’em? Zachęcamy do lektury.
Podstawowe pojęcia
Aby zrozumieć, na czym polega wirtualizacja oraz jak działa oprogramowanie Docker, należy poznać podstawowe terminy:
Dzięki kontenerom będziemy mogli uruchomić nasze oprogramowanie na dowolnym systemie na którym zainstalowano Dockera.
Po co?
Jeśli masz jakieś doświadczenie pracy jako programista w zespole, to z pewnością doświadczyłeś w swoim życiu problemów technicznych związanych z rozwijaniem oprogramowania. Docker nie pomoże nam z całym trudem kodowania, ale jest w stanie wyeliminować najbardziej frustrujące przeszkody jak np.:
Zamknięcie kodu w kontenerze sprawia, że zapewniamy pewien standard oprogramowania w jakim uruchamiany jest kod i mamy pewność, że zawsze będzie on działał.
Najprościej mówiąc – Docker standaryzuje nam sposób uruchamiania aplikacji i sprawia, że mamy pewność, że jeśli aplikacja uruchamia się na jednym środowisku, to tak samo będzie na innym – oczywiście pod warunkiem, że jest tam zainstalowane oprogramowanie Docker.
Maszyny wirtualne kontra konteneryzacja
Wirtualizacja to symulacja poprzez oprogramowanie istnienia zasobów logicznych, które wykorzystują zasoby fizyczne. Wirtualne maszyny mogą uruchamiać system operacyjny wewnątrz innego systemu. System hostujący przydziela wtedy takiej maszynie wirtualnej określone zasoby.
Kluczowym wyróżnikiem pomiędzy kontenerami a maszynami wirtualnymi jest to, że te drugie wirtualizują całą maszynę włącznie z systemem operacyjnym, nazywanym czasami Guest OS. Kontenery wirtualizują tylko warstwy oprogramowania powyżej poziomu systemu operacyjnego i są często stosowane choćby w architekturze mikroserwisów.
Rysunek 1: Porównanie maszyn wirtualnych i kontenerów. Źródło: Atlassian.
Instalacja Docker’a
Instalacja oprogramowania jest zależna od systemu operacyjnego, dlatego zdecydowaliśmy się przedstawić jedną, najpopularniejszą opcję na system Windows. Należy:
Po zainstalowaniu powinniśmy być w stanie wykonać komendę “docker” w dowolnie wybranym terminalu (PowerShell, cmd).
Kontener kontra obraz
Początkujący w tematyce konteneryzacji często mylą na początku te dwa powyższe pojęcia, a ich zrozumienie jest kluczowe dla efektywnej pracy z Docker’em:
Obraz to więc plik, z którego produkujemy instancje naszych aplikacji. To trochę tak jak z klasą w programowaniu oraz obiektem, który jest instancją tej klasy. Jeśli nie jesteś programistą, możesz myśleć o obrazie jak o przepisie kuchennym, a o kontenerze jak o gotowym daniu (z jednego przepisu można zrobić wiele razy to samo danie).
Dockerfile
Dockerfile to plik zawierający konfigurację, z którego generujemy obraz, czyli inaczej mówiąc – definiujemy, z jakiego interpretera i bibliotek ma korzystać nasza uruchamiana aplikacja.
Rysunek 2: Przykład pliku Dockerfile do uruchomienia aplikacji napisanej w React.js.
Ze zdefiniowanego pliku Dockerfile można następnie wygenerować obraz, a z obrazu uruchomić kontener. Jeśli czujesz się zagubiony pod wpływem nowych pojęć, to możesz się wspomóc następującym obrazkiem ze strony medium.com.
Rysunek 3: Workflow, które towarzyszy powstawaniu kontenera. Źródło: medium.com.
Podsumowanie
Reasumując – mamy nadzieję, że udało nam się dzisiaj przedstawić powody, dla których warto poznać Dockera i jak może on pomóc w Waszej codziennej pracy. W następnym artykule postaramy się wgłębić w sposób działania tego oprogramowania oraz nauczymy Was jego podstawowej obsługi.
Źródła:
https://pl.wikipedia.org/wiki/Wirtualizacja
https://www.atlassian.com/pl/microservices/cloud-computing/containers-vs-vms
https://www.ibm.com/cloud/blog/containers-vs-vms
CI/CD + Terraform – czyli jak wdrożyć swoją aplikację w AWS? – cz. 2
Poznaj możliwości GitHub Actions - czyli jak szybko wdrożyć aplikację z użyciem GitHub Actions z wykorzystaniem technologii AWS oraz Terraform.
AdministracjaProgramowanie
CI/CD – jak wykorzystać GitHub Actions do zbudowania pipelineów? – cz. 1
Czym jest CI/CD oraz jak wykorzystać natywne rozwiązanie do CI/CD od GitHub – GitHub Actions? Czym są pipeline’y i jak można je wykorzystać w celu automatyzacji wdrożenia Waszej aplikacji?
AdministracjaProgramowanie
DevSecOps – czyli jak zadbać o bezpieczeństwo aplikacji w ramach procesu DevOps
Jak dbać o bezpieczeństwo produktu w ramach procesu DevOps? Czym są SASTy, DASTy i SCA i jak to wszystko może wpłynąć na poprawę bezpieczeństwa?
AdministracjaBezpieczeństwo