Szczegóły ebooka

Architektura oprogramowania i podejmowanie decyzji: Wykorzystywanie przywództwa, technologii i zarządzania produktem do budowy świetnych produktów

Architektura oprogramowania i podejmowanie decyzji: Wykorzystywanie przywództwa, technologii i zarządzania produktem do budowy świetnych produktów

Srinath Perera

Ebook

Nadrzędnym celem systemów oprogramowania (a więc i architektury oprogramowania) jest budowanie systemów spełniających standardy jakości i zapewniających najwyższy zwrot z inwestycji (ROI) w dłuższej perspektywie lub w określonym przedziale czasu.

Świetny produkt wymaga połączenia technologii, przywództwa i zarządzania produktem (wliczając w to UX). Przywództwo polega przede wszystkim na zarządzaniu niepewnością i dokonywaniu prawidłowej oceny sytuacji. Aby tworzyć świetne produkty, liderzy techniczni muszą łączyć technologię, przywództwo i wiedzę z zakresu zarządzania produktem, a także podejmować właściwe decyzje. Wiele błędów technicznych wynika z luki między wiedzą na temat tych trzech elementów i oceną sytuacji.

W książce Architektura oprogramowania i podejmowanie decyzji Srinath Perera wyjaśnia zasady i koncepcje, które architekci oprogramowania muszą dogłębnie zrozumieć, oraz sposoby stosowania tych zasad do zarządzania niepewnością. Pytania i zasady omówione w tej książce pomagają zarządzać niepewnością podczas tworzenia architektury oprogramowania i zapewniają ramy do podejmowania decyzji. Ta książka jest przeznaczona dla wszystkich liderów technicznych w branży oprogramowania, którzy dokonują całościowej oceny budowanych przez siebie systemów, jak również dla przyszłych liderów uczących się tego rzemiosła.


Zrozum znaczenie podejmowania zdecydowanych decyzji na przykładach wielkich liderów technicznych, takich jak bracia Wright i Kelly Johnson


Wykorzystaj pięć kluczowych pytań i siedem ważnych zasad, aby zrozumieć niepewności podczas projektowania i podjąć strategiczne decyzje architektoniczne


Podejdź do projektu systematycznie, najpierw na poziomie makro, a następnie na poziomie indywidualnej usługi

Wykorzystaj wiedzę z zakresu przywództwa, aby podejmować lepsze decyzje dotyczące architektury oprogramowania. Myśl głęboko, ale implementuj powoli.

Srinath Perera jest głównym architektem w WSO2. Przez ostatnich 20 lat był deweloperem rozwiązań open source Apache. Srinath odegrał znaczącą rolę w projektowaniu Apache Axis2, Apache Airavata, WSO2 CEP (Siddhi) i WSO2 Choreo. Zrecenzował architektury dla ponad 10 projektów i ponad 100 wydań.

  • Spis treści
  • Od autora
  • Wprowadzenie do przywództwa w oprogramowaniu
    • Rola oceny sytuacji
    • Cel tej książki
    • Część I: Wprowadzenie
    • Część II: Podstawowe informacje
    • Część III: Projekt systemu
    • Część IV: Łączenie wszystkiego w całość
  • Systemy, projekt i architektura
    • Czym jest architektura oprogramowania?
    • Jak zaprojektować system?
    • Pięć pytań
      • Pytanie 1: Kiedy jest najlepszy czas na wprowadzenie produktu na rynek?
      • Pytanie 2: Jaki jest poziom umiejętności zespołu?
      • Pytanie 3: Jaka jest wrażliwość naszego systemu na wydajność?
      • Pytanie 4: Kiedy możemy przepisać system?
      • Pytanie 5: Jakie są trudne problemy?
    • Siedem zasad: koncepcje nadrzędne
      • Zasada 1: Opieraj wszystko na doświadczeniu użytkownika
      • Zasada 2: Używaj iteracyjnej strategii cienkich plastrów
      • Zasada 3: W każdej iteracji dodawaj największą wartość przy jak najmniejszym wysiłku w celu wsparcia większej liczby użytkowników
      • Zasada 4: Podejmuj decyzje i absorbuj ryzyko
      • Zasada 5: Projektuj dogłębnie rzeczy, które trudno zmienić, ale implementuj je powoli
      • Zasada 6: Wyeliminuj niewiadome i wyciągaj wnioski z dowodów, pracując nad trudnymi problemami wcześnie i równolegle
      • Zasada 7: Poznaj kompromisy między spójnością i elastycznością w architekturze oprogramowania
    • Projektowanie księgarni internetowej
    • Projektowanie dla chmury
    • Podsumowanie
  • Modele mentalne pozwalające zrozumieć i wyjaśnić wydajność systemu
    • System komputerowy
    • Modele dla wydajności
      • Model 1: Koszt przełączenia z trybu użytkownika na tryb jądra
      • Model 2: Hierarchia operacji
      • Model 3: Narzut związany z przełączaniem kontekstu
      • Model 4: Prawo Amdahla
      • Model 5: Prawo skalowalności uniwersalnej
      • Model 6: Kompromisy dotyczące opóźnienia i stopnia wykorzystania
      • Model 7: Projektowanie pod kątem przepustowości z użyciem modelu maksymalnego użytecznego wykorzystania
      • Model 8: Dodawanie limitów opóźnień
    • Techniki optymalizacji
      • Techniki optymalizacji procesora
      • Techniki optymalizacji operacji I/O
      • Techniki optymalizacji pamięci
      • Techniki optymalizacji opóźnienia
    • Intuicyjne wyczucie wydajności
    • Uwarunkowania przywództwa
    • Podsumowanie
  • Doświadczenia użytkownika (UX)
    • Ogólne koncepcje UX dla architektów
      • Zasada 1: Zrozum swoich użytkowników
      • Zasada 2: Rób możliwie jak najmniej
      • Zasada 3: Dobre produkty nie potrzebują instrukcji: ich użycie jest oczywiste
      • Zasada 4: Myśl w kategoriach wymiany informacji
      • Zasada 5: Niech rzeczy proste będą proste
      • Zasada 6: Zaprojektuj UX przed implementacją
    • Projekt UX dla konfiguracji
    • Projekt UX dla API
    • Projekt UX dla rozszerzeń
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: Wprowadzenie
    • Historia makroarchitektury
    • Nowoczesne architektury
    • Elementy składowe makroarchitektury
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: koordynacja
    • Podejście 1: Rozpoczynaj przepływ z poziomu klienta
    • Podejście 2: Użyj innej usługi
    • Podejście 3: Użyj scentralizowanego oprogramowania pośredniczącego
    • Podejście 4: Zaimplementuj choreografię
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: zachowywanie spójności stanu
    • Dlaczego transakcje?
    • Dlaczego musimy wykroczyć poza transakcje?
    • Wykraczanie poza transakcje
      • Podejście 1: Ponowne zdefiniowanie problemu w celu obniżenia wymaganych gwarancji
      • Podejście 2: Stosowanie kompensacji
    • Najlepsze praktyki
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: obsługiwanie bezpieczeństwa
    • Zarządzanie użytkownikami
    • Zabezpieczenia interakcji
      • Techniki uwierzytelniania
      • Techniki autoryzacji
      • Typowe scenariusze interakcji w zakresie zabezpieczeń dla aplikacji
    • Przechowywanie, RODO i inne regulacje
    • Strategia i porady dotyczące bezpieczeństwa
      • Wydajność i opóźnienie
      • Model zerowego zaufania
      • Zachowajmy ostrożność podczas uruchamiania kodu dostarczonego przez użytkownika
      • Tematy związane z blockchain
      • Inne tematy
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: obsługiwanie wysokiej dostępności i skali
    • Dodawanie wysokiej dostępności
      • Replikacja
      • Szybkie odzyskiwanie
    • Skalowalność
    • Skalowanie dla nowoczesnej architektury: rozwiązanie podstawowe
    • Skalowanie: narzędzia pracy
      • Taktyka skalowania 1: Brak współdzielenia
      • Taktyka skalowania 2: Dystrybucja
      • Taktyka skalowania 3: Buforowanie
      • Taktyka skalowania 4: Przetwarzanie asynchroniczne
    • Budowanie skalowalnych systemów
      • Podejście 1: Sukcesywna eliminacja wąskich gardeł
      • Podejście 2: Projekt typu shared-nothing
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Makroarchitektura: rozważania na temat mikrousług
    • Decyzja 1: Obsługiwanie współdzielonych baz danych
      • Rozwiązanie 1: Jedna mikrousługa aktualizująca bazę danych
      • Rozwiązanie 2: Dwie mikrousługi aktualizujące bazę danych
    • Decyzja 2: Zabezpieczanie mikrousług
    • Decyzja 3: Koordynowanie mikrousług
    • Decyzja 4: Unikanie piekła zależności
      • Kompatybilność wsteczna
      • Kompatybilność w przód
      • Wykresy zależności
    • Luźno powiązane zespoły oparte na repozytoriach jako alternatywa dla mikrousług
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Architektury serwerów
    • Tworzenie usługi
    • Najlepsze praktyki w zakresie tworzenia usługi
    • Techniki zaawansowane
      • Korzystanie z alternatywnych modeli I/O i wątków
      • Narzut związany z koordynacją
      • Wydajne zapisywanie lokalnego stanu
      • Wybór systemu transportu
      • Obsługa opóźnień
      • Rozdzielanie odczytów i zapisów
      • Używanie blokad (i sygnalizacji) w aplikacjach
      • Korzystanie z kolejek i pul
      • Obsługa wywołań usług
    • Stosowanie powyższych technik w praktyce
      • Aplikacje ograniczone procesorem (procesor >> pamięć i brak operacji I/O)
      • Aplikacje ograniczone pamięcią (procesor + pamięć i brak operacji I/O)
      • Aplikacje zrównoważone (procesor + pamięć + operacje I/O)
      • Aplikacje ograniczone operacjami I/O (operacje I/O + pamięć > procesor)
      • Inne kategoryzacje aplikacji
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Budowanie stabilnych systemów
    • Dlaczego systemy ulegają awariom i co możemy z nimi zrobić?
    • Jak obsługiwać znane błędy?
      • Nieoczekiwane obciążenie
      • Awarie zasobów
      • Zależności
      • Zmiany dokonywane przez ludzi
    • Typowe błędy
      • Wycieki zasobów
      • Zakleszczenia i powolne operacje
    • Jak obsługiwać nieznane błędy?
      • Obserwowalność
      • Błędy i testowanie
    • Łaskawa degradacja
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Budowanie i ewoluowanie systemów
    • Rozpoczynanie pracy
      • Dbanie o podstawy
      • Zrozumienie procesu projektowania
      • Podejmowanie decyzji i absorbowanie ryzyka
      • Wymaganie doskonałości
    • Komunikowanie projektu
    • Ewoluowanie systemu: jak uczyć się od użytkowników i ulepszać system
    • Rozważania dotyczące przywództwa
    • Podsumowanie
  • Indeks
  • Polecamy także
  • Tytuł: Architektura oprogramowania i podejmowanie decyzji: Wykorzystywanie przywództwa, technologii i zarządzania produktem do budowy świetnych produktów
  • Autor: Srinath Perera
  • ISBN: 9788375415438, 9788375415438
  • Data wydania: 2024-04-29
  • Format: Ebook
  • Identyfikator pozycji: e_3wjk
  • Wydawca: Promise