Bezpieczny release
Join 10,000+ Happy Customers

Dlaczego boisz się wdrożeń na produkcję? (oraz jak to zmienić już teraz)

Ta 5 krokowa metoda pozwala junior i mid developerom wdrażać zmiany bez strachu dzięki zastosowaniu feature flag i cofaniu zmian w 5 sekund. **Autor: Adam Malewski, Lead .NET Developer**

Hero image

Overview

Nerwowe wdrożenie, które zmieniło wszystko

**Była środa 19:00,** jak co tydzień deployowaliśmy zmiany. Zbierali się reprezentanci wszystkich zespołów i zespół wdrożeniowy po kolei klikał pipeline’y, a my sprawdzaliśmy czy wszystko pali się na zielono. Miałem wtedy dyżur i również moja mała zmiana wpadała na produkcję. Nic ciekawego `string` był zmieniany na enum. **Pojedyncza tabela do zmigrowania oraz poprawka jednego endpointa.** Przetestowałem na devie - działa. Potem tester - działa. Deploy na UaT - wszystko hula. No i nie zgadniecie, **wdrożenie na produkcję, aplikacja nie wstaje…** Panika debugging… Przeglądanie logów, moja zmiana… Trywialny case, literówka w bazie danych. Debugging, uzyskiwanie uprawnień write, poprawka, ponowny deploy. Wszystko przedłużyło release o 45 minut. Byłem w kropce, nie wiedziałem co więcej mogę zrobić? Więcej testów? Dłuższe okienka pomiędzy releasami? Nie wprowadzać zmian na istniejących danych? **Wtedy mnie to uderzyło, jeżeli mnie tak stresują wdrożenia, to na pewno setki innych developerów również.**

# Dlaczego wdrożenia są takie nerwowe? (powód może zaskoczyć) Większość developerów myśli, że poprostu tak jest. Nie da się wszystkiego przewidzieć oraz przetestować. Jednakże po setkach wdrożeń w mojej karierze i dyskusjach z innymi programistami zauważyłem powtarzające się problemy: ### Brak planu na rollback Większość programistów, nawet juniorów, planuje jak rozwiąże dane zadanie. Czasami przygotuje Low Level Design (LLD), czasami zacznie od napisania testów, a czasami rozrysuje sobie jak cały proces ma przebiegać. **Jednak mało kto zastanawia się, jak wycofa zmiany** - kliknięcie rollback w CI nie zawsze wystarczy. **Wdrożenia to dużo więcej niż wrzucenie nowego builda.** Wdrożenia to migrowanie danych, aktualizacja schemy, zmiany w konfiguracjach, zmiany na UI. **Dlatego plan jest tak ważny.** Następnym razem przed kliknięciem “merge” zastanów się jakie zmiany zostały wprowadzone i gdzie. Jakie wartości konfiguracyjne były zmienione i jakie były poprzednie wartości, upewnij się, że migracje bazy danych mają zdefiowane skrypty rollbackujące. W kodzie zastosuj feature flagi żeby móc łatwo włączyć i wyłączyć nowe funkcjonalności. ### Zmienianie zamiast dodawania Częstym błędem nie tylko początkujących programistów jest zmienianie istniejącego kodu. **Może Cię to zaskoczy, ale w 90% przypadków możesz dodać nowy kod** i potem zmienić jedną linijkę żeby uruchomić ten nowy kod. Jeżeli nie jesteś w stanie dodać nowej klasy lub metody, bo trzeba by było kopiować setki linijek kodu to oznacza, że serwisy i klasy są zbyt mocno powiązane ze sobą, to należy poprawić. ### Duże feature branche Duży feature wymaga dużego brancha, prawda? Otóż nieprawda. **Mergowanie dużej ilości kodu naraz zawsze będzie powodowało nerwy** i zazwyczaj problemy. Jak więc poradzić sobie z dużymi zmianami? **Merguj kawałki, otestowane i działające.** Jeżeli musisz edytować istniejący kod, to schowaj zmianę za feature flagą, jeżeli dodajesz nowy kod, to poprosty go otestuj i wmerguj. **Merge nie równa się release!**

Upon completion, you'll have the skills to analyze complex datasets, create insightful visualizations, and build predictive models for real-world applications. You'll also understand how to evaluate model performance, tune hyperparameters, and deploy your solutions in production environments.

Complete data science toolkit in 4 weeks

Our hands-on approach ensures you gain practical experience with each concept through real-world projects and guided exercises. From day one, you'll be working with actual datasets and solving problems that data scientists encounter in their daily work.

This course transformed my career path completely. The practical projects helped me build a portfolio that landed me a job as a junior data analyst. The instructors were incredibly supportive and the community of learners provided valuable feedback on my work.

David Chen

David Chen

-

Data Analyst

Students receive access to cloud computing resources, dataset libraries, and industry-standard tools used by professional data scientists. Our virtual lab environment allows you to experiment with large datasets without worrying about hardware limitations or complex setup procedures.

Zmiana wraz z feature flagą

Zwróć uwagę, że stary kod nadal tam jest. To Twoja polisa ubezpieczeniowa.

Moja 5 krokowa metoda

Po tym “fuckupie” zacząłem pracować nad tym jak sprawić, by się to nie powtórzyło. Stworzyłem metodę, którą stosuję przy każdym zadaniu, małym i dużym. I działa w 90% przypadków, nigdy więcej nie siedziałem po nocach naprawiając błędy! **Krok 1: Dodaj** Stwórz funkcjonalność dodając nowy kod, nowe tabele, nowe api. Nie zmianiaj istniejących rozwiązań! **Krok 2: Przetestuj i porównaj** Napisz testy do nowego rozwiązania. Jeżeli ma ono zastąpić już istniejące albo jest to refaktor to skopiuj asercje z istniejących testów - nowy kod ma mieć zwracać takie same rezultaty. **Krok 3: Dodaj flagę** Znajdź szew, czyli miejsce, które wywołuje starą logikę. W miejscu szwa zastąp istniejący kod sprawdzeniem feature flagi. Jeżeli jest wyłączona zastosuj stary kod, jeżeli jest włączona uruchom nowe rozwiązanie. Zdeployuj kod z wyłączoną flagą - to jeszcze nie jest pora na release. **Krok 4: Wdróż i obserwuj** Nowy kod jest już zdeployowany, zostaje tylko go uruchomić poprzez przełączenie flagi z off → na on. Po tej zmianie obserwuj środowisko, jeżeli pojawią się błędy wyłącz z powrotem flagę i zacznij naprawiać błędy. Spróbuj ponownie wdrożyć zmienę. **Krok 5: Posprzątaj** Nowy kod działa i korzystają z niego klienci, teraz należy usunąć stare rozwiązanie i usunąć flagę. Nowa funkcjonalność została wdrożona i działa. Na każdym etapie możesz mergować małe zmiany i za każdym razem robić deployment ponieważ kod jest niewidoczny dla klienta. Nigdy nie musisz naprawiać błędów na szybko i na chybił trafił, możesz spokojnie to odłożyć na następny dzień.

Our active learning community provides networking opportunities, code reviews, and collaborative projects to enhance your professional development. Weekly office hours give you direct access to instructors for personalized guidance, and our career services team helps you leverage your new skills in the job market.

Diagram przeniesienia logiki w monolicie z bazy danych na osobny mikroserwis. Przykład ze szkolenia.

Ale co jeśli flaga nie wystarczy?

Będę z Tobą szczery. **Te pięć kroków działa zawsze, ale potrzeba wprawy.** Funkcjonalność może być naprawdę skomplikowana, możesz działać na przestarzałym systemie. Albo może zmieniasz schemę bazy danych i nie wiesz jak zastosować flagę w takim wypadku. I to wszystko jest zrozumiałe, **sam potrzebowałem wielu wdrożeń,** by nauczyć się szukać szwów, planować zmiany i znajdywać proste sposoby na wycofywanie zmian. Jest to czasochłonne i potrafi być stresujące. **Dlatego zamiast szukać samemu odpowiedzi mam dla Ciebie szkolenie, na którym poznasz konkretne strategie jak wdrożyć dowolną zmianę podpartą case study z prawdziwego życia.** Dzięki temu oszczędzisz sobie nerwów, fixów po godzinach i zdenerwowanych klientów.

Jak pomagam programistom wdrażać zmiany pewnie i skutecznie?

Samemu walcząc z nieudanymi wdrożeniami i stresem stworzyłem szkolenie dla developerów, którzy potrzebują konkretnych strategii, a nie generycznych rozwiązań. Metoda nazywa się Switch&Win i pomogła mi i moim zespołom wdrożyć setki funkcjonalności bez przesiadywania po nocach. **To nie jest szkolenie teoretyczne gdzie opowiem o feature flagach.** Jest to kurs naszpikowany przykładami z życia wziętymi, praktyką i konkretnymi strategiami na wdrażanie dowolnych zmian w systemie i ich szybkie wycofywanie. **Ta metoda nie polega na tym, że już nigdy nie popełnisz błędu** albo, że nigdy nie stworzysz nowego “buga”, **ale sprawi, że o tym będziesz wiedział tylko Ty i Twój zespół, nigdy klient.**

10 powodów żeby zapisać się na szkolenie

* **Koniec z „Deployment Anxiety”** – przestaniesz czuć ucisk w żołądku po kliknięciu _Merge_. * **Odzyskasz wieczory i weekendy** – koniec z debugowaniem na produkcji pod presją czasu. * **Nauczysz się myśleć jak Senior** – Senior nie pisze „lepszego” kodu, Senior pisze kod, który da się bezpiecznie wycofać. * **Opanujesz strategię Expand & Contract** – dowiesz się, jak bezpiecznie zmieniać schematy bazy danych bez przestojów. * **Nauczysz się rozmawiać z biznesem** – będziesz mógł powiedzieć: „To już jest na prodzie, włączymy to marketingu, kiedy będą gotowi”. * **Zrozumiesz architekturę „szwów”** – jak wpinać FF w legacy code, by go nie popsuć. * **Poznasz konkretne narzędzia** – nie tylko teoria, ale praktyka w ekosystemie .NET (np. FeatureManagement). * **Dowiesz się, jak nie utonąć w „Flag debt”** – jak zarządzać cyklem życia flag, by nie zostały w kodzie na zawsze. * **Zwiększysz swoją wartość na rynku** – Continuous Deployment to standard w topowych firmach technologicznych. * **Gotowe strategie** – otrzymasz gotowe schematy implementacji dla różnych scenariuszy (API, migracja, zmiana schemy, itd.). \

Ready to get started?

Chcę przestać bać się wdrożeń

Join thousands of satisfied users who have already discovered the power of our platform. Experience the difference for yourself with our risk-free trial.

Program mentoringowy, w którym brałem udział, przygotował mnie do roli full-stack developera. Przez kilka miesięcy współpracowałem z Adamem, zacząłem od ukończenia kursu na Udemy, a skończyliśmy na zbudowaniu pełnej aplikacji webowej. Największym plusem tego programu była praca nad rzeczywistym projektem, którą stworzyliśmy od zera, używając .NETa i Angulara. Proces ten pozwolił mi nie tylko zrozumieć teorię, ale również zdobyć praktyczne doświadczenie w budowaniu kompletnej aplikacji. \ Dzięki wsparciu Adama, czułem się pewnie, kiedy szukałem pracy, i już w krótkim czasie po zakończeniu programu otrzymałem pierwszą ofertę. Obecnie, po ponad dwóch latach pracy jako full-stack developer, mogę śmiało powiedzieć, że udział w tym programie był kluczowym krokiem w mojej karierze IT.

Kuba

Kuba

-

.Net Developer

Zaufali mi

Gdy podjąłem decyzję o zmianie ścieżki kariery z robotyki na IT w pierwszej kolejności wiedzę postanowiłem czerpać z literatury. Informacje wyniesione z książek były bardzo przydatne i stanowiły gruntowny fundament, ale wciąż brakowało mi najważniejszego: jak wykorzystać pozyskaną wiedzę, żeby stworzyć produkt. Wtedy Adam wyciągnął do mnie pomocną dłoń i na przykładzie projektu, który znajduje zastosowanie w rzeczywistym biznesie, krok po kroku nauczył mnie codziennego fachu i najlepszych praktyk oraz rozwiązań, które są standardami w branży. Udzielił mi także wskazówek, które może dać tylko osoba, która od lat pracuje w branży. Wkrótce po skończeniu mojego szkoleniowego projektu znalazłem upragnioną pracę, a pozyskaną wtedy wiedzę stosuję niemal codziennie.

Marcin

Marcin

-

Consultant Programmer

# 100% zwrot kosztów do tygodnia przed szkoleniem! Zarezerwuj miejsce już dziś, odwołaj później i uzyskaj pełen zwrot.

Na koniec...

Wdrożenie na produkcję nie powinno wiązać się ze stresem.

**Wdrożenia powinny być powtarzalne, a zmiany łatwe w cofnięciu,** a noce przespane, a nie spędzone na ślęczeniu nad błędami. Jeżeli masz czas i możliwości w swojej codziennej pracy, by “rozkminić” stosowanie feature flag, to zacznij już od obecnie przypisanego do Ciebie taska, to wszystko kwestia powtarzania i wyciągania wniosków. **Ale jeżeli nie chcesz już testować kolejnych metod, nie chcesz kolejnego męczące wdrożenia. Chcesz poznać gotowe strategie, przetestować je i dostać natychmiastowy feedback to jestem tu po to, aby Ci pomóc.** Najgorsze co możesz zrobić, to czekać na prostsze wdrożenia.