Programowanie w języku Ruby. Mikrousługi i konteneryzacja - ebook
Programowanie w języku Ruby. Mikrousługi i konteneryzacja - ebook
Poznaj Ruby on Rails od praktycznej strony!
- Odkryj język Ruby i platformę Rails
- Naucz się testować i uruchamiać swój kod
- Poznaj zalety mikrousług i konteneryzacji
Ruby to nowoczesny, wieloparadygmatowy, interpretowany język programowania. Wraz z platformą Rails stanowi jedno z najpopularniejszych rozwiązań służących do szybkiego tworzenia aplikacji sieciowych; wspiera wiele znanych serwisów dostępnych w internecie. Ruby on Rails od lat utrzymuje się w ścisłej czołówce platform klasy MVC - dzięki rozbudowanym funkcjom, wysokiej wydajności oraz łatwości pisania kodu, a także możliwości stosowania dużej liczby rozszerzeń.
Jeśli chcesz się dowiedzieć, jak wykorzystać tę platformę w swoich projektach, jesteś na dobrym tropie! Dzięki tej książce poznasz możliwości i konstrukcje języka Ruby oraz mechanizm działania platformy Rails, a w szczególności interfejs Rack. Dowiesz się, jak zapewniać odpowiednią jakość swoich rozwiązań, nauczysz się je uruchamiać przy użyciu technologii wirtualizacji VMware ESXi oraz konteneryzacji Docker na platformach OpenShift Origin, OKD i Nomad. Prześledziwszy praktyczne przykłady, zdobędziesz wiedzę na temat architektury mikrousług, poznasz też sposoby wykorzystania oprogramowania GitLab w funkcji repozytorium kodu, systemu zgłoszeń, bazy wiedzy i narzędzia CI/CD.
- Mechanizmy języka Ruby i ich praktyczne zastosowanie
- Programowanie strukturalne i obiektowe oraz metaprogramowanie
- Możliwości platformy Rails i ich wykorzystanie w praktyce
- Zastosowanie interfejsu Rack i szyny usługowej RabbitMQ
- Zapewnianie jakości aplikacji - teoria i praktyka
- Uruchamianie aplikacji przy użyciu maszyn wirtualnych i kontenerów
- Zastosowanie systemów orkiestracji kontenerów
- Praca z repozytorium kodu oraz ciągła integracja i dostarczanie (CI/CD)
Naucz się tworzyć wydajne aplikacje sieciowe z Ruby on Rails!
Spis treści
Wstęp 11
Rozdział 1. Ruby 17
- Interpreter 17
- Rozwój 18
- rvm 18
- Clojures 20
- Blok 20
- Lambda 21
- Proc 21
- Różnice między blokami a Proc 22
- Różnice między Proc a lambdą 23
- yield 24
- ObjectSpace 25
- each_object 25
- finalizer 26
- Drzewo klas 26
- Statystyka obiektów 27
- Metody obiektów 28
- Bezpieczeństwo 29
- Poziomy $SAFE 29
- Przykłady 29
- Analiza wydajności 30
- Wydajność mierzona bibliotekami Benchmark i MiniTest 30
- Profilowanie z ruby-prof 34
- Zarządzanie pamięcią 36
- Retencja obiektów 36
- Biblioteka get_process_mem 37
- Wypełnienie pamięci 37
- Abstrakcyjny model pamięci 39
- Odśmiecanie 40
- Wizualizacja stosu 43
- Współbieżność 47
- Biblioteka 47
- Wątki 48
- Procesy 50
- Fibers 52
- Wielowątkowość a interpretery 54
- Komunikacja między procesami 54
- Przykład 59
- Rozszerzenia 65
- Konstrukcja 66
- Przykład praktyczny 67
- Osadzanie interpretera 72
- Paradygmaty 72
- Programowanie strukturalne 73
- Założenia 73
- Stan początkowy 75
- Plik 2d.rb 75
- Plik 3d.rb 79
- Plik main.rb 82
- Programowanie obiektowe 84
- Blockchain 84
- Metaprogramowanie 91
- Korzyści 91
- Przykład 91
Rozdział 2. Rails 95
- Platforma 95
- Rozwój 97
- Konwencja ponad konfigurację 98
- Instalacja 98
- Minimalistyczne aplikacje w Rails 99
- Najmniejsza aplikacja 100
- Drugi przykład 100
- Trzeci przykład 102
- Rack i middleware 103
- Rack 103
- Rails 104
- RabbitMQ 106
- Tryby pracy 107
- Komunikacja jednokierunkowa 107
- Komunikacja dwukierunkowa 107
- Komunikacja mieszana 110
- Powszechne błędy 110
- ActionController::RoutingError 110
- NoMethodError: Undefined Method '[\' for Nil:NilClass 111
- ActionController::InvalidAuthenticityToken 111
- Net::ReadTimeout 112
- ActiveRecord::RecordNotUnique: PG::UniqueViolation 112
- NoMethodError: Undefined Method 'id' for nil:NilClass 113
- ActionController::ParameterMissing 113
- ActionView::Template::Error: Undefined Local Variable or Method 113
- ActionController::UnknownFormat 113
- Praktyka a konwencje 113
- Za dużo logiki w kontrolerach 114
- Za dużo logiki w widokach 114
- Za dużo logiki w modelach 114
- Pozostały kod 114
- Za dużo bibliotek 115
- Brak automatycznych testów 115
- Tryb API 115
- Middleware 115
- Nowa aplikacja 116
- find_in_batches 116
Rozdział 3. Zapewnienie jakości 119
- Wprowadzenie 119
- Teoria i praktyka 119
- Metodyki 120
- Definicja błędu 120
- Definicja niezawodności 121
- Przyczyny błędów 121
- TDD 122
- TIP 123
- Eksploracja 123
- Wykrywanie defektów 124
- Bierne wykrywanie defektów 124
- Czynne wykrywanie defektów 124
- Tolerancja na błędy 127
- Izolacja defektów 127
- Testowanie Rack 127
- Mikrousługi: lb 128
- Rack 129
- Sinatra 132
- Testowanie Rails 134
- Instalacja 135
- Funkcje pomocnicze 136
- Przypadki testowe 138
- Uruchomienie 139
Rozdział 4. Wdrożenie 141
- Wprowadzenie 141
- Definicja 141
- Podejście procesowe 142
- Proces wdrożeniowy 142
- Wirtualizacja 143
- Rodzaje wirtualizacji 143
- VMware vSphere Hypervisor 143
- Konteneryzacja 148
- Docker 148
- Inne rozwiązania 148
- Prywatne chmury obliczeniowe 148
- Publiczne rozwiązania 149
- Nomad na tle konkurencji 149
- Przykładowa struktura 150
- Środowisko pomocnicze 151
- Utworzenie wirtualnej maszyny 151
- Instalacja systemu operacyjnego 153
- OpenShift Origin / OKD 154
- Wprowadzenie 155
- Struktura klastra 158
- Serwer DNS 159
- Przygotowanie węzłów klastra 161
- Przygotowanie instalacji 164
- Instalacja klastra 166
- Konfiguracja klastra 3.7/3.9 169
- Dodanie nowych węzłów klastra 172
- Aktualizacja do nowej wersji 173
- Administrowanie klastrem 173
- Minishift 174
- Instalacja 175
- Uruchomienie 175
- Nomad 178
- Wprowadzenie 179
- Środowisko narzędziowe 180
- Środowisko aplikacyjne 181
- Środowisko uruchomieniowe 185
- GitLab CI/CD 193
- Wprowadzenie 193
- Instalacja systemu GitLab 193
- Integracja z systemem OpenShift/OKD 194
- Wdrażanie aplikacji do systemu OpenShift/OKD 202
- Integracja z systemem Nomad 203
Rozdział 5. Mikrousługi 205
- Wprowadzenie 205
- Infrastruktura funkcjonalna 206
- Przepływ danych 206
- DNS 208
- Urządzenie IoT 208
- ESP8266 209
- Program testowy 210
- Program docelowy 211
- NGINX 212
- nginx.conf 212
- Podsumowanie 213
- lb 213
- config.ru 214
- Dockerfile 215
- Gemfile 216
- .gitlab-ci.yml 216
- .nomad 217
- check_dns 219
- check_dns.rb 219
- .nomad 219
- rack 220
- config.ru 221
- .nomad 222
- csp.consumer 223
- consumer.rb 223
- Dockerfile 225
- fluent.conf 225
- Gemfile 226
- csp.processor 226
- processor.rb 226
Rozdział 6. Projekt 229
- Wprowadzenie 229
- Problem i oczekiwane efekty 229
- Źródłowa baza danych 230
- Stos technologiczny 230
- Metaprogramowanie 230
- Biblioteki 230
- Realizacja 231
- Prototyp 231
- Struktura 236
- Kontrola dostępu 238
- UI 240
- Użycie 242
Podsumowanie 243
- Wnioski 243
- Rails 243
- Orkiestracja 243
- Ruby 243
- Popularność 244
- Na koniec 244
- Przyszłość 244
Bibliografia 245
Skorowidz 246
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5886-7 |
Rozmiar pliku: | 4,9 MB |