Python dla DevOps. Naucz się bezlitośnie skutecznej automatyzacji - Helion


Tytuł oryginału: Python for DevOps: Learn Ruthlessly Effective Automation
Tłumaczenie: Radosław Meryk
ISBN: 978-83-283-6830-9
stron: 464, Format: 168x237, okładka: miękka
Data wydania: 2020-11-24
Księgarnia: Helion
Cena książki: 57,85 zł (poprzednio: 89,00 zł)
Oszczędzasz: 35% (-31,15 zł)
Ostatnia dekada zmieniła oblicze IT. Kluczowego znaczenia nabrały big data, a chmura i automatyzacja rozpowszechniły się wszędzie tam, gdzie mowa o efektywności. Inżynierowie muszą wykorzystywać zalety systemów linuksowych w codziennej praktyce, aby zapewnić należyty poziom automatyzacji swoich zadań. Do tych celów świetnie nadaje się Python. Język ten zdobywa coraz większe uznanie z uwagi na jego wszechstronność, jak również wydajność, przenaszalność i bezpieczeństwo kodu. Warto więc wykorzystywać Pythona do administrowania systemami Linux wraz z takimi narzędziami DevOps jak Docker, Kubernetes i Terraform.
Dzięki tej książce dowiesz się, jak sobie z tym poradzić. Znalazło się w niej krótkie wprowadzenie do Pythona oraz do automatyzacji przetwarzania tekstu i obsługi systemu plików, a także do pisania własnych narzędzi wiersza poleceń. Zaprezentowano również przydatne narzędzia linuksowe, systemy zarządzania pakietami oraz systemy budowania, monitorowania i automatycznego testowania kodu. Zagadnienia te szczególnie zainteresują specjalistów DevOps. Ponadto zawarto tu podstawowe informacje o chmurze obliczeniowej, usługach IaC i systemach Kubernetes. Omówiono zasady uczenia maszynowego i inżynierii danych z perspektywy DevOps. Przedstawiono także kompletny przewodnik po procesach budowania, wdrażania oraz operacyjnego wykorzystywania modelu uczenia maszynowego z użyciem systemów Flask, sklearn, Docker i Kubernetes.
W tej książce:
- wprowadzenie do Pythona
- automatyczne przetwarzanie tekstu oraz automatyzacja operacji na plikach
- automatyzacja za pomocą sprawdzonych narzędzi linuksowych
- chmura, infrastruktura jako kod, Kubernetes i tryb bezserwerowy
- uczenie maszynowe i inżynieria danych z perspektywy DevOps
- tworzenie i operacjonalizacja projektu uczenia maszynowego
Python: tutaj ważna jest prawdziwa nowoczesność oprogramowania!
Osoby które kupowały "Python dla DevOps. Naucz się bezlitośnie skutecznej automatyzacji", wybierały także:
- Docker. Kurs video. Zostań administratorem systemów IT 118,81 zł, (49,90 zł -58%)
- Python dla DevOps. Naucz się bezlitośnie skutecznej automatyzacji 89,00 zł, (44,50 zł -50%)
- Kubernetes. Tworzenie niezawodnych systemów rozproszonych. Wydanie II 59,00 zł, (29,50 zł -50%)
- Flask. Tworzenie aplikacji internetowych w Pythonie. Wydanie II 59,00 zł, (29,50 zł -50%)
- Ciągłe dostarczanie oprogramowania w języku Java. Najlepsze narzędzia i praktyki wdrażania kodu 69,00 zł, (34,50 zł -50%)
Spis treści
Python dla DevOps. Naucz się bezlitośnie skutecznej automatyzacji -- spis treści
- Przedmowa
- Co DevOps oznacza dla autorów?
- Jak korzystać z tej książki?
- Tematy
- Konwencje używane w tej książce
- Korzystanie z przykładów kodu
- Podziękowania
- Noah
- Kennedy
- Alfredo
- Grig
- Rozdział 1. Podstawy Pythona dla DevOps
- Instalowanie i uruchamianie Pythona
- Powłoka Pythona
- Skrypty Pythona
- IPython
- Jupyter Notebooks
- Powłoka Pythona
- Programowanie proceduralne
- Zmienne
- Podstawowe operacje arytmetyczne
- Komentarze
- Funkcje wbudowane
- Range
- Sterowanie przepływem kodu
- If-elif-else
- Pętle for
- Instrukcja continue
- Pętle while
- Obsługa wyjątków
- Obiekty wbudowane
- Czym jest obiekt?
- Metody i atrybuty obiektu
- Sekwencje
- Operacje na sekwencjach
- Listy
- Ciągi znaków
- Słowniki
- Funkcje
- Anatomia funkcji
- Funkcje jako obiekty
- Funkcje anonimowe
- Korzystanie z wyrażeń regularnych
- Wyszukiwanie
- Zbiory znaków
- Klasy znaków
- Grupy
- Grupy nazwane
- Znajdź wszystko
- Iterator wyszukiwania
- Podstawianie
- Kompilowanie
- Leniwe wartościowanie
- Generatory
- Generatory składane
- Dodatkowe funkcjonalności IPythona
- Korzystanie z IPythona do uruchamiania poleceń powłoki Unix
- Korzystanie z magicznych poleceń IPythona
- Korzystanie z IPythona do uruchamiania poleceń powłoki Unix
- Ćwiczenia
- Instalowanie i uruchamianie Pythona
- Rozdział 2. Automatyzacja zadań dotyczących plików i systemu plików
- Odczytywanie i zapisywanie plików
- Korzystanie z wyrażeń regularnych do wyszukiwania tekstu
- Przetwarzanie dużych plików
- Szyfrowanie tekstu
- Haszowanie z wykorzystaniem pakietu hashlib
- Szyfrowanie z wykorzystaniem biblioteki cryptography
- Moduł os
- Zarządzanie plikami i katalogami za pomocą modułu os.path
- Przeglądanie drzew katalogów za pomocą funkcji os.walk
- Ścieżki jako obiekty modułu pathlib
- Rozdział 3. Praca w wierszu polecenia
- Praca w środowisku powłoki
- Komunikacja z interpreterem za pomocą modułu sys
- Wykonywanie zadań w systemie operacyjnym z wykorzystaniem modułu os
- Inicjowanie procesów za pomocą modułu subprocess
- Tworzenie narzędzi wiersza polecenia
- Atrybut sys.argv
- argparse
- Pakiet click
- Moduł fire
- Implementowanie wtyczek
- Studium przypadku: Turbodoładowanie Pythona za pomocą narzędzi wiersza polecenia
- Kompilator Just-in-Time (JIT) Numba
- Korzystanie z GPU w Pythonie za pomocą frameworka CUDA
- Uruchamianie w Pythonie kodu na wielu rdzeniach i w wielu wątkach z wykorzystaniem modułu Numba
- Klasteryzacja z wykorzystaniem modułu KMeans
- Ćwiczenia
- Praca w środowisku powłoki
- Rozdział 4. Przydatne narzędzia systemu Linux
- Narzędzia dyskowe
- Pomiar wydajności
- Dokładne testy z fio
- Partycje
- Odczytywanie specyficznych informacji o urządzeniu
- Pomiar wydajności
- Narzędzia sieciowe
- Tunelowanie SSH
- Pomiar wydajności HTTP za pomocą Apache Benchmark (ab)
- Testowanie obciążenia za pomocą narzędzia molotov
- Narzędzia do badania CPU
- Przeglądanie procesów za pomocą htop
- Korzystanie z Bash i ZSH
- Personalizacja powłoki Pythona
- Rekurencyjny globbing
- Wyszukiwanie i zamiana z pytaniami o potwierdzenie
- Usuwanie tymczasowych plików Pythona
- Wyświetlanie listy procesów i jej filtrowanie
- Uniksowe znaczniki czasu
- Łączenie możliwości Pythona z powłoką Bash i ZSH
- Generator losowych haseł
- Czy mój moduł istnieje?
- Zmiana katalogów na ścieżki do modułów
- Konwersja pliku CSV na JSON
- Jednowierszowe skrypty w Pythonie
- Debugery
- Jak szybko działa ten fragment kodu?
- strace
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Narzędzia dyskowe
- Rozdział 5. Zarządzanie pakietami
- Dlaczego tworzenie pakietów jest ważne?
- Kiedy tworzenie pakietu może być niepotrzebne?
- Wytyczne dotyczące tworzenia pakietów
- Opisowe wersjonowanie
- Rejestr zmian
- Wybór strategii
- Sposoby tworzenia pakietów
- Natywny pakiet Pythona
- Dodawanie plików do pakietów
- Skorowidz PyPI
- Hosting wewnętrznego repozytorium PyPI
- Pakiety w stylu Debiana
- Dodawanie plików do pakietów
- Generowanie binariów
- Repozytoria Debiana
- Pakiety RPM
- Plik spec
- Generowanie binariów
- Repozytoria RPM
- Natywny pakiet Pythona
- Zarządzanie za pomocą systemd
- Procesy długotrwałe
- Konfiguracja
- Plik modułu systemd
- Instalacja modułu
- Obsługa logów
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Dlaczego tworzenie pakietów jest ważne?
- Rozdział 6. Continuous Integration i Continuous Deployment
- Studium przypadku: konwersja źle utrzymywanej witryny bazującej na WordPressie do Hugo
- Konfigurowanie Hugo
- Konwersja witryny WordPress na posty Hugo
- Utworzenie indeksu Algolia i jego uaktualnienie
- Automatyzacja za pomocą Makefile
- Instalacja z wykorzystaniem AWS CodePipeline
- Studium przypadku: instalacja aplikacji Python App Engine za pomocą mechanizmu Google Cloud Build
- Studium przypadku: NFSOPS
- Studium przypadku: konwersja źle utrzymywanej witryny bazującej na WordPressie do Hugo
- Rozdział 7. Monitorowanie i logowanie
- Kluczowe pojęcia dotyczące budowania niezawodnych systemów
- Niezmienne zasady DevOps
- Centralne logowanie
- Studium przypadku: produkcyjna baza danych zabija dyski twarde
- Zbudować czy kupić?
- Odporność na błędy
- Monitorowanie
- Graphite
- StatsD
- Prometheus
- Oprzyrządowanie
- Konwencje nazewnictwa
- Logowanie
- Dlaczego konfigurowanie logowania jest trudne?
- basicconfig
- Głębsza konfiguracja
- Powszechne wzorce
- Stos ELK
- Logstash
- Elasticsearch i Kibana
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Rozdział 8. Pytest dla DevOps
- Testowanie za pomocą frameworka pytest
- Pierwsze kroki z pytest
- Testowanie z wykorzystaniem pytest
- Układ plików i obowiązujące konwencje
- Różnice w stosunku do unittest
- Testowanie z wykorzystaniem pytest
- Cechy frameworka pytest
- conftest.py
- Niezwykła funkcja assert
- Parametryzacja
- Fikstury
- Pierwsze kroki
- Fikstury wbudowane
- Testowanie infrastruktury
- Co to jest walidacja systemowa?
- Wprowadzenie do projektu Testinfra
- Nawiązywanie połączeń ze zdalnymi węzłami
- Funkcje i fikstury specjalne
- Przykłady
- Testowanie notatników Jupyter Notebooks z wykorzystaniem frameworka pytest
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Rozdział 9. Chmura obliczeniowa
- Podstawy chmury obliczeniowej
- Rodzaje chmur obliczeniowych
- Rodzaje usług chmury obliczeniowej
- IaaS
- MaaS
- PaaS
- Przetwarzanie bezserwerowe
- SaaS
- Infrastruktura jako kod
- Ciągłe dostawy
- Wirtualizacja i kontenery
- Wirtualizacja sprzętowa
- Sieci SDN
- Magazyny SDS
- Kontenery
- Wyzwania i możliwości przetwarzania rozproszonego
- Współbieżność, wydajność i zarządzanie procesami w dobie chmury obliczeniowej
- Zarządzanie procesami
- Zarządzanie procesami z wykorzystaniem modułu subprocess
- Unikaj instrukcji shell=True
- Ustaw limity czasu i obsługuj je w razie potrzeby
- Problem z wątkami w Pythonie
- Korzystanie z modułu multiprocessing do rozwiązywania problemów
- Rozwidlanie procesów za pomocą funkcji pool()
- FaaS i tryb bezserwerowy
- Wysokowydajny Python z wykorzystaniem pakietu Numba
- Korzystanie z kompilatora Just in Time biblioteki Numba
- Korzystanie z wysokowydajnych serwerów
- Zarządzanie procesami z wykorzystaniem modułu subprocess
- Wniosek
- Ćwiczenia
- Studia przypadków
- Rozdział 10. Infrastruktura jako kod
- Klasyfikacja narzędzi automatyzacji infrastruktury
- Dostarczanie ręczne
- Automatyczne dostarczanie infrastruktury z wykorzystaniem systemu Terraform
- Dostarczanie komory S3
- Dostarczanie certyfikatu SSL z usługi AWS ACM
- Dostarczanie dystrybucji Amazon CloudFront
- Dostarczanie rekordu DNS Route 53
- Kopiowanie statycznych plików do usługi S3
- Usuwanie wszystkich zasobów AWS dostarczonych przez Terraform
- Zautomatyzowane dostarczanie infrastruktury za pomocą systemu Pulumi
- Tworzenie nowego projektu Pythona Pulumi dla usług AWS
- Tworzenie wartości konfiguracyjnych dla stosu staging
- Dostarczanie certyfikatu SSL ACM
- Dostarczanie strefy Route 53 i rekordów DNS
- Dostarczanie dystrybucji CloudFront
- Dostarczanie rekordu DNS Route 53 dla adresu URL witryny
- Tworzenie i wdrażanie nowego stosu
- Ćwiczenia
- Rozdział 11. Technologie kontenerowe: Docker i Docker Compose
- Czym jest kontener Dockera?
- Tworzenie, budowanie, uruchamianie i usuwanie obrazów i kontenerów Dockera
- Publikowanie obrazów Dockera w Rejestrze Dockera
- Uruchamianie kontenera Dockera z tego samego obrazu na innym hoście
- Uruchamianie wielu kontenerów Dockera za pomocą systemu Docker Compose
- Przenoszenie usług docker-compose do nowego hosta i systemu operacyjnego
- Ćwiczenia
- Rozdział 12. Orkiestracja kontenerów: Kubernetes
- Przegląd pojęć związanych z systemem Kubernetes
- Korzystanie z systemu Kompose do tworzenia manifestów Kubernetesa na podstawie pliku docker-compose.yaml
- Instalacja manifestów Kubernetesa w lokalnym klastrze Kubernetesa z wykorzystaniem minikube
- Uruchomienie klastra GKE Kubernetes w GCP za pomocą Pulumi
- Instalacja przykładowej aplikacji Flask do GKE
- Instalacja wykresów Helm Prometheus i Grafana
- Niszczenie klastra GKE
- Ćwiczenia
- Rozdział 13. Technologie bezserwerowe
- Wdrażanie tej samej funkcji Pythona do chmur dostawców z Wielkiej Trójki
- Instalacja frameworka Serverless
- Wdrażanie funkcji Pythona w usłudze AWS Lambda
- Wdrażanie funkcji Pythona na platformie Google Cloud Functions
- Wdrażanie funkcji Pythona w usłudze AWS Lambda
- Wdrażanie funkcji Pythona do platform FaaS działających w trybie self-hosted
- Wdrażanie funkcji Pythona do usługi OpenFaaS
- Konfigurowanie tabeli DynamoDB, funkcji Lambda i metod API Gateway za pomocą AWS CDK
- Ćwiczenia
- Wdrażanie tej samej funkcji Pythona do chmur dostawców z Wielkiej Trójki
- Rozdział 14. MLOps i inżynieria uczenia maszynowego
- Czym jest uczenie maszynowe?
- Nadzorowane uczenie maszynowe
- Pobieranie danych (ang. ingest)
- Eksploracyjna analiza danych (ang. Explorative Data Analysis EDA)
- Statystyki opisowe
- Rozkład gęstości jądra
- Modelowanie
- Model regresji sklearn
- Nadzorowane uczenie maszynowe
- Ekosystem uczenia maszynowego w Pythonie
- Uczenie głębokie z wykorzystaniem frameworka PyTorch
- Regresja z wykorzystaniem PyTorch
- Uczenie głębokie z wykorzystaniem frameworka PyTorch
- Platformy uczenia maszynowego w chmurze
- Model dojrzałości uczenia maszynowego
- Najważniejsza terminologia uczenia maszynowego
- Poziom 1. Formułowanie, identyfikowanie zakresu i definiowanie problemu
- Poziom 2. Ciągłe dostawy danych
- Poziom 3. Ciągłe dostawy oczyszczonych danych
- Poziom 4. Ciągłe dostawy eksploracyjnych analiz danych
- Poziom 5. Ciągłe dostarczania tradycyjnych narzędzi ML i AutoML
- Poziom 6. Operacyjna pętla sprzężenia zwrotnego narzędzi ML
- Model Sklearn Flask z wykorzystaniem systemów Kubernetes i Docker
- Sklearn Flask z wykorzystaniem Kubernetesa i Dockera
- EDA
- Modelowanie
- Podział danych
- Dostrajanie skalowanego algorytmu GBM
- Dopasowywanie modelu
- Ocena
- adhoc_predict
- Przepływ pracy JSON
- Skalowanie danych wejściowych
- Serializacja sklearn
- Deserializacja i prognozowanie
- adhoc_predict z modułu Pickle
- Skalowanie danych wejściowych
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Pytania i zadania kontrolne
- Czym jest uczenie maszynowe?
- Rozdział 15. Inżynieria danych
- Small data
- Obsługa plików typu small data
- Zapis do pliku
- Odczyt z pliku
- Potok generatora używany w celu czytania i przetwarzania wierszy
- Korzystanie z formatu YAML
- Big Data
- Narzędzia Big Data, komponenty i platformy
- Źródła danych
- Systemy plików
- Przechowywanie danych
- Pobieranie strumieni danych w czasie rzeczywistym
- Studium przypadku: budowanie własnego potoku danych
- Inżynieria danych w trybie bezserwerowym
- Korzystanie z usługi AWS Lambda z wykorzystaniem zdarzeń CloudWatch
- Logowanie z wykorzystaniem usług Amazon CloudWatch i AWS Lambda
- Wykorzystanie usługi AWS Lambda w celu zapełniania kolejki w usłudze Amazon Simple Queue Service
- Konfiguracja mechanizmu wyzwalającego zdarzenie CloudWatch
- Tworzenie funkcji Lambda sterowanych zdarzeniami
- Odczyt zdarzeń Amazon SQS z funkcji AWS Lambda
- Wnioski
- Ćwiczenia
- Zadanie związane ze studium przypadku
- Small data
- Rozdział 16. Historie wojenne DevOps i wywiady
- Studio filmowe nie może produkować filmów
- Studio gier nie może opublikować gry
- Uruchomienie skryptów Pythona zajmuje 60 sekund
- Gaszenie pożarów za pomocą pamięci podręcznej i inteligentnej instrumentacji
- Automatyzacja zabierze Ci pracę!
- Antywzorce DevOps
- Brak zautomatyzowanego serwera budowania
- Latanie po omacku
- Trudności w koordynacji jako stan ciągły
- Brak pracy zespołowej
- Jasno sformułowany, wzniosły cel
- Struktura sterowana wynikami
- Kompetentni członkowie zespołu
- Ogólne zaangażowanie
- Klimat współpracy
- Standardy doskonałości
- Zewnętrzne wsparcie i uznanie
- Pryncypialne zarządzanie
- Wywiady
- Glenn Solomon
- Andrew Nguyen
- Gabriella Roman
- Rigoberto Roche
- Jonathan LaCour
- Ville Tuulos
- Joseph Reis
- Teijo Holzer
- Matt Harrison
- Michael Foord
- Zalecenia
- Ćwiczenia
- Wyzwania
- Projekt końcowy
- O autorach
- Kolofon