Ciagle_dostarczanie_oprogramowania_Kompletny_przewodnik_cidokp.pdf

(802 KB) Pobierz
Tytuł oryginału: A Practical Guide to Continuous Delivery
Tłumaczenie: Tomasz Walczak
ISBN: 978-83-283-3784-8
Authorized translation from the English language edition, entitled: A PRACTICAL GUIDE TO
CONTINUOUS DELIVERY; ISBN 0134691474; by Eberhard Wolff; published by Pearson Education, Inc,
publishing as Addison-Wesley Professional. Copyright © 2017 Pearson Education, Inc.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
eleetronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc.
Polish language edition published by HELION SA. Copyright © 2018.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/cidokp
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Podziękowania ............................................................................................................................... 13
O autorze ........................................................................................................................................ 14
Wprowadzenie ............................................................................................................................... 15
Część I. Podstawy ......................................................................................... 21
Rozdział 1. Ciągłe dostarczanie — co i jak ....................................................................................23
1.1. Wprowadzenie — czym jest ciągłe dostarczanie? .......................................................................23
1.2. Dlaczego udostępnianie oprogramowania jest tak skomplikowane? .......................................23
1.2.1. Ciągła integracja daje nadzieję ......................................................................................... 24
1.2.2. Powolne i ryzykowne procesy ............................................................................................ 24
1.2.3. Szybka praca jest możliwa ................................................................................................. 24
1.3. Wartość ciągłego dostarczania .......................................................................................................24
1.3.1. Regularność ......................................................................................................................... 25
1.3.2. Możliwość śledzenia i sprawdzalność zmian .................................................................... 25
1.3.3. Regresja ............................................................................................................................... 26
1.4. Korzyści płynące z ciągłego dostarczania .....................................................................................26
1.4.1. Ciągłe dostarczanie w celu przyspieszenia udostępniania .............................................. 26
1.4.2. Przykład .............................................................................................................................. 27
1.4.3. Implementowanie funkcji i udostępnianie jej w środowisku produkcyjnym ................. 27
1.4.4. Przejście do następnej funkcji ............................................................................................ 27
1.4.5. Ciągłe dostarczanie zapewnia przewagę konkurencyjną ................................................ 27
1.4.6. Scenariusz bez ciągłego dostarczania ............................................................................... 28
1.4.7. Ciągłe dostarczanie i Lean Startup ................................................................................... 28
1.4.8. Wpływ na proces rozwoju produktu ................................................................................. 28
1.4.9. Minimalizowanie ryzyka za pomocą ciągłego dostarczania ........................................... 29
1.4.10. Szybsze informacje zwrotne i podejście Lean .................................................................. 32
Kup książkę
Poleć książkę
6
S
PIS TREŚCI
1.5. Procesy generowania i struktura potoku ciągłego dostarczania ...............................................32
1.5.1. Przykład .............................................................................................................................. 34
1.6. Wnioski .............................................................................................................................................35
Rozdział 2. Zapewnianie infrastruktury ....................................................................................... 37
2.1. Wprowadzenie .................................................................................................................................37
2.1.1. Automatyzowanie infrastruktury — przykład ................................................................ 38
2.2. Skrypty instalacyjne .........................................................................................................................38
2.2.1. Problemy związane ze standardowymi skryptami instalacyjnymi ................................. 38
2.3. Chef ....................................................................................................................................................41
2.3.1. Chef a Puppet ..................................................................................................................... 41
2.3.2. Inne możliwości .................................................................................................................. 42
2.3.3. Podstawy techniczne .......................................................................................................... 43
2.3.4. Chef Solo ............................................................................................................................. 48
2.3.5. Chef Solo — wnioski .......................................................................................................... 49
2.3.6. Knife i Chef Server .............................................................................................................. 49
2.3.7. Chef Server — wnioski ....................................................................................................... 52
2.4. Vagrant ..............................................................................................................................................53
2.4.1. Przykład zastosowania Chefa i Vagranta ........................................................................ 54
2.4.2. Vagrant — wnioski ............................................................................................................ 56
2.5. Docker ...............................................................................................................................................56
2.5.1. Rozwiązanie oparte na Dockerze ...................................................................................... 56
2.5.2. Tworzenie kontenerów Dockera ........................................................................................ 58
2.5.3. Uruchamianie przykładowej aplikacji za pomocą Dockera ........................................... 60
2.5.4. Docker i Vagrant ................................................................................................................ 62
2.5.5. Docker Machine ................................................................................................................. 63
2.5.6. Tworzenie złożonych konfiguracji za pomocą Dockera .................................................. 65
2.5.7. Docker Compose ................................................................................................................. 67
2.6. Niemodyfikowalny serwer ..............................................................................................................69
2.6.1. Wady idempotencji ............................................................................................................ 69
2.6.2. Serwer niemodyfikowalny i Docker .................................................................................. 69
2.7. Infrastruktura jako kod ...................................................................................................................70
2.7.1. Testowanie infrastruktury w postaci kodu ....................................................................... 71
2.8. Platforma jako usługa ......................................................................................................................72
2.9. Obsługa danych i baz ......................................................................................................................73
2.9.1. Zarządzanie schematami .................................................................................................. 74
2.9.2. Dane testowe i główne ........................................................................................................ 75
2.10. Wnioski ...........................................................................................................................................76
Kup książkę
Poleć książkę
S
PIS TREŚCI
7
Część II. Potok ciągłego dostarczania ......................................................... 77
Rozdział 3. Automatyzacja procesu budowania i ciągła integracja ............................................. 79
3.1. Wprowadzenie .................................................................................................................................79
3.1.1. Automatyzacja procesu budowania — przykład ............................................................. 79
3.2. Automatyzowanie procesu budowania i narzędzia do budowania ..........................................80
3.2.1. Narzędzia do budowania w świecie Javy .......................................................................... 80
3.2.2. Ant ....................................................................................................................................... 81
3.2.3. Maven ................................................................................................................................. 82
3.2.4. Gradle .................................................................................................................................. 86
3.2.5. Dodatkowe narzędzia do budowania ............................................................................... 88
3.2.6. Wybór odpowiedniego narzędzia ...................................................................................... 89
3.3. Testy jednostkowe ...........................................................................................................................90
3.3.1. Pisanie dobrych testów jednostkowych ............................................................................. 91
3.3.2. Programowanie sterowane testami ................................................................................... 93
3.3.3. Ruchy Clean Code i Software Craftsmanship .................................................................. 94
3.4. Ciągła integracja ...............................................................................................................................94
3.4.1. Jenkins ................................................................................................................................. 95
3.4.2. Infrastruktura do ciągłej integracji ................................................................................. 100
3.4.3. Wnioski ............................................................................................................................. 101
3.5. Pomiar jakości kodu ..................................................................................................................... 103
3.5.1. SonarQube ........................................................................................................................ 104
3.6. Zarządzanie artefaktami .............................................................................................................. 106
3.6.1. Integracja z procesem budowania ................................................................................... 108
3.6.2. Zaawansowane funkcje repozytoriów ............................................................................. 110
3.7. Wnioski .......................................................................................................................................... 111
Rozdział 4. Testy akceptacyjne .................................................................................................... 113
4.1. Wprowadzenie .............................................................................................................................. 113
4.1.1. Testy akceptacyjne — przykład ....................................................................................... 113
4.2. Piramida testów ............................................................................................................................ 114
4.3. Czym są testy akceptacyjne? ........................................................................................................ 116
4.3.1. Zautomatyzowane testy akceptacyjne ............................................................................ 117
4.3.2. Więcej niż wzrost wydajności .......................................................................................... 117
4.3.3. Testy ręczne ...................................................................................................................... 118
4.3.4. A co z klientem? ................................................................................................................ 118
4.3.5. Testy akceptacyjne a testy jednostkowe .......................................................................... 118
4.3.6. Środowiska testowe .......................................................................................................... 119
4.4. Testy akceptacyjne oparte na interfejsie GUI ........................................................................... 120
4.4.1. Problemy z testami z użyciem interfejsu GUI ................................................................ 120
4.4.2. Stosowanie abstrakcji ....................................................................................................... 120
4.4.3. Automatyzacja z użyciem narzędzia Selenium ............................................................. 121
4.4.4. Interfejs API WebDriver .................................................................................................. 121
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin