DevOps minimalista

Cześć!

Poznaj mnie

Pomysł

na siebie = DevOps Engineer

Wizja

Oprogramowanie, przy którym pracuję, jest przygotowane do obsługi globalnego zapotrzebowania na jego usługę.

Misja

Wspomagam zespoły Scrum poprzez wykonywanie zadań operacyjnych. Umożliwiam programistom i testerom skupienie się na zadaniach biznesowych i na dowożeniu celów sprintów. Przygotowuję środowisko, które sprzyja wydajnej pracy nad rozwojem aplikacji sieciowych, oraz uruchamiam je na Google Cloud, dbając o ich wysoką dostępność i niezawodność.

Cele

  • Zdefiniować kompleksową i efektywną ścieżkę wdrażania dedykowanego oprogramowania na rynek.
  • Skrócić czas pierwszego wdrożenia aplikacji do 2 tygodni, bez szkody dla jakości infrastruktury.
  • Stale redukować występowanie awarii na produkcji poprzez wczesne wykrywanie problemów.
  • Stale skracać czas przestoju produkcji poprzez sprawne reagowanie na awarie.
  • Stale minimalizować marnotrawstwo czasu i energii zespołu poprzez mądrą automatyzację pracy.

Technologia

Używam narzędzi które kształtują najnowsze standardy w branży.

Certyfikaty

Moja wiedza potwierdzona jest oficjalnymi certyfikatami.

Praktyka

Programuję od 2009 roku.

Zawodowo od 2013.

DevOps robię od 2018.

Role

jakie pełnię w zespołach

DevOps Engineer

Operations - od kodu źródłowego, aż do produkcji.

Platform Engineer

Zajmuję się development platform.

Cloud Engineer

Zajmuję się deployment platform.

Site Reliability Engineer (SRE)

Dbam o niezawodność stateless services.

Database Reliability Engineer (DBRE)

Dbam o niezawodność stateful services.

Zadania

którymi się zajmuję

Budowa

Kompletuję zależności i buduję obrazy Docker z aplikacjami.

Wdrożenia

Uruchamiam kontenery Docker na klastrach Kubernetes.

Automatyzacja

Automatyzuję procesy CI/CD za pomocą narzędzi GitOps.

Utrzymanie

Monitoruję aplikacje 24/7/365 i dbam o ich wysoką dostępność.

Migracje do Google Cloud

Migruję istniejące systemy na chmurę obliczeniową Google.

DevOps golden path

pewny i wypróbowany sposób na rozwój aplikacji chmurowych

Zespół Scrum

Projekt rozpoczyna się od zbudowania zespołu, który posiada wszystkie niezbędne kompetencje do stworzenia produktu.

Scrum Team:

  • Product Owner,
  • Scrum Master,
  • Scrum Developers.

Scrum Events:

  • Sprint,
  • Sprint Planning,
  • Daily Scrum,
  • Sprint Review (aka. demo),
  • Sprint Retrospective.

Scrum Artifacts:

  • Product Backlog,
  • Sprint Backlog,
  • Increment.

Additional recommended practices:

  • Definition of Ready (DoR),
  • Definition of Done (DoD).

Planowanie i przygotowanie

To etap przygotowania, w którym definiowane są wymagania produktu, projektowana jest architektura systemu, wybierane są technologie oraz konfigurowane są podstawowe narzędzia. Celem jest stworzenie solidnych fundamentów dla aplikacji i infrastruktury.

day-0

Zarządzanie zadaniami

Zespół wybiera narzędzie do organizacji pracy i zadań w projekcie.

Most popular Scrum tools:

Architektura aplikacji

Zespół projektuje architekturę aplikacji zgodną z wymaganiami biznesowymi.

Backend services options:

  • monolith,
  • microservices,
  • modular monolith.

Frontend applications options:

  • multi-page application (MPA),
  • single-page application (SPA),
  • server-side rendering (SSR),
  • client-side rendering (CSR),
  • static site generation (SSG), aka. prerendering.

Protokoły sieciowe

Zespół wybiera protokoły komunikacyjne dla szybkiej i bezpiecznej wymiany danych pomiędzy aplikacjami.

Most popular application layer protocols:

Konta użytkowników

Zespół ustala metody logowania użytkowników do aplikacji i zarządzania ich uprawnieniami.

Most popular authentication (AuthN) methods:

  • username and password combination,
  • one-time password (OTP),
  • two-factor authenticaton (2FA),
  • single sign-on (SSO).

Most popular SSO protocols:

Most popular OAuth2 providers:

  • Google,
  • Facebook,
  • Microsoft,
  • X (Twitter).

Most popular authorization (AuthZ) security models:

  • access-control list (ACL),
  • role-based access control (RBAC).

Globalizacja aplikacji

Zespół ustala jakie aspekty globalizacji ma wspierać ich aplikacja dla różnych regionów świata.

Basic things to consider:

  • user profile settings:
    • language,
    • country,
    • timezone,
    • date and time format,
    • first day of the week,
    • currency,
  • text translations.

Serwisy wspierające

Zespół dobiera serwisy wspierające takie jak bazy danych, serwisy do wysyłania maili czy platformy płatności.

Things to consider:

  • database (relational, document, key-value, wide-column, graph, time series, search engine),
  • file storage,
  • message queue,
  • mailing service,
  • notification service (for web browsers, for mobile devices),
  • auth platform, aka. customer identity and access management (CIAM),
  • payment gateway,
  • feature flags service.

Platforma programistyczna

Zespół wybiera narzędzia i technologie potrzebne do efektywnego rozwoju aplikacji.

Things to consider:

  • programming language,
    • runtime environment (RTE),
    • software development kit (SDK),
    • integrated development environment (IDE),
  • package manager,
  • vulnerability scanner,
  • code formatter,
  • code linter,
  • version control system (VCS),
  • application framework,
  • testing framework,
  • database migrations & seeding tool.

Automatyzacja testów

Zespół określa jakie rodzaje testów automatycznych będzie stosować podczas rozwoju aplikacji.

Test types:

  • unit tests,
  • API tests,
  • E2E tests,
  • smoke tests.

Testing approach:

  • Test-Driven Development (TDD),
  • Behavioral-Driven Development (BDD); see also Gherkin.

Środowiska testowe

Zespół określa jakich środowisk będą używać podczas testowania aplikacji.

Examples:

  • local / development,
  • integration,
  • staging,
  • demo.

Wdrożenia produkcyjne

Zespół określa jak aplikacja będzie wdrożona na środowisko produkcyjne.

Deployment regions (see Google Cloud regions):

  • one global instance (example.com),
  • one instance per continent (eu.example.com, as.example.com),
  • one instance per country (pl.example.com, de.example.com).

Deployment architectures:

  • multi-tenant,
  • single-tenant.

Platforma wdrożeniowa

DevOps wybierają narzędzia potrzebne do wdrożenia wysokodostępnych aplikacji.

Recommended stack:

Kopie zapasowe danych

DevOps planują system tworzenia kopii zapasowych.

Monitorowanie

DevOps wybierają narzędzia do monitorowania infrastruktury i aplikacji.

Recommended stack:

Wersjonowanie oprogramowania

Zespół wybiera strategię wersjonowania aplikacji.

Most popular versioning strategies:

Most popular changelog formats:

Kod źródłowy

Zespół ustala zasady pracy z kodem źródłowym.

Most popular Git branching models:

Most popular Git commit messages formats:

Repozytoria

DevOps wybierają rejestry dla kodu źródłowego i wybudowanych artefaktów.

Recommended code registries:

Strategies for organizing code repositories:

Recommended artifact registries:

Automatyzacja pracy

DevOps dobierają narzędzia do automatyzacji procesów budowy, testowania i wdrażania aplikacji.

Recommended build servers:

Dokumentacja projektów

Zespół wybiera narzędzia do dokumentowania projektu i API sieciowego.

Most popular documentation tools:

Budowa i uruchomienie

To etap, w którym aplikacja i infrastruktura są budowane, konfigurowane i wdrażane. System zostaje uruchomiony i zaczyna działać.

day-1

Repozytoria

DevOps tworzą repozytoria na kod źródłowy i wybudowane artefakty.

Things to consider:

Konfiguracja projektów

Programiści instalują frameworki i przygotowują aplikację do pierwszego uruchomienia.

Things to remind:

Lokalne środowisko deweloperskie

DevOps przygotowują środowisko deweloperskie do lokalnej pracy z aplikacją.

Things to consider:

Logika biznesowa ✅

Programiści implementują pierwsze funkcje aplikacji dostarczające wartość dla użytkowników.

Platforma wdrożeniowa

DevOps tworzą i konfigurują platformę na której uruchomione będą aplikacje.

Recommended cloud components:

  • VPC network,
  • GKE cluster,
  • VPC egress (IP address, NAT mapping),
  • VPC ingress (IP address, DNS records, SSL/TLS certificates),
  • VPC firewall.

Zarządzanie sekretami

DevOps tworzą bezpieczne mechanizmy przechowywania konfiguracji niejawnej.

Wdrożenie aplikacji ✅

DevOps wdrażają aplikację zapewniając jej wysoką dostępność i odporność na awarie.

Recommended features:

  • high availability,
  • fault tolerance,
  • horizontal autoscaling,
  • load balancing,
  • zero-downtime deployments (e.g. rolling updates),
  • immutable deployments,
  • instances auto-healing.

Automatyzacja wdrożeń

DevOps konfigurują pipeline CI/CD do automatycznego budowania i wdrażania aplikacji.

Recommended pipeline steps:

  • dependencies vulnerability check,
  • build,
  • code format check,
  • code lint check,
  • run code tests,
  • deploy to integration environment (Continuous Integration),
    • run smoke tests,
    • run system tests,
  • deploy to staging environment (Continuous Delivery),
    • run smoke tests,
  • deploy to production environment (Continuous Deployment),
    • run smoke tests.

Kopie zapasowe danych

DevOps konfigurują automatyczne tworzenie kopii zapasowych i testują odzyskiwanie utraconych danych.

Recommended features:

  • scheduled backups,
  • restore on demand.

Monitorowanie

DevOps uruchamiają system monitorowania. Gromadzą logi, metryki i trasy, a następnie je wizualizują.

Recommended actions:

  • collect logs,
  • collect metrics,
  • collect traces,
  • visualize system state,
  • collect Service Level Indicators (SLI) to assess Service Level Objectives (SLO) and monitor Service Level Agreements (SLA),
  • predict issues,
  • alert issues.

Obserwacja i utrzymanie

To etap ciągłego zarządzania, monitorowania i optymalizacji działającego systemu. Skupia się na zapewnieniu niezawodności, skalowalności i wydajności.

day-2

Zarządzanie dostępami

DevOps zarządzają dostępem i uprawnieniami do zasobów chmury obliczeniowej.

Ciągłe wdrażanie ✅

Programiści stale rozwijają aplikację i dostarczają nowe funkcjonalności zgodnie z metodyką Scrum.

Zarządzanie incydentami

DevOps monitorują infrastrukturę i reagują na incydenty zapewniając stałą dostępność systemu.

Recommended practices:

  • incident response,
  • on-call duties,
  • disaster recovery plan (DRP).

Optymalizacja kosztów

DevOps analizują wykorzystanie zasobów infrastruktury i optymalizują koszty chmury obliczeniowej.

Recommended tools:

Audyty bezpieczeństwa

DevOps przeprowadzają audyty w celu zapewnienia bezpieczeństwa infrastruktury.

Aktualizacje oprogramowania

DevOps okresowo przeprowadzają aktualizacje wykorzystywanych narzędzi.

Narzędzia

których używam w codziennej pracy

Kubernetes framework

projekt infrastructure as code, który opieram na moim wieloletnim doświadczeniu i który mogę użyć do pracy przy Twoim produkcie

To do

build your app
deploy your app
automate builds and deployments

In progress

Done

GCP projects as code
VPC networks as code
GKE clusters as code
base Docker images
deploy example app
monitor example app uptime
alert example app downtime

Projekty

w których biorę udział

Start-up

Wspieram startupy w szybkim wejściu na rynek, testowaniu pomysłów i częstym wdrażaniu nowych wersji.

Priorytety:

  • uruchomienie infrastruktury,
  • wdrożenie aplikacji,
  • automatyzacja wdrożeń,
  • monitorowanie aktywności użytkowników,
  • przeprowadzanie testów A/B.

Scale-up

Pomagam firmom podczas poszerzania swoich zasięgów. Przygotowuję produkt do wzrostu liczby użytkowników. Dbam o niezawodność infrastruktury i stałą dostępność aplikacji.

Wymagania:

  • automatyczne skalowanie infrastruktury,
  • monitorowanie stanu i kondycji infrastruktury,
  • zapewnienie wysokiej dostępności aplikacji,
  • minimalizowanie przestojów aplikacji,
  • automatyzacja CI/CD wspomagająca zachowanie wysokiej jakości kodu źródłowego.

Usługi

jakie mogę Ci zaoferować

DevOps as a service

Wykonuję zadania DevOps w oparciu o logowanie czasu pracy i stawkę godzinową.

DevOps on demand

Wykonuję konkretnie zdefiniowane zadania za konkretnie ustaloną kwotę.

DevOps on-call duty

Utrzymuję środowiska produkcyjne poza standardowymi godzinami pracy.

DevOps consultations

Doradzam w zakresie rozwoju i wdrażania oprogramowania na chmury obliczeniowe.

DevOps audits

Sprawdzam poziom kultury DevOps w Twojej organizacji i wskazuję obszary do poprawy.

DevOps trainings

Uczę Docker, Kubernetes, Terraform i Google Cloud, a także ich praktycznego zastosowania.

DevOps mentoring

Towarzyszę w świadomym planowaniu ścieżki zawodowej i rozwoju umiejętności.

Blog

Pozostańmy w kontakcie

mail, chat, meet

calling cat