Mikroserwisy. Wzorce z przykładami w języku Java
- Autor:
- Chris Richardson
- Wydawnictwo:
- Wydawnictwo Naukowe PWN
- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 504
- Dostępne formaty:
-
ePubMobi
Opis ebooka: Mikroserwisy. Wzorce z przykładami w języku Java
Wybrane bestsellery
-
To dziewiąte wydanie znakomitego podręcznika programowania dla początkujących, starannie zaktualizowane i uzupełnione o informacje dotyczące Java Platform, Standard Edition 17. Książka rozpoczyna się od solidnej dawki wiedzy o kompilacji i uruchamianiu programu w Javie, słowach kluczowych i istot...(77.40 zł najniższa cena z 30 dni)
90.30 zł
129.00 zł(-30%) -
Dzięki tej książce zrozumiesz bazowe koncepcje programowania funkcyjnego i przekonasz się, że możesz włączać je do kodu bez rezygnacji z paradygmatu obiektowego. Dowiesz się również, kiedy w swojej codziennej pracy używać takich opcji jak niemutowalność i funkcje czyste i dlaczego warto to robić....
Java. Podejście funkcyjne. Rozszerzanie obiektowego kodu Javy o zasady programowania funkcyjnego Java. Podejście funkcyjne. Rozszerzanie obiektowego kodu Javy o zasady programowania funkcyjnego
(52.20 zł najniższa cena z 30 dni)60.90 zł
87.00 zł(-30%) -
Java. Podręcznik na start to pozycja idealna dla każdego, kto chce podjąć takie kroki. W przystępny sposób zaznajamia nie tylko z językiem, ale też z podstawowymi koncepcjami stosowanymi podczas programowania - w obrazowy sposób przyrównuje je do sytuacji znanych spoza świata wirtualnego. Autor n...(41.40 zł najniższa cena z 30 dni)
48.30 zł
69.00 zł(-30%) -
Build Your Own Programming Language provides a hands-on approach to designing and implementing programming language features in a simple compiler and programming environment. This book will help you create new or domain-specific languages.
Build Your Own Programming Language. A developer's comprehensive guide to crafting, compiling, and implementing programming languages - Second Edition Build Your Own Programming Language. A developer's comprehensive guide to crafting, compiling, and implementing programming languages - Second Edition
-
Java należy do najpopularniejszych języków programowania na świecie. Używana przez miliony programistów, jest na tyle uniwersalna, że znajduje zastosowanie zarówno w aplikacjach desktopowych, mobilnych, jak i serwerowych, a także w zaawansowanych systemach zarządzania bazami danych. Z jej zalet k...
Java 21. Kurs video. Od "Hello World!" do programowania obiektowego Java 21. Kurs video. Od "Hello World!" do programowania obiektowego
(39.60 zł najniższa cena z 30 dni)54.45 zł
99.00 zł(-45%) -
Oto kolejne wydanie zwięzłego podręcznika dla programistów Javy, który ma ułatwić maksymalne wykorzystanie technologii tego języka w wersji 17. Treść została skrupulatnie przejrzana i uzupełniona o materiał dotyczący nowości w obiektowym modelu Javy. Pierwsza część książki obejmuje wprowadzenie d...(53.40 zł najniższa cena z 30 dni)
62.30 zł
89.00 zł(-30%) -
Kariera zawodowa programisty jest związana z nieustanną nauką i doskonaleniem zdobytych umiejętności. Jednym z podstawowych etapów rozwoju programisty Java jest zaznajomienie się z dobrymi praktykami programistycznymi, co obejmuje także wzorce projektowe – i to im właśnie poświęcony jest te...
Wzorce projektowe w Javie. Kurs video. Programowanie efektywnych rozwiązań Wzorce projektowe w Javie. Kurs video. Programowanie efektywnych rozwiązań
(39.90 zł najniższa cena z 30 dni)81.95 zł
149.00 zł(-45%) -
Oto zaktualizowane i uzupełnione wydanie zwięzłego wprowadzenia do Javy SE 17, przeznaczonego dla profesjonalnych programistów Javy. Przedstawiono w nim wszystkie istotne zagadnienia, łącznie z takimi koncepcjami jak wyrażenia lambda i strumienie, nowoczesnymi konstrukcjami, jak rekordy i klasy z...
Java. Przewodnik doświadczonego programisty. Wydanie III Java. Przewodnik doświadczonego programisty. Wydanie III
(53.40 zł najniższa cena z 30 dni)62.30 zł
89.00 zł(-30%) -
This practical guide teaches inexperienced Java programmers and web developers how to design, develop, test, and deploy highly scalable and maintainable APIs using REST, gRPC, GraphQL, and reactive programming paradigms with Java and Spring Boot. Complete with real-world examples, it will guide y...
Modern API Development with Spring 6 and Spring Boot 3. Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3 - Second Edition Modern API Development with Spring 6 and Spring Boot 3. Design scalable, viable, and reactive APIs with REST, gRPC, and GraphQL using Java 17 and Spring Boot 3 - Second Edition
-
Ideal for working programmers new to Java, this best-selling book guides you through the language features and APIs of Java 21. Through fun, compelling, and realistic examples, authors Marc Loy, Patrick Niemeyer, and Dan Leuck introduce you to Java's fundamentals, including its class libraries, p...(245.65 zł najniższa cena z 30 dni)
254.15 zł
299.00 zł(-15%)
Ebooka "Mikroserwisy. Wzorce z przykładami w języku Java" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Mikroserwisy. Wzorce z przykładami w języku Java" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Mikroserwisy. Wzorce z przykładami w języku Java" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- Tłumaczenie:
- Mariusz Rogulski, Magdalena Rogulska
- ISBN Ebooka:
- 978-83-012-1223-0, 9788301212230
- Data wydania ebooka:
- 2020-07-30 Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Numer z katalogu:
- 122182
- Rozmiar pliku ePub:
- 6.5MB
- Rozmiar pliku Mobi:
- 14.6MB
Spis treści ebooka
- Okładka
- Strona tytułowa
- Strona redakcyjna
- Spis treści
- przedmowa
- podziękowania
- o książce
- o autorze
- o ilustracji na okładce
- 1. Ucieczka z monolitycznego piekła
- 1.1. Powolny marsz w kierunku monolitycznego piekła
- 1.1.1. Architektura aplikacji FTGO
- 1.1.2. Zalety architektury monolitycznej
- 1.1.3. Życie w monolitycznym piekle
- Kompleksowość przeraża deweloperów
- Rozwój jest powolny
- Ścieżka od zatwierdzenia do wdrożenia jest długa i mozolna
- Skalowanie jest trudne
- Dostarczanie niezawodnego monolitu jest wyzwaniem
- Blokada w coraz bardziej przestarzałym stosie technologicznym
- 1.1. Powolny marsz w kierunku monolitycznego piekła
- 1.2. Dlaczego ta książka jest dla ciebie odpowiednia
- 1.3. Czego się nauczysz z tej książki?
- 1.4. Architektura mikroserwisowa na ratunek
- 1.4.1. Sześcian skal i mikroserwisy
- Skalowanie w osi X równoważy obciążenia dotyczące żądań między wiele instancji
- Skalowanie w osi Z trasuje żądania na podstawie atrybutu żądania
- Skalowanie w osi Y funkcjonalnie rozkłada aplikację na usługi
- 1.4.1. Sześcian skal i mikroserwisy
- 1.4.2. Mikroserwisy jako forma modułowości
- 1.4.3. Każda usługa ma własną bazę danych
- 1.4.4. Architektura mikroserwisowa FTGO
- 1.4.5. Porównanie architektury mikroserwisowej i SOA
- 1.5. Zalety i wady architektury mikroserwisowej
- 1.5.1. Zalety architektury mikroserwisowej
- Umożliwianie ciągłego dostarczania i wdrażania dużych, złożonych aplikacji
- Każda usługa jest mała i łatwa w utrzymaniu
- Usługi są niezależnie skalowalne
- Lepsza izolacja błędów
- Łatwe eksperymentowanie i wdrażanie nowych technologii
- 1.5.1. Zalety architektury mikroserwisowej
- 1.5.2. Wady architektury mikroserwisowej
- Znalezienie odpowiednich usług jest trudne
- Systemy rozproszone są złożone
- Wdrażanie funkcjonalności obejmujących wiele usług wymaga starannej koordynacji
- Decyzja o przyjęciu jest trudna
- 1.6. Język wzorców architektury mikroserwisowej
- 1.6.1. Architektura mikroserwisowa nie jest złotym środkiem
- 1.6.2. Wzorce i języki wzorców
- Wzorce powiązane: pięć różnych rodzajów relacji
- 1.6.3. Omówienie języka wzorców architektury mikroserwisowej
- Wzorce do dekompozycji aplikacji na usługi
- Wzorce komunikacyjne
- Wzorce spójności danych do wdrażania zarządzania transakcjami
- Wzorce odpytywania danych w architekturze mikroserwisowej
- Wzorce wdrażania usług
- Wzorce obserwowalności zapewniają wgląd w zachowanie aplikacji
- Wzorce automatycznego testowania usług
- Wzorce do obsługi potrzeb przekrojowych
- Wzorce bezpieczeństwa
- 1.7. Poza mikroserwisy: proces i organizacja
- 1.7.1. Tworzenie oprogramowania i organizacja dostarczania
- 1.7.2. Proces tworzenia i dostarczania oprogramowania
- 1.7.3. Ludzka strona wprowadzania mikroserwisów
- 2. Strategie dekompozycyjne
- 2.1. Czym dokładnie jest architektura mikroserwisowa?
- 2.1.1. Czym jest architektura oprogramowania i dlaczego ma ona znaczenie?
- Definicja architektury oprogramowania
- Model perspektyw 4+1 w architekturze oprogramowania
- Dlaczego architektura jest ważna
- 2.1.1. Czym jest architektura oprogramowania i dlaczego ma ona znaczenie?
- 2.1.2. Przegląd stylów architektonicznych
- Styl: architektura warstwowa
- Styl: architektura heksagonalna
- 2.1. Czym dokładnie jest architektura mikroserwisowa?
- 2.1.3. Architektura mikroserwisowa jest stylem architektonicznym
- Co to jest usługa?
- Czym są luźne powiązania?
- Rola współdzielonych bibliotek
- Rozmiar usługi jest w zasadzie nieważny
- 2.2. Definiowanie architektury mikroserwisowej aplikacji
- 2.2.1. Identyfikowanie operacji systemu
- Tworzenie wysokopoziomowego modelu domeny
- Definiowanie operacji systemu
- 2.2.1. Identyfikowanie operacji systemu
- 2.2.2. Definiowanie usług z zastosowaniem wzorca dekompozycji według zdolności biznesowych
- Zdolności biznesowe określają, co robi organizacja
- Identyfikowanie zdolności biznesowych
- Od zdolności biznesowych do usług
- 2.2.3. Definiowanie usług z zastosowaniem dekompozycji według wzorca subdomeny
- 2.2.4. Wytyczne dotyczące dekompozycji
- Zasada pojedynczej odpowiedzialności
- Reguła wspólnego domknięcia
- 2.2.5. Przeszkody w dekompozycji aplikacji na usługi
- Opóźnienia sieciowe
- Synchroniczna komunikacja międzyprocesowa ogranicza dostępność
- Utrzymanie spójności danych w usługach
- Uzyskanie spójnego widoku danych
- Dekompozycję utrudniają god classes
- 2.2.6. Tworzenie API usług
- Przypisywanie operacji systemu do usług
- Określanie API wymaganego do realizowania współpracy między usługami
- 3. Komunikacja międzyprocesowa w architekturze mikroserwisowej
- 3.1. Przegląd komunikacji międzyprocesowej w architekturze mikroserwisowej
- 3.1.1. Style interakcji
- 3.1.2. Definiowanie API w architekturze mikroserwisowej
- 3.1.3. Ewolucja API
- Użycie semantycznego wersjonowania
- Wprowadzanie drobnych, kompatybilnych wstecznie zmian
- Wprowadzanie istotnych zmian
- 3.1.4. Formaty komunikatów
- Tekstowe formaty komunikatów
- Binarne formaty komunikatów
- 3.1. Przegląd komunikacji międzyprocesowej w architekturze mikroserwisowej
- 3.2. Komunikacja z użyciem wzorca synchronicznego zdalnego wywołania procedury
- 3.2.1. Korzystanie z REST
- Model dojrzałości REST
- Specyfikowanie REST API
- Wyzwania związane z pobieraniem wielu zasobów w jednym żądaniu
- Wyzwania związane z mapowaniem operacji na czasowniki HTTP
- Zalety i wady REST
- 3.2.1. Korzystanie z REST
- 3.2.2. Korzystanie z gRPC
- 3.2.3. Postępowanie w przypadku częściowej awarii z użyciem wzorca bezpiecznika
- Tworzenie solidnych proxy RPI
- Reagowanie na niedostępne usługi
- 3.2.4. Użycie wykrywania usług
- Wykrywanie usług
- Stosowanie wzorców wykrywania usług na poziomie aplikacji
- Stosowanie wzorców wykrywania usług na poziomie platformy
- 3.3. Komunikacja z użyciem wzorca asynchronicznego przesyłania komunikatów
- 3.3.1. Spojrzenie na przesyłanie komunikatów
- O komunikatach
- O kanałach komunikatów
- 3.3.1. Spojrzenie na przesyłanie komunikatów
- 3.3.2. Realizacja stylów interakcji za pomocą przesyłania komunikatów
- Realizacja żądanie/odpowiedź i asynchroniczne żądanie/odpowiedź
- Realizacja powiadomień jednokierunkowych
- Realizacja publikuj/subskrybuj
- Realizacja publikowanie/asynchroniczna odpowiedź
- 3.3.3. Tworzenie specyfikacji dla API usługi opartego na przesyłaniu komunikatów
- Dokumentowanie operacji asynchronicznych
- Dokumentowanie publikowanych zdarzeń
- 3.3.4. Użycie brokera komunikatów
- Przesyłanie komunikatów bez brokera
- Przesyłanie komunikatów oparte na brokerze
- Realizacja kanałów komunikatów za pomocą brokera
- Zalety i wady przesyłania komunikatów przez brokerów
- 3.3.5. Konkurujący odbiorcy i sortowanie komunikatów
- 3.3.6. Obsługa zduplikowanych komunikatów
- Tworzenie idempotentnej obsługi komunikatów
- Śledzenie komunikatów i odrzucanie duplikatów
- 3.3.7. Komunikaty transakcyjne
- Użycie tabeli bazy danych jako kolejki komunikatów
- Publikowanie zdarzeń z użyciem wzorca publikatora z przeszukiwaniem
- Publikowanie zdarzeń z zastosowaniem wzorca śledzenie dziennika transakcji
- 3.3.8. Biblioteki i frameworki do przesyłania komunikatów
- Proste przesyłanie komunikatów
- Publikowanie zdarzeń domenowych
- Przesyłanie komunikatów oparte na poleceniu/odpowiedzi
- 3.4. Użycie asynchronicznego przesyłania komunikatów w celu poprawy dostępności
- 3.4.1. Komunikacja synchroniczna zmniejsza dostępność
- 3.4.2. Eliminowanie interakcji synchronicznych
- Użycie asynchronicznych stylów interakcji
- Replikacja danych
- Zakończenie przetwarzania po zwróceniu odpowiedzi
- 4. Zarządzanie transakcjami z użyciem sag
- 4.1. Zarządzanie transakcjami w architekturze mikroserwisowej
- 4.1.1. Potrzeba transakcji rozproszonych w architekturze mikroserwisowej
- 4.1.2. Problem z rozproszonymi transakcjami
- 4.1.3. Użycie wzorca sagi do zarządzania spójnością danych
- Przykładowa saga: Create Order Saga
- Do wycofania zmian sagi wykorzystują transakcje kompensujące
- 4.1. Zarządzanie transakcjami w architekturze mikroserwisowej
- 4.2. Koordynowanie sag
- 4.2.1. Sagi oparte na choreografii
- Realizacja Create Order Saga z wykorzystaniem choreografii
- Niezawodna komunikacja oparta na zdarzeniach
- Zalety i wady sag opartych na choreografii
- 4.2.1. Sagi oparte na choreografii
- 4.2.2. Sagi oparte na orkiestracji
- Realizacja Create Order Saga z wykorzystaniem orkiestracji
- Modelowanie orkiestratorów sagi jako maszyn stanów
- Orkiestracja sagi i komunikaty transakcyjne
- Zalety i wady sag opartych na orkiestracji
- 4.3. Radzenie sobie z brakiem izolacji
- 4.3.1. Przegląd anomalii
- Utracone aktualizacje
- Brudne odczyty
- 4.3.1. Przegląd anomalii
- 4.3.2. Przeciwdziałania związane z brakiem izolacji
- Struktura sagi
- Blokada semantyczna
- Aktualizacje przemienne
- Podejście pesymistyczne
- Ponowne odczytanie wartości
- Rejestr kroków
- Według korzyści
- 4.4. Projekt usługi Order Service i sagi Create Order Saga
- 4.4.1. Klasa OrderService
- 4.4.2. Implementacja Create Order Saga
- Orkiestrator CreateOrderSaga
- Klasa CreateOrderSagaState
- Klasa KitchenServiceProxy
- Framework Eventuate Tram Saga
- 4.4.3. Klasa OrderCommandHandlers
- 4.4.4. Klasa OrderServiceConfiguration
- 5. Projektowanie logiki biznesowej w architekturze mikroserwisowej
- 5.1. Wzorce organizacji logiki biznesowej
- 5.1.1. Projektowanie logiki biznesowej z użyciem wzorca skryptu transakcji
- 5.1.2. Projektowanie logiki biznesowej z użyciem wzorca modelu domeny
- 5.1.3. Domain-Driven Design
- 5.1. Wzorce organizacji logiki biznesowej
- 5.2. Projektowanie modelu domeny z użyciem wzorca agregatu DDD
- 5.2.1. Problem z rozmytymi granicami
- 5.2.2. Agregaty mają wyraźne granice
- Agregaty są granicami spójności
- Kluczowa jest identyfikacja agregatów
- 5.2.3. Zasady agregatów
- Zasada 1: Odniesienie tylko do korzenia agregatu
- Zasada 2: Odniesienia między agregatami muszą korzystać z kluczy głównych
- Zasada 3: Jedna transakcja tworzy lub aktualizuje jeden agregat
- 5.2.4. Ziarnistość agregatu
- 5.2.5. Projektowanie logiki biznesowej z agregatami
- 5.3. Publikowanie zdarzeń domenowych
- 5.3.1. Dlaczego publikować zdarzenia związane ze zmianą stanu?
- 5.3.2. Czym jest zdarzenie domenowe?
- 5.3.3. Wzbogacanie zdarzeń
- 5.3.4. Identyfikowanie zdarzeń domenowych
- 5.3.5. Generowanie i publikowanie zdarzeń domenowych
- Generowanie zdarzeń domenowych
- Jak niezawodnie publikować zdarzenia domenowe?
- 5.3.6. Pobieranie zdarzeń domenowych
- 5.4. Logika biznesowa Kitchen Service
- 5.4.1. Agregat Ticket
- Struktura klasy Ticket
- Zachowanie agregatu Ticket
- Usługa domenowa KitchenService
- Klasa KitchenServiceCommandHandler
- 5.4.1. Agregat Ticket
- 5.5. Logika biznesowa Order Service
- 5.5.1. Agregat Order
- Struktura agregatu Order
- Maszyna stanów agregatu Order
- Metody agregatu Order
- 5.5.1. Agregat Order
- 5.5.2. Klasa OrderService
- 6. Rozwijanie logiki biznesowej za pomocą pozyskiwania zdarzeń
- 6.1. Wykorzystywanie wzorca pozyskiwania zdarzeń do tworzenia logiki biznesowej
- 6.1.1. Problemy tradycyjnego utrwalania
- Niedopasowanie między modelem obiektowym a relacyjnym
- Brak historii agregatu
- Wdrożenie dzienników zdarzeń jest uciążliwe i podatne na błędy
- Publikowanie zdarzeń jest powiązane z logiką biznesową
- 6.1.1. Problemy tradycyjnego utrwalania
- 6.1.2. Pozyskiwanie zdarzeń
- Pozyskiwanie zdarzeń utrwala agregaty korzystając ze zdarzeń
- Zdarzenia reprezentują zmiany stanu
- Metody agregatów dotyczą zdarzeń
- Agregat Order wykorzystujący pozyskiwanie zdarzeń
- 6.1. Wykorzystywanie wzorca pozyskiwania zdarzeń do tworzenia logiki biznesowej
- 6.1.3. Obsługa jednoczesnych aktualizacji z użyciem optymistycznego blokowania
- 6.1.4. Pozyskiwanie zdarzeń i publikowanie zdarzeń
- Użycie przeszukiwania do publikowania zdarzeń
- Wykorzystanie śledzenia dziennika transakcji do niezawodnego publikowania zdarzeń
- 6.1.5. Użycie migawek do poprawy wydajności
- 6.1.6. Idempotentne przetwarzanie komunikatów
- Idempotentne przetwarzanie komunikatów z magazynem zdarzeń opartym na RDBMS
- Idempotentne przetwarzanie komunikatów z magazynem zdarzeń opartym na NoSQL
- 6.1.7. Rozwój zdarzeń domenowych
- Ewolucja schematu zdarzeń
- Zarządzanie zmianami schematu przez rzutowanie w górę
- 6.1.8. Zalety pozyskiwania zdarzeń
- Niezawodnie publikowanie zdarzeń domenowych
- Zachowywanie historii agregatów
- Zwykle pomaga uniknąć problemu niedopasowania między modelem relacyjnym a obiektowym
- Oferuje programistom maszynę czasu
- 6.1.9. Wady pozyskiwania zdarzeń
- Inny model programowania powodujący wzrost krzywej uczenia się
- Złożoność aplikacji opartej na przesyłaniu komunikatów
- Ewolucja zdarzeń może być trudna
- Usuwanie danych jest trudne
- Wykonywanie zapytań do magazynu zdarzeń jest trudne
- 6.2. Implementowanie magazynu zdarzeń
- 6.2.1. Jak działa magazyn zdarzeń Eventuate Local
- Schemat bazy danych zdarzeń Eventuate Local
- Pobieranie zdarzeń przez subskrybowanie brokera zdarzeń Eventuate Local
- Przekaźnik zdarzeń Eventuate Local propaguje zdarzenia z bazy danych do brokera komunikatów
- 6.2.1. Jak działa magazyn zdarzeń Eventuate Local
- 6.2.2. Środowisko klienta Eventuate dla Javy
- Definiowanie agregatów za pomocą klasy ReflectiveMutableCommandProcessingAggregate
- Definiowanie poleceń agregatu
- Definiowanie zdarzeń domenowych
- Tworzenie, wyszukiwanie i aktualizacja agregatów za pomocą klasy AggregateRepository
- Subskrybowanie zdarzeń domenowych
- 6.3. Łączne używanie sag i pozyskiwania zdarzeń
- 6.3.1. Realizacja sag opartych na choreografii z wykorzystaniem pozyskiwania zdarzeń
- 6.3.2. Tworzenie sagi opartej na orkiestracji
- Tworzenie orkiestratora sagi podczas korzystania z magazynu zdarzeń opartego na RDMBS
- Tworzenie orkiestratora sagi podczas korzystania z magazynu zdarzeń opartego na NoSQL
- 6.3.3. Tworzenie uczestnika sagi opartej na pozyskiwaniu zdarzeń
- Idempotentna obsługa komunikatów poleceń
- Atomowe wysyłanie komunikatów zwrotnych
- Przykład uczestnika sagi opartej na pozyskiwaniu zdarzeń
- 6.3.4. Projektowanie orkiestratorów sagi z użyciem pozyskiwania zdarzeń
- Utrzymywanie orkiestratora sagi z użyciem pozyskiwania zdarzeń
- Niezawodne wysyłanie komunikatów poleceń
- Dokładnie jednokrotne przetwarzanie odpowiedzi
- 7. Implementowanie zapytań w architekturze mikroserwisowej
- 7.1. Tworzenie zapytań z użyciem wzorca kompozycji API
- 7.1.1. Operacja zapytania findOrder()
- 7.1.2. Wzorzec kompozycji API
- 7.1.3. Implementowanie operacji zapytania findOrder() z wykorzystaniem wzorca kompozycji API
- 7.1.4. Problemy projektowe związane z wzorcem kompozycji API
- Kto powinien odgrywać rolę API Composer?
- 7.1.5. Wady i zalety wzorca kompozycji API
- Zwiększone koszty ogólne
- Brak spójności danych transakcyjnych
- 7.1. Tworzenie zapytań z użyciem wzorca kompozycji API
- 7.2. Korzystanie z wzorca CQRS
- 7.2.1. Motywacja do korzystania z CQRS
- Realizacja operacji zapytania findOrderHistory()
- Wymagające zapytanie dotyczące pojedynczej usługi: findAvailableRestaurants()
- Konieczność oddzielenia obowiązków
- 7.2.1. Motywacja do korzystania z CQRS
- 7.2.2. Przegląd CQRS
- CQRS oddziela polecenia od zapytań
- CQRS i usługi tylko dla zapytań
- 7.2.3. Zalety CQRS
- 7.2.4. Wady CQRS
- Bardziej złożona architektura
- Konieczność radzenia sobie z opóźnieniem replikacji
- 7.3. Projektowanie widoków CQRS
- 7.3.1. Wybór magazynu danych widoku
- Bazy danych SQL kontra NoSQL
- Wspieranie operacji aktualizacji
- 7.3.1. Wybór magazynu danych widoku
- 7.3.2. Projekt modułu dostępu do danych
- Obsługa jednoczesnych aktualizacji
- Idempotentne procedury obsługi zdarzeń
- Umożliwienie aplikacji klienckiej korzystania z ostatecznie spójnego widoku
- 7.3.3. Dodawanie i aktualizacja widoków CQRS
- Budowanie widoków CQRS z użyciem zarchiwizowanych zdarzeń
- Stopniowe budowanie widoków CQRS
- 7.4. Implementowanie widoku CQRS za pomocą AWS DynamoDB
- 7.4.1. Moduł OrderHistoryEventHandlers
- 7.4.2. Modelowanie danych i projektowanie zapytań za pomocą DynamoDB
- Projektowanie tabeli ftgo-order-history
- Zdefiniowanie indeksu dla zapytania findOrderHistory
- Realizacja zapytania findOrderHistory
- Stronicowanie wyników zapytania
- Aktualizowanie zamówień
- Wykrywanie zduplikowanych zdarzeń
- 7.4.3. Klasa OrderHistoryDaoDynamoDb
- Metoda addOrder()
- Metoda notePickedUp()
- Metoda idempotentUpdate()
- Metoda findOrderHistory()
- 8. Wzorce zewnętrznych API
- 8.1. Problemy z projektowaniem zewnętrznego API
- 8.1.1. Problemy z projektowaniem API dla mobilnego klienta FTGO
- Gorszy komfort użytkowania spowodowany klientem wykonującym wiele zapytań
- Brak enkapsulacji wymaga od programistów frontendu, aby zmieniali swój kod krok w krok ze zmianami w backendzie
- Usługi mogą wykorzystywać mechanizmy IPC nieprzyjazne dla klientów
- 8.1.1. Problemy z projektowaniem API dla mobilnego klienta FTGO
- 8.1.2. Problemy z projektowaniem API dla innych typów klientów
- Problemy z projektowaniem API dla aplikacji webowych
- Problemy z projektowaniem API dla aplikacji JavaScript działających w przeglądarce
- Projektowanie API dla aplikacji zewnętrznych
- 8.1. Problemy z projektowaniem zewnętrznego API
- 8.2. Wzorzec bramy API
- 8.2.1. Wzorzec bramy API
- Przekierowywanie żądań
- Kompozycja API
- Translacja protokołów
- Brama API oferuje każdemu klientowi specyficzne API
- Implementowanie funkcji brzegowych
- Architektura bramy API
- Model własności bramy API
- Korzystanie z wzorca Backends for Frontends
- 8.2.1. Wzorzec bramy API
- 8.2.2. Zalety i wady bramy API
- Zalety bramy API
- Wady bramy API
- 8.2.3. Netflix jako przykład bramy API
- 8.2.4. Problemy z projektowaniem bramy API
- Wydajność i skalowalność
- Użycie abstrakcji programowania reaktywnego
- Postępowanie w przypadku częściowej awarii
- Bycie dobrym obywatelem w architekturze aplikacji
- 8.3. Implementowanie bramy API
- 8.3.1. Skorzystanie z gotowego produktu/usługi bramy API
- Brama API AWS
- AWS Application Load Balancer
- Użycie produktu typu brama API
- 8.3.1. Skorzystanie z gotowego produktu/usługi bramy API
- 8.3.2. Opracowanie własnej bramy API
- Użycie Netflix Zuul
- O Spring Cloud Gateway
- Klasa OrderConfiguration
- Klasa OrderHandlers
- Klasa OrderService
- Klasa ApiGatewayApplication
- 8.3.3. Realizacja bramy API za pomocą GraphQL
- Definiowanie schematu GraphQL
- Wykonywanie zapytań GraphQL
- Podłączanie schematu do danych
- Optymalizacja ładowania za pomocą grupowania i buforowania
- Integracja serwera Apollo GraphQL z Expressem
- Tworzenie klienta GraphQL
- 9. Testowanie mikroserwisów: część 1
- 9.1. Strategie testowania w architekturze mikroserwisowej
- 9.1.1. Testowanie
- Pisanie testów automatycznych
- Testowanie z użyciem obiektów typu mock i stub
- Różne rodzaje testów
- Wykorzystanie kwadrantu testowego do kategoryzacji testów
- Wykorzystanie piramidy testów jako przewodnika w wysiłkach związanych z testowaniem
- 9.1.1. Testowanie
- 9.1.2. Wyzwania związane z testowaniem mikroserwisów
- Test kontraktowy ukierunkowany na klienta
- Testowanie usług z wykorzystaniem Spring Cloud Contract
- Konsumenckie testy kontraktowe API przesyłania komunikatów
- 9.1. Strategie testowania w architekturze mikroserwisowej
- 9.1.3. Strumień wdrażania
- 9.2. Pisanie testów jednostkowych dla usługi
- 9.2.1. Projektowanie testów jednostkowych dla encji
- 9.2.2. Pisanie testów jednostkowych dla obiektów wartości
- 9.2.3. Opracowywanie testów jednostkowych dla sag
- 9.2.4. Pisanie testów jednostkowych dla usług domenowych
- 9.2.5. Opracowywanie testów jednostkowych dla kontrolerów
- 9.2.6. Pisanie testów jednostkowych dla procedur obsługi zdarzeń i komunikatów
- 10. Testowanie mikroserwisów: część 2
- 10.1. Pisanie testów integracyjnych
- 10.1.1. Testy integracyjne trwałości
- 10.1.2. Testy integracyjne interakcji żądanie/odpowiedź opartej na REST
- Przykładowy kontrakt dla API REST
- Integracyjny test kontraktowy ukierunkowany na klienta dla Order Service
- Test integracyjny po stronie konsumenta dla OrderServiceProxy z API Gateway
- 10.1.3. Testy integracyjne interakcji publikuj/subskrybuj
- Kontrakt dla publikowania zdarzenia OrderCreated
- Test kontraktowy ukierunkowany na konsumenta dla Order Service
- Test kontraktowy po stronie konsumenta dla Order History Service
- 10.1. Pisanie testów integracyjnych
- 10.1.4. Kontraktowe testy integracyjne interakcji asynchroniczne żądanie/odpowiedź
- Przykładowy kontrakt dla asynchronicznego żądania/odpowiedzi
- Kontraktowy test integracyjny po stronie konsumenta dla interakcji asynchroniczne żądanie/odpowiedź
- Pisanie testów kontraktowych po stronie dostawcy przeznaczonych do testowania konsumenta w zakresie asynchronicznej interakcji żądanie/odpowiedź
- 10.2. Tworzenie testów komponentów
- 10.2.1. Definiowanie testów akceptacyjnych
- 10.2.2. Pisanie testów akceptacyjnych z użyciem Gherkina
- Wykonywanie specyfikacji Gherkina za pomocą Cucumber
- 10.2.3. Projektowanie testów komponentów
- Wewnątrzprocesowe testy komponentów
- Pozaprocesowe testowanie komponentu
- Jak tworzyć obiekty stubs dla usług w pozaprocesowych testach komponentów
- 10.2.4. Pisanie testów komponentów dla Order Service z FTGO
- Klasa OrderServiceComponentTestStepDefinitions
- Uruchamianie testów komponentów
- 10.3. Pisanie testów end-to-end
- 10.3.1. Projektowanie testów end-to-end
- 10.3.2. Pisanie testów end-to-end
- 10.3.3. Uruchamianie testów end-to-end
- 11. Opracowywanie usług gotowych do produkcji
- 11.1. Opracowywanie bezpiecznych usług
- 11.1.1. Przegląd kwestii bezpieczeństwa w tradycyjnej aplikacji monolitycznej
- 11.1.2. Realizacja kwestii bezpieczeństwa w architekturze mikroserwisowej
- Obsługa uwierzytelniania w bramie API
- Obsługa autoryzacji
- Użycie JWT do przekazywania tożsamości użytkownika i roli
- Użycie OAuth 2.0 w architekturze mikroserwisowej
- 11.1. Opracowywanie bezpiecznych usług
- 11.2. Projektowanie konfigurowalnych usług
- 11.2.1. Użycie konfiguracji zewnętrznej opartej na udostępnianiu
- 11.2.2. Użycie konfiguracji zewnętrznej opartej na pobieraniu
- 11.3. Projektowanie obserwowalnych usług
- 11.3.1. Użycie wzorca API kontroli działania
- Realizacja punktu końcowego kontroli działania
- Wywołanie punktu końcowego kontroli działania
- 11.3.1. Użycie wzorca API kontroli działania
- 11.3.2. Stosowanie wzorca agregacji dzienników
- W jaki sposób usługa generuje dziennik
- Infrastruktura agregacji dzienników
- 11.3.3. Stosowanie wzorca rozproszonego śledzenia
- Użycie biblioteki instrumentacji
- Serwer rozproszonego śledzenia
- 11.3.4. Stosowanie wzorca metryk aplikacji
- Zbieranie metryk na poziomie usługi
- Dostarczanie metryk do usługi metryk
- 11.3.5. Stosowanie wzorca śledzenia wyjątków
- 11.3.6. Stosowanie wzorca dzienników inspekcji
- Dodawanie kodu dzienników inspekcji do logiki biznesowej
- Użycie programowania aspektowego
- Użycie pozyskiwania zdarzeń
- 11.4. Tworzenie usług za pomocą wzorca szkieletów mikroserwisowych
- 11.4.1. Korzystanie ze szkieletu mikroserwisowego
- 11.4.2. Od szkieletu mikroserwisowego do service mesh
- 12. Wdrażanie mikroserwisów
- 12.1. Wdrażanie usług jako pakietów specyficznych dla języka
- 12.1.1. Zalety wzorca Usługa jako pakiet specyficzny dla języka
- Szybkie wdrażanie
- Efektywne wykorzystanie zasobów
- 12.1.1. Zalety wzorca Usługa jako pakiet specyficzny dla języka
- 12.1.2. Wady wzorca Usługa jako pakiet specyficzny dla języka
- Brak enkapsulacji stosu technologicznego
- Brak możliwości ograniczenia zasobów zużywanych przez instancję usługi
- Brak izolacji podczas uruchamiania wielu instancji usługi na tej samej maszynie
- Automatyczne określenie miejsca umieszczenia instancji usługi jest trudne
- 12.1. Wdrażanie usług jako pakietów specyficznych dla języka
- 12.2. Wdrażanie usług z użyciem wzorca usługi jako maszyny wirtualnej
- 12.2.1. Zalety wdrażania usług jako maszyn wirtualnych
- Obraz maszyny wirtualnej hermetyzuje stos technologiczny
- Instancje usług są izolowane
- Wykorzystanie wyrafinowanej infrastruktury chmurowej
- 12.2.1. Zalety wdrażania usług jako maszyn wirtualnych
- 12.2.2. Wady wdrażania usług jako maszyn wirtualnych
- Mniej wydajne wykorzystanie zasobów
- Wolne wdrożenia
- Narzut związany z administracją systemem
- 12.3. Wdrażanie usług za pomocą wzorca usługi jako kontenera
- 12.3.1. Wdrażanie usług za pomocą Dockera
- Budowanie obrazu Dockera
- Wysyłanie obrazu Dockera do rejestru
- Uruchamianie kontenera Dockera
- 12.3.1. Wdrażanie usług za pomocą Dockera
- 12.3.2. Zalety wdrażania usług jako kontenerów
- 12.3.3. Wady wdrażania usług jako kontenerów
- 12.4. Wdrażanie aplikacji FTGO za pomocą Kubernetesa
- 12.4.1. Kubernetes
- Architektura Kubernetesa
- Kluczowe pojęcia Kubernetesa
- 12.4.1. Kubernetes
- 12.4.2. Wdrażanie Restaurant Service w Kubernetesie
- Tworzenie service w Kubernetesie
- Wdrażanie bramy API
- 12.4.3. Wdrożenia bez przestojów
- 12.4.4. Użycie service mesh w celu oddzielenia wdrożenia od wydania
- Service mesh Istio
- Wdrażanie usługi za pomocą Istio
- Tworzenie reguł routingu do wersji v1
- Wdrażanie wersji 2 Consumer Service
- Przekierowywanie części testowego ruchu do wersji 2
- Kierowanie produkcyjnego ruchu do wersji 2
- 12.5. Wdrażanie usług za pomocą wzorca wdrożenia bezserwerowego
- 12.5.1. Bezserwerowe wdrażanie za pomocą AWS Lambda
- 12.5.2. Tworzenie funkcji lambda
- 12.5.3. Wywoływanie funkcji lambda
- Obsługa żądań HTTP
- Obsługa zdarzeń generowanych przez usługi AWS
- Definiowanie zaplanowanych funkcji lambda
- Wywoływanie funkcji lambda za pomocą żądania usługi sieciowej
- 12.5.4. Zalety użycia funkcji lambda
- 12.5.5. Wady użycia funkcji lambda
- 12.6. Wdrażanie usługi RESTful z użyciem AWS Lambda i AWS Gateway
- 12.6.1. Projekt AWS Lambda wersji Restaurant Service
- Klasa FindRestaurantRequestHandler
- Wstrzykiwanie zależności z użyciem klasy AbstractAutowiringHttpRequestHandler
- Klasa AbstractHttpHandler
- 12.6.1. Projekt AWS Lambda wersji Restaurant Service
- 12.6.2. Pakowanie usługi jako pliku ZIP
- 12.6.3. Wdrażanie funkcji lambda z użyciem frameworka Serverless
- 13. Refaktoryzacja do mikroserwisów
- 13.1. Refaktoryzacja do mikroserwisów
- 13.1.1. Dlaczego warto refaktoryzować monolit?
- 13.1.2. Duszenie monolitu
- Szybkie i częste prezentowanie wartości dodanej
- Minimalizacja zmian w monolicie
- Techniczne aspekty infrastruktury wdrożeniowej: nie potrzebujemy wszystkiego od razu
- 13.1. Refaktoryzacja do mikroserwisów
- 13.2. Strategie refaktoryzacji monolitu do mikroserwisów
- 13.2.1. Realizacja nowych funkcjonalności jako usług
- Integracja nowej usługi z monolitem
- Kiedy zaimplementować nową funkcjonalność jako usługę
- 13.2.1. Realizacja nowych funkcjonalności jako usług
- 13.2.2. Oddzielanie warstwy prezentacji od backendu
- 13.2.3. Wyodrębnianie zdolności biznesowych do usług
- Podział modelu domeny
- Refaktoryzacja bazy danych
- Replikowanie danych w celu uniknięcia rozległych zmian
- Jakie usługi wyodrębniać i kiedy
- 13.3. Projektowanie, w jaki sposób usługa i monolit będą współpracować
- 13.3.1. Projektowanie kodu integrującego
- Projektowanie API kodu integrującego
- Wybór stylu interakcji i mechanizmu IPC
- Projektowanie Anti-Corruption Layer
- Jak monolit publikuje i subskrybuje zdarzenia domenowe
- 13.3.1. Projektowanie kodu integrującego
- 13.3.2. Utrzymywanie spójności danych w usłudze i monolicie
- Wyzwanie związane ze zmianą monolitu, aby wspierał transakcje kompensujące
- Sagi nie zawsze wymagają od monolitu wspierania transakcji kompensujących
- Określanie kolejności wyodrębniania usług w celu uniknięcia konieczności implementacji transakcji kompensujących w monolicie
- 13.3.3. Obsługa uwierzytelniania i autoryzacji
- LoginHandler monolitu ustawia plik cookie USERINFO
- Brama API mapuje plik cookie USERINFO na nagłówek Authorization
- 13.4. Wdrażanie nowej funkcjonalności jako usługi: obsługa niezrealizowanych zamówień
- 13.4.1. Projekt Delayed Delivery Service
- 13.4.2. Projektowanie kodu integrującego dla Delayed Delivery Service
- Pobieranie informacji kontaktowych klienta z wykorzystaniem CustomerContactInfoRepository
- Publikowanie i pobieranie zdarzeń domenowych Order i Restaurant
- 13.5. Rozbijanie monolitu: wyodrębnianie zarządzania dostawami
- 13.5.1. Przegląd istniejącej funkcjonalności związanej z zarządzaniem dostawami
- 13.5.2. Przegląd Delivery Service
- 13.5.3. Projekt modelu domeny Delivery Service
- Określenie encji i ich pól, które są częścią zarządzania dostawami
- Decydowanie, które dane przenieść do Delivery Service
- Projekt logiki domeny Delivery Service
- 13.5.4. Projekt kodu integrującego Delivery Service
- Projekt API Delivery Service
- W jaki sposób Delivery Service będzie uzyskiwał dostęp do danych monolitu FTGO
- W jaki sposób monolit FTGO będzie uzyskiwał dostęp do danych Delivery Service?
- 13.5.5. Dostosowanie monolitu FTGO do współpracy z Delivery Service
- Definiowanie interfejsu DeliveryService
- Refaktoryzacja monolitu w celu wywoływania interfejsu DeliveryService
- Implementacja interfejsu DeliveryService
- Przełączanie funkcjonalności
- Przypisy
Wydawnictwo Naukowe PWN - inne książki
-
Światowy bestseller, który uczy, jak tworzyć bezpieczne systemy informatyczne. Podręcznik obejmuje nie tylko podstawy techniczne, takie jak kryptografia, kontrola dostępu i odporność na manipulacje, ale także sposób ich wykorzystania w prawdziwym życiu. Realne studia przypadków dotyczące bezpie...(93.12 zł najniższa cena z 30 dni)
111.20 zł
139.00 zł(-20%) -
Za każdym razem w psychoterapii pracujemy z konkretną, niepowtarzalną w swoim indywidualizmie osobą metodami pochodzącymi z wiedzy ogólnej. I, co niezwykle doniosłe, praca ta niejednokrotnie okazuje się skuteczna. W jaki sposób jest to możliwe? W pracy psychoterapeutycznej wszystkie drogi prowadz...
Konceptualizacja w terapii poznawczo-behawioralnej Konceptualizacja w terapii poznawczo-behawioralnej
(52.93 zł najniższa cena z 30 dni)63.20 zł
79.00 zł(-20%) -
David Attenborough jest najbardziej znanym popularyzatorem wiedzy przyrodniczej na świecie, twórcą filmów przyrodniczych, który z kamerą objechał świat, pokazał nam całe królestwo zwierząt i przeanalizował każdą większą grupę w kontekście roli, jaką odegrała w długim spektaklu życia, od jego pocz...(39.90 zł najniższa cena z 30 dni)
47.20 zł
59.00 zł(-20%) -
"Gdzie przebiega granica między tym, co nas krzywdzi, a tym, co powoduje wzrost? Skąd mamy wiedzieć, które wydarzenie traumatyczne zbuduje nasz charakter, a które nas wyniszczy? Czy prawdą jest, że to, co nas nie zabije, uczyni nas silniejszymi? Jak możemy zmienić trajektorię, którą podążamy po t...(33.90 zł najniższa cena z 30 dni)
39.20 zł
49.00 zł(-20%) -
Jak skutecznie zaplanować i zrealizować każdy projekt na czas i zgodnie z budżetem? Bent Flyvbjerg, nazwany wiodącym światowym ekspertem od megaprojektów, we współpracy z autorem bestsellerów, Danem Gardnerem, dzieli się sekretami skutecznego planowania i realizacji każdego projektu na dowolną sk...(52.93 zł najniższa cena z 30 dni)
63.20 zł
79.00 zł(-20%) -
Nowe wydanie światowego bestsellera literatury popularnonaukowej, część pasjonującej serii: 50 idei, które powinieneś znać Kto wynalazł liczbę zero i dlaczego był to jeden z największych wynalazków w historii matematyki? Czy można zmierzyć nieskończoność? Dlaczego minuta trwa akurat 60 sekun...(39.90 zł najniższa cena z 30 dni)
38.35 zł
59.00 zł(-35%) -
Jak ważne jest bezpieczeństwo systemów, osób i instytucji w dobie trwających wojen, również tych cybernetycznych, nie trzeba nikogo przekonywać. Jest to bardzo ważna kwestia, dlatego istotne jest również przygotowanie się instytucji i społeczeństw na czyhające już od dawna zagrożenia z tym związa...
Bezpieczeństwo osób i systemów IT z wykorzystaniem białego wywiadu Bezpieczeństwo osób i systemów IT z wykorzystaniem białego wywiadu
(71.20 zł najniższa cena z 30 dni)71.20 zł
89.00 zł(-20%) -
Książka Susan Young i Jessiki Bramham to praktyczny przewodnik, który wskazuje, jak za pomocą terapii poznawczo-behawioralnej radzić sobie z objawami ADHD występującymi u młodzieży i osób dorosłych. Program Young i Bramham: dostarcza praktycznych strategii radzenia sobie z codziennymi trudnoś...
Psychoterapia poznawczo-behawioralna ADHD nastolatków i dorosłych Psychoterapia poznawczo-behawioralna ADHD nastolatków i dorosłych
(46.23 zł najniższa cena z 30 dni)55.20 zł
69.00 zł(-20%) -
Pierwsze w polskiej literaturze wszechstronne ujęcie zagadnienia komunikacji politycznej w amerykańskich kampaniach wyborczych! Książka: - przedstawia amerykański system medialny; - ukazuje praktykę oraz ocenę kampanii z perspektywy jej głównych uczestników: konsultantów politycznych, dziennikar...
Komunikacja polityczna w amerykańskich kampaniach wyborczych Komunikacja polityczna w amerykańskich kampaniach wyborczych
(49.58 zł najniższa cena z 30 dni)59.20 zł
74.00 zł(-20%) -
Książka prezentuje niezwykle różnorodne środowisko przedwojennych przemysłowców i biznesmenów w czasach Drugiej Rzeczypospolitej. Przedstawia je na tle ówczesnych uwarunkowań ekonomicznych, politycznych i społecznych. Opisuje sytuację kraju po odzyskaniu niepodległości, a także załamanie gospodar...(52.93 zł najniższa cena z 30 dni)
63.20 zł
79.00 zł(-20%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka drukowana
Oceny i opinie klientów: Mikroserwisy. Wzorce z przykładami w języku Java Chris Richardson (0) Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.