ARCHITEKTURA

Kategoryzacja stylów architektonicznych [Head First – Software Architecture]

Style architektoniczne można kategoryzować na wiele sposobów. Dwa z nich to:– kategoryzacja ze względu na podział– kategoryzacja ze względu na model wdrażania Kategoryzacja ze względu na podział Podział komponentów aplikacji może być podyktowany:– względami technicznymi– względami domenowymi Względy techniczne Przykładem podziału technicznego będzie:– warstwa prezentacji– warstwa serwisów– warstwa zapisu danych Względy domenowe Tutaj podział wyznaczany …

Kategoryzacja stylów architektonicznych [Head First – Software Architecture] Czytaj dalej »

Tworzenie komponentów logicznych aplikacji [Head First – Software Architecture]

Tworzenie komponentów logicznych można podzielić na cztery etapy:1. Identyfikacja głównych komponentów2. Przypisywanie wymagań do komponentów3. Analiza roli i odpowiedzialności4. Analiza charakterystyk Te etapy powinny być powtarzane przy dokonywaniu znaczących zmian w projekcie. 1. Identyfikacja głównych komponentów Jest to punkt startowy – czyli mamy jakieś wymagania odnośnie aplikacji i trzeba stworzyć pierwszy szkic komponentów. Są tutaj …

Tworzenie komponentów logicznych aplikacji [Head First – Software Architecture] Czytaj dalej »

Komponenty logiczne versus fizyczna reprezentacja

W dużym skrócie – komponent logiczny jest odpowiedzialny za logikę biznesową (np. sprzedaż, przyjęcie zamówień), zaś jego reprezentacja fizyczna będzie ukazywała wszystkie serwisy z których korzysta. Komponenty logiczne Komponenty logiczne będą zatem się mapować na odpowiedzialności. Przykładowo komponent Commenting będzie odpowiedzialny za obsługę komentarzy. Komponenty logiczne a struktura projektu Najczęściej komponenty logiczne są odzwierciedlane w …

Komponenty logiczne versus fizyczna reprezentacja Czytaj dalej »

ADRy – czyli jak opisywać decyzje architektoniczne

ADRy czyli z angielskiego Architectural Decision Record to po prostu opis decyzji architektonicznej. Składa się on w podstawowej wersji z następujących sekcji:– tytułu– statusu– kontekstu– decyzji– konsekwencji Tytuł Jak to tytuł – powinien w zwięzły sposób opisywać decyzję. Ale powinien także zawierać trzy-liczbowy numer. Przykładowo: 014: Użycie grafowej bazy danych Status ADR może posiadać wiele …

ADRy – czyli jak opisywać decyzje architektoniczne Czytaj dalej »

Kolejka a Temat (Queue vs Topic)

W niniejszym wpisie rzucimy okiem na dwie idee pośredników w przesyłaniu wiadomości – kolejka i temat. Pośrednik pozwala na asynchroniczne przesyłanie wiadomości pomiędzy wysyłającym a odbiorcami. Kolejka (Queue) Kolejka – czyli dedykowane kanały dla każdego odbiorcy: Temat (Topic) Temat – czyli jedna wiadomość dla wszystkich: Plusy i minusy Kolejka Plusy Minusy Dedykowana struktura wiadomości dla …

Kolejka a Temat (Queue vs Topic) Czytaj dalej »

Projektowanie (design) vs. architektura (architecture) [Head First – Software Architecture]

Decyzje projektowe możemy przypisać do tych bardziej projektowych i tych bardziej związanych z architekturą. Przykładowo wybór stylu (mikro usługi czy monolit) będzie decyzją bardziej architektoniczną. Z drugiej strony zmiana pozycji przycisku w interfejsie użytkownika będzie decyzją projektową. Trochę więcej przykładów Architektura Pomiędzy Projektowanie Decyzja o użyciu bazy grafowej Wybór frameworka dla front-endu Wybór biblioteki parsującej …

Projektowanie (design) vs. architektura (architecture) [Head First – Software Architecture] Czytaj dalej »

Cztery wymiary architektury [Head First – Software Architecture]

Architekturę systemu można zazwyczaj opisać za pomocą czterech wymiarów:– Charakterystyki– Komponenty Logiczne– Styl– Decyzje Charakterystyki Opisują to jaki ma być system. Przykładowo ma być:– skalowalny (ang. scalability)– dostępny w określonym czasie (ang. availability)– wydajny (ang. performance)– bezpieczny (ang. security)– niezawodny (ang. reliability)– odporny na wywałkę systemu (ang. resilience)- zdolność systemu do odzyskiwania po awariach lub …

Cztery wymiary architektury [Head First – Software Architecture] Czytaj dalej »

Idea fail-fast

Idea fail-fast mówi o tym, że najlepiej żeby system/program/cokolwiek wywaliło się jak najszybciej. No to lecimy z przykładami 🙂 Metoda/obiekt – programowanie obiektowe Tutaj idea fail-fast będzie polegała na jak najszybszej weryfikacji otrzymywanych parametrów. Metoda Klasa Kosztowne obliczenia Załóżmy, że mamy system, który na pewnym etapie wykonuje obliczenia które są bardzo kosztowne (na przykład uczenie …

Idea fail-fast Czytaj dalej »

CQS oraz CQRS

CQS (Command Query Separation) oraz CQRS (Command and Query Responsibility Segregation) to zbliżone do siebie terminy. Obydwa opisują potrzebę rozdzielenia komend (command) i zapytań (query). Ale opisują ją na innych poziomach. Komenda – command Jest to operacja która modyfikuje stan systemu, ale nie zwraca przy okazji jego wewnętrznego stanu (może zwrócić rezultat wykonania komendy, ale …

CQS oraz CQRS Czytaj dalej »