KOLOS1 Flashcards
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ź.