CodeGym /Kursy /JAVA 25 SELF /Wdrażanie kodu na serwer

Wdrażanie kodu na serwer

JAVA 25 SELF
Poziom 10 , Lekcja 6
Dostępny

1. Wprowadzamy zmiany w kodzie

Jak już mówiłem wcześniej, tworzenie oprogramowania sprowadza się do wprowadzania niewielkich zmian w kodzie. Tym procesem zajmują się miliony programistów od dziesięcioleci, co doprowadziło do jego starannego dopracowania, standaryzacji i sformalizowania na wszelkie możliwe sposoby.

Do przechowywania kodu jest specjalny program – Git. Git to rozproszony system kontroli wersji. Nie tylko przechowuje kod, ale śledzi wszystkie zachodzące w nim zmiany i pomaga programistom pracować nad projektami wspólnie, nie przeszkadzając sobie nawzajem 🤝.

Z Git deweloperzy mogą tworzyć różne wersje projektu (gałęzie), przechowywać pełną historię zmian, a nawet wracać do dowolnego momentu w przeszłości. To jak maszyna czasu dla kodu! Git pomaga łączyć zmiany i rozwiązywać konflikty, dlatego stał się głównym narzędziem pracy zespołowej we współczesnym wytwarzaniu oprogramowania. 👩‍💻

2. Budujemy projekt

Zanim projekt będzie testowany lub trafi na serwer, trzeba go zbudować.

🏗️ Budowanie projektów – to proces kompilacji kodu źródłowego projektu do programów wykonywalnych lub innych formatów uruchamialnych, często z włączeniem testowania i wdrażania. To kluczowy aspekt tworzenia oprogramowania, zapewniający gotowość programu do użycia.

Budowanie to nie tylko kompilacja, choć kompilacja często jest częścią procesu budowania. Po zakończeniu budowania możesz mieć dziesiątki, a nawet setki plików, które trzeba wgrać na różne serwery.

Narzędzia do budowania mogą być niskopoziomowe, takie jak:

  • Maven i Gradle – szeroko używane w projektach Java do zarządzania zależnościami i budowania projektów.
  • 🐜 Apache Ant – kolejne narzędzie do budowania projektów w Javie, zapewnia dużą elastyczność w pisaniu skryptów budowania.
  • 🖥️ MSBuild – używany do budowania projektów tworzonych w Microsoft Visual Studio.
  • ⚙️ Make – klasyczne narzędzie do budowania, używające Makefile do definiowania reguł, szczególnie popularne w projektach C i C++.
  • 🌐 Webpack – często stosowany do budowania aplikacji JavaScript, zarządzając zależnościami i modułami.
  • 📜 Gulp i Grunt – narzędzia pomagające automatyzować często wykonywane zadania w tworzeniu aplikacji webowych, takie jak minifikacja plików i kompilacja SCSS do CSS.

Są także wysokopoziomowe narzędzia do budowania. O nich – poniżej.

3. CI/CD

🔄 CI/CD (Continuous Integration/Continuous Delivery) – metodologia, która zakłada ciągłe scalanie zmian ze wszystkich gałęzi rozwojowych do głównej gałęzi, a także automatyczne testowanie i wdrażanie tych zmian. Pozwala to szybko wykrywać i naprawiać błędy, zwiększając efektywność i tempo prac.

Jednym z najpowszechniejszych, choć nieco przestarzałych, systemów CI/CD jest Jenkins. Jeśli pracujesz w małej firmie, z prawdopodobieństwem 80 % będą używać właśnie jego.

🤖 Jenkins – popularny zautomatyzowany system używany do ciągłej integracji i dostarczania (CI/CD). Jenkins pozwala automatyzować różne etapy wytwarzania oprogramowania, w tym budowanie, testowanie i wdrażanie, co poprawia jakość kodu i przyspiesza proces developmentu.

Jeśli trafisz do dużej firmy, do wyboru może być jeszcze 5 opcji:

  • 🚦 TeamCity – potężny komercyjny system od JetBrains. Oferuje głęboką integrację z różnymi środowiskami tworzenia i testowania.
  • 📝 GitLab CI – wbudowana część GitLab, zapewnia ciągłą integrację i dostarczanie z możliwością konfiguracji poprzez pliki YAML.
  • ☁️ CircleCI – chmurowa usługa CI/CD, wspiera automatyzację testowania i wdrażania dla wielu projektów.
  • 🦑 Travis CI – jeden z pierwszych chmurowych serwisów CI, używany w wielu projektach open source. Dobrze integruje się z GitHub.
  • 🎍 Bamboo – produkt Atlassian, ściśle integruje się z innymi narzędziami tej firmy, takimi jak Jira i Bitbucket.

Nie musisz ich znać ani umieć z nimi pracować – zwykle w firmie są specjaliści DevOps, którzy konfigurują te procesy. Wystarczy, że wiesz, że istnieją, i rozumiesz, o co chodzi, jeśli w rozmowie pojawia się Jenkins, CI/CD lub „continuous integration”.

4. Dostarczamy projekt na serwer

Samo napisanie projektu to za mało – musi on jeszcze trafić na Twój serwer. Ogólnie wdrożenie (deploy) projektu na serwer to proces umieszczenia i uruchomienia aplikacji webowej na serwerze w taki sposób, aby była dostępna dla użytkowników przez internet 🚚.

Proces ten obejmuje przeniesienie plików projektu na serwer, konfigurację środowiska serwerowego, baz danych, zależności, a także ustawienia sieciowe i bezpieczeństwo 😅.

A jak myślisz, jak Twój kod trafi na serwer? Czy ktoś go tam wgra? A może połączysz się przez SSH zdalnie, wrzucisz parę plików i wszystko skonfigurujesz? Spokojnie: tak już nikt nie robi. Teraz jest Docker.

🐳 Docker – to platforma do tworzenia, dostarczania i uruchamiania aplikacji za pomocą kontenerów. Docker upraszcza tworzenie, wdrażanie i uruchamianie aplikacji, pakując je razem ze wszystkimi zależnościami i środowiskiem w jeden zwarty obiekt. Zapewnia to spójność środowiska na wszystkich etapach: od developmentu przez testowanie po produkcję.

Docker pozwala spakować Twój projekt lub projekty do kontenera Docker. To coś w rodzaju maszyny wirtualnej.

I chociaż na każdym forum o Dockerze skrytykują Cię, jeśli nazwiesz go „maszyną wirtualną”, można myśleć o kontenerze Dockera właśnie jak o maszynie wirtualnej – tylko znacznie lżejszej.

W gruncie rzeczy kontener Docker to „maszyna wirtualna”. Maszyny wirtualne zawierają pełną kopię systemu operacyjnego, jądro OS i wirtualny sprzęt, podczas gdy kontenery Dockera współdzielą jądro hosta i mogą być lżejsze oraz szybsze .

Wdrożenie projektu przy użyciu Dockera mocno upraszcza proces, zapewniając szybkość i niezawodność. Projekt pakuje się do kontenerów Dockera, które można łatwo przenosić i uruchamiać na dowolnym systemie obsługującym Docker 🚢.

To eliminuje problemy związane z różnicami środowisk serwerowych i pozwala łatwo skalować aplikację, dodając lub usuwając kontenery w zależności od obciążenia. Wszyscy przeszli na Dockera – to bardzo wygodne i bardzo proste.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION