KOLOS1 Flashcards
(51 cards)
Clean Architecture
Podejście do wytwarzania oprogramowania. Ma być łatwe do Zrozumienia, Rozwoju, Utrzymania i wdrożenia.
Dzielimy program na 4 moduły z których każdy powinien odpowiadać za 1 zadanie i być łatwy do Wyizolowania od reszty
Clean Architecture (moduły)
- APP - Najmocniej połączona z clean arch. Zawiera logikę wyświetlania obługuje żądania warstwy interfejsu użytkownika.
- PRESENTATION - Steruje aplikacją i poszczególnymi ekranami
- DOMAIN - zawiera logikę biznesową (np.. Use case’y)
- DATA - daje dostęp do danych i modeli.
Clean Architecture (wady zalety)
Wady: Czasochłonność implementacji, potrzeba wiedzy i ekspertyzy, duża ilość małych klas i interfejsów
Zalety: Łatwiejsze utrzymanie, rozwój i zarządzanie zmianami w projekcie
ADR (Architecture Doc. Record)
Dokument zawierający rejestr decyzji architektonicznych w projekcie. Pomaga śledzić i robić backtracking decyzji.
Log = Title + Status + Context + Decision + Explanation
Log = Warstwa prezentacji aplikacji + Zaproponowany + trzeba wybrać jakąś technologię
+ React.js + jest popularny i szeroko wspierany
DDD (Domain Driven Design)
podejście do wytwarzania oprogramowania kładące nacisk na jak najwierniejsze odzwierciedlenie rzeczywistości (dla obiektów i komponentów systemu).
Chodzi o to żeby architektura oprogramowania odzwierciedlała logikę biznesową
ADM (Anemic Domain Model)
Odnosi się dospecyficznego przypadku DDD w którym model dziedziny biznesowej jest pozbawiony logiki czyli zawiera tylko dane a operacje wykonywane na tych danych są upchnięte w innych częściach aplikacji.
Jest to niebezpieczne bo może prowadzić do braku spójności (nie wiadomo gdzie szukać tej logiki w kodzie)
Domena
Pewien obszar odpowiedzialności naszego projektu np. W systemie rezerwacji jedną domeną może być zarządzanie liczbą gości.
Domain Object
To serce domeny czyli główna klasa która reprezentuje główną ideę obsługiwaną przez domenę
DAO (Data Access Object)
Jest obiektem singleton i jest klasą odpowiedzialną za odczyt i zapis obiektów domenowych do bazy danych
DTO (Data Transfer Object)
to obiekty posiadające tylko surowe dane (obsługują jedynie gettery) Nie mają Logiki Biznesowej
C4 (Context, Containers, Components, Code)
metoda modelowania architektury która pomaga zrozumieć różne poziomy abstrakcji:
* CONTEXT - najwyższy poziom abstrakcji przedstawia interakcje Aktor - System
* CONTAINTERS - W kontenerach siedzą komponenty o podobnych funkcjonalnościach przykładowo Serwer, Baza danych
* COMPONENTS - Części programu reprezentujące logikę biznesową lub funkcjonalności lub usługi
* CODE - najniższy poziom abstrakcji reprezentujący kod źródłowy
Monolit
rodzaj systemu zimplementownaego jako jedna całość. Nie da się w nim rozdzielić poszczególnych części - cała funkcjonalność i logika jest spójna nie separowalna
Modularny Monolit
Monolit który ma separowalne moduły, które dałoby się wydzielić
SOA (Service Oriented Architecture)
wzorzec projektowy, w którym rozbijamy oprogramowanie na wiele niezależnych samodzielnych usług, skupiamy się na tworzeniu małych systemów które możemy w razie czego separować. Czyli robimy Mikroserwisy
Mikroserwisy
są implementacjami wzorca SOA czyli samodzielne niezależne uslugi które budują cały projekt.
Logika Biznesowa
(Algorytm biznesowy) zawiera algorytmy związane z głównymi funkcjonalnościami i operacjami biznesowymi aplikacji. Odpowiada za przetwarzanie danych i podejmowanie decyzji.
Logika Aplikacji
Część oprogramowania zarządzająca przepływem danych i interakcjami pomiędzy interfejsem, danymi a logiką biznesową
Separacja
podział oprogramowania na moduły, jak najmniej pokrywające się między sobą funkcjonalnością
IaC (Infrastructure AS Code)
podejście do zarządzania infrastrukturą w którym definiujemy ją za pomocą kodu w np. Terraform/Ansible. Dzieki temu możemy autmoatyzować proces konfiguracji i przechowywać infrastrukturę w postaci plików na Gitcie
SOAP ( Simple Object Access Protocol)
Protokół komunikacyjny do wysyłania informacji pomiędzy aplikacjami. Opiera się na języku XML i wysyła dane w formacie tekstowym. Działa na zasadzie klient - serwer gdzie klient wysyła zapytanie HTTP do serwera i otrzymuje od niego jakąś odpowiedź.
REST ( Representation State Transfer )
REST jest stylem architektonicznym służącym do projektowania interfejsów API za pomocą protokołu HTTP. Jego główną zaletą jest elastyczność. Nie jest protokołem tak jak SOAP. Można go określić jako usługę/serwis bezstanowy komunikujący się w relacji serwer-klient.
SOAP vs REST
SOAP:
- dane tylko w XML
- HTTP, UDP, SMTP
- Mniej Wydajny
REST:
- Dane w XML, JSON, YAML…
- HTTP/S
- bardziej wydajny
- Bardziej elastyczny (dla rozmiaru danych)
JMS ( Java Message System )
To standardowe API służące do wysyłania i odbierania komunikatów między aplikacjami (Asynchronicznie).
W tych komunikatach mogą być zawarte informacje lub polecenia dla różnych części systemu. Używane w rozproszonych systemach lub do ich integracji.
Często korzystają z mechanizmów niezawodności. Wiadomość składa się z Nagłówka i części z Danymi.
CQRS ( Command Query Responsibility Segregation )
Wzorzec projektowy w którym każda metoda powinna być sklasyfikowana jako Command lub Query.
Command - Zmienia stan aplikacji ale nic nie zwraca
Query - Coś zwraca ale nie zmienia stanu aplikacji