Ciagle_dostarczanie_oprogramowania_w_jezyku_Java_Najlepsze_narzedzia_i_praktyki_wdrazania_kodu_ciados.pdf

(2771 KB) Pobierz
Tytuł oryginału: Continuous Delivery in Java: Essential Tools and Best Practices
for Deploying Code to Production
Tłumaczenie: Krzysztof Bąbol (rozdz. 1 – 5), Andrzej Watrak (wstęp, rozdz. 8 – 13),
Lech Lachowski (rozdz. 6, 7, 14, 15)
ISBN: 978-83-283-5633-7
© 2019 Helion S.A.
Authorized Polish translation of the English edition of Continuous Delivery in Java ISBN 9781491986028 ©
2019 Daniel Bryant and Cosota Team Ltd.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all
rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
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 Helion SA 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 Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Helion SA
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/ciados
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/ciados.zip
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Słowa wstępne ......................................................................................................... 13
Wstęp ....................................................................................................................... 17
1. Ciągłe dostarczanie? Dlaczego? Czym jest? ................................................................. 21
Ogólny zarys
Dlaczego? Bo daje możliwości programistom
Szybka informacja zwrotna pozwala ograniczyć zmiany kontekstu
Automatyczne, powtarzalne i niezawodne wydania
Uściślenie definicji ukończenia
Czym jest? Badamy typowy potok budowy
Podstawowe etapy potoku budowy
Wpływ technologii kontenerów
Zmiany we współczesnych architekturach
Podsumowanie
21
22
22
22
23
24
24
28
29
29
2. Ewolucja programowania w języku Java .................................................................... 31
Wymagania współczesnych aplikacji Java
Potrzeba szybkości i stabilności biznesowej
Rozwój ekonomii interfejsów API
Szanse i koszty chmury
Przywrócenie modularności: wykorzystanie niewielkich usług
Wpływ na ciągłe dostarczanie
Ewolucja platform wdrożeniowych w języku Java
Archiwa WAR i EAR: era dominacji serwerów aplikacji
Wykonywalne pliki JAR z zależnościami:
powstanie metodologii dwunastu aspektów
Obrazy kontenerów: ulepszenie przenośności (i zwiększenie złożoności)
Funkcja jako usługa: pojawienie się przetwarzania „bezserwerowego”
Wpływ platform na ciągłe dostarczanie
31
32
32
33
33
34
35
35
36
37
37
38
3
Kup książkę
Poleć książkę
Metodyki DevOps, SRE oraz Release Engineering
Rozwój i utrzymanie
Site Reliability Engineering
Inżynieria wydawnicza oprogramowania
Współodpowiedzialność, metryki i wgląd
Podsumowanie
39
39
40
42
43
44
3. Projektowanie architektury pod kątem ciągłego dostarczania .................................... 45
Fundamenty dobrej architektury
Luźne sprzężenie
Wysoka spójność
Sprzężenie, spójność i ciągłe dostarczanie
Architektura nakierowana na elastyczność biznesową
Zła architektura ogranicza dynamikę biznesową
Złożoność i koszt zmian
Najlepsze rozwiązania dla aplikacji zorientowanych na API
Tworzenie interfejsów API metodą od zewnątrz do wewnątrz
Dobre interfejsy API pomagają w ciągłym testowaniu i dostarczaniu
Platformy wdrażania a architektura
Projektowanie aplikacji natywnych dla chmury według metodologii 12 aspektów
Doskonalenie wyczucia mechaniki
Projektowanie i ciągłe testowanie pod kątem awarii
Podążanie w kierunku niewielkich usług
Wyzwania w dostarczaniu aplikacji monolitycznych
Mikrousługi: architektura zorientowana na usługi
spotyka się z projektowaniem dziedzinowym
Funkcje, architektura Lambda i nanousługi
Architektura: „wszystko to, co trudno zmienić”
Podsumowanie
45
45
47
47
49
49
50
50
51
51
52
52
55
56
57
57
58
59
60
60
4. Platformy wdrożeniowe, infrastruktura i ciągłe dostarczanie aplikacji Java ................ 63
Funkcje zapewniane przez platformę
Niezbędne procesy programistyczne
Platformy oparte o tradycyjną infrastrukturę
Komponenty tradycyjnej platformy
Wyzwania platform opartych o tradycyjną infrastrukturę
Korzyści z bycia tradycyjnym
Ciągła integracja i dostarczanie na platformach opartych o tradycyjną infrastrukturę
Platforma chmury (IaaS)
Zaglądamy w chmurę
Wyzwania chmury
Korzyści z chmury
Ciągłe dostarczanie w chmurze
4
Spis treści
Poleć książkę
63
64
65
65
66
66
67
67
68
69
70
71
Kup książkę
Platforma jako usługa
Zaglądamy w usługę PaaS
Wyzwania platformy PaaS
Korzyści z platformy PaaS
Ciągła integracja i dostarczanie a model PaaS
Kontenery (Docker)
Komponenty platformy kontenerów
Wyzwania technologii kontenerów
Korzyści z kontenerów
Ciągłe dostarczanie kontenerów
Kubernetes
Podstawowe koncepcje platformy Kubernetes
Wyzwania platformy Kubernetes
Korzyści z platformy Kubernetes
Ciągłe dostarczanie na platformie Kubernetes
Funkcja jako usługa (funkcje bezserwerowe)
Koncepcje platformy FaaS
Wyzwania platformy FaaS
Korzyści z platformy FaaS
Ciągła integracja i dostarczanie a model FaaS
Praca z infrastrukturą jako kodem
Podsumowanie
72
72
73
75
75
75
76
76
78
78
78
79
80
81
81
81
82
83
84
84
85
86
5. Budowanie aplikacji w języku Java ............................................................................ 87
Podział procesu budowania
Automatyzacja budowania
Zależności budowania
Zależności zewnętrzne
Projekty wielomodułowe
Wiele repozytoriów (czy jedno)?
Wtyczki
Wydawanie i publikacja artefaktów
Przegląd narzędzi do budowania kodu Java
Ant
Maven
Gradle
Bazel, Pants i Buck
Inne narzędzia do budowania oparte o JVM: SBT i Leiningen
Make
Wybór narzędzia do budowania
Podsumowanie
87
88
89
92
93
93
94
95
95
95
98
102
105
107
107
108
109
Spis treści
Kup książkę
5
Poleć książkę
Zgłoś jeśli naruszono regulamin