Szczegóły ebooka

Programowanie w języku Ruby. Mikrousługi i konteneryzacja

Programowanie w języku Ruby. Mikrousługi i konteneryzacja

Michał Sobczak

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!


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

  • Tytuł: Programowanie w języku Ruby. Mikrousługi i konteneryzacja
  • Autor: Michał Sobczak
  • ISBN: 978-83-283-5886-7, 9788328358867
  • Data wydania: 2019-04-09
  • Format: Ebook
  • Identyfikator pozycji: prumik
  • Wydawca: Helion