KOLOS1 Flashcards

(51 cards)

1
Q

Clean Architecture

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Clean Architecture (moduły)

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Clean Architecture (wady zalety)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

ADR (Architecture Doc. Record)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

DDD (Domain Driven Design)

A

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ą

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

ADM (Anemic Domain Model)

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Domena

A

Pewien obszar odpowiedzialności naszego projektu np. W systemie rezerwacji jedną domeną może być zarządzanie liczbą gości.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Domain Object

A

To serce domeny czyli główna klasa która reprezentuje główną ideę obsługiwaną przez domenę

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

DAO (Data Access Object)

A

Jest obiektem singleton i jest klasą odpowiedzialną za odczyt i zapis obiektów domenowych do bazy danych

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

DTO (Data Transfer Object)

A

to obiekty posiadające tylko surowe dane (obsługują jedynie gettery) Nie mają Logiki Biznesowej

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

C4 (Context, Containers, Components, Code)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Monolit

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Modularny Monolit

A

Monolit który ma separowalne moduły, które dałoby się wydzielić

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

SOA (Service Oriented Architecture)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Mikroserwisy

A

są implementacjami wzorca SOA czyli samodzielne niezależne uslugi które budują cały projekt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Logika Biznesowa

A

(Algorytm biznesowy) zawiera algorytmy związane z głównymi funkcjonalnościami i operacjami biznesowymi aplikacji. Odpowiada za przetwarzanie danych i podejmowanie decyzji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Logika Aplikacji

A

Część oprogramowania zarządzająca przepływem danych i interakcjami pomiędzy interfejsem, danymi a logiką biznesową

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Separacja

A

podział oprogramowania na moduły, jak najmniej pokrywające się między sobą funkcjonalnością

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

IaC (Infrastructure AS Code)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

SOAP ( Simple Object Access Protocol)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

REST ( Representation State Transfer )

A

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.

22
Q

SOAP vs REST

A

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)

23
Q

JMS ( Java Message System )

A

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.

24
Q

CQRS ( Command Query Responsibility Segregation )

A

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

25
ES (Event Sourcing )
Wzorzec projektowy w którym przechowujemy chronologiczną sekwencje zmian które zostały wprowadzone w systemie. Dzięki temu możemy odtworzyć dowolny stan systemu z przeszłości. Pomaga w utrzymaniu spójności danych.
26
Polyglot Persistence
Podejście w projektowniu aplikacji w którym stosujemy różne rodzaje przechowywania danych. Na przykład jednocześnie relacyjną i nie relacyjną bazę danych. Takie podejście zapewnia elastyczność i skalowalność oraz lepsze dopasowanie do potrzeb aplikacji.
27
JPA ( Java Persistence Api )
tandard ORM (Object - Relational Mapping). Czyli interfejs dający możliwość programistom operowania na encjach i zapisywania wyników do bazy za pomocą obiektów w Javie. Dostarcza język JPQL który używa obiektów javowych do tworzenia zapytań do baz danych Query query = entityManager.createQuery("UPDATE …");
28
FTS ( Full Text Search )
Technika która pozwala wyszukiwać w tekście uwzględniając znaczenie słów. Na przykład gdy wyszukamy frazę "kot" wyszukiwarka dopasuje frazy "Kotek", "kotka".
29
ACID ( Atomic Consistency Isolation Durability )
Zestaw instrukcji jak wykonywać operacje na bazie danych. Zapewnia że wykonywana transakcja jest zawsze spójna A - operacje wykonywane są w całości albo wcale C - po zakończeniu operacji baza danych pozostaje w spójnym stanie I - operacje w różnych wątkach są oddzielane od siebie D - po zakończeniu operacji nie stracimy danych nawet przy awarii
30
BASE ( Basically Available, Soft State, Eventual Consistency )
Kładzie nacisk na dostępność danych a nie ich spójność. System może być w stanie niespójności (nieoznaczonym) i będzie starał się go rozwiązać. System po transakcji będzie dążył do osiągnięcia spójności w określonym czasie. Zawsze odpowie na zapytanie nawet podczas awarii.
31
Twierdzenie CAP (Consistency Availability Partition Tolerance)
Twierdzenie mówi że na raz da się osiągnąć tylko dwie z wymienionych właściwości systemów. Czyli projektant powinien wybrać dwie i dostosować projekt do tych własności.
32
Transakcje Rozproszone
Umożliwiają aplikacjom klienckim operacje na rozporoszonych danych w ramach jednej transakcji. Na przykład transfer pieniędzy w banku który ma system rozproszony na kilku serwerach. Transakcje muszą zapewniać zasady ACID oraz być skoordynowane i współbieżne
33
TDD ( Test Driven Development )
Nie tworzymy oprogramowania zanim nie napiszemy do niego testów które nie przechodzą. Test -> Code -> Refactor (repeat)
34
Testy Manualne
Testowanie oprogramowania w taki sposób jak testował by je klient. Czyli uruchamiamy program i wykonujemy określone scenariusze, które określają czy kod działa poprawnie.
35
Testy Automatyczne
Testy są tworzone i uruchamiane automatycznie przy użyciu skryptów. Tworzymy testy jednostkowe/integracyjne i uruchamiamy je automatycznie po wprowadzonych zmianach.
36
Piramida Testów
1. Jednostkowe 2.Integracyjne 3.Akceptacyjne 4.E/e, GUI
37
Testy Jednostkowe
Testują małą funkcjonalność, są szybkie i pokrywają wiele przypadków testowych, dzięki nim łatwo znajdujemy błędy i możemy reużywać oprogramowanie
38
Testy Integracyjne
Testowanie kilku warstw kodu np. sprawdzenie czy baza danych współpracuje z aplikacją np. Test przepływu danych
39
Testy Akceptacyjne
Testują cały system, są czytelne dla biznesu i zapisują jak działa system i udowadniają że cała aplikacja działa.
40
Testy GUI
Testowanie ręczne przez testerów - sprawdzenie czy część graficzna działa poprawnie np. czy guziki się dobrze wyświetlają
41
Testy End-2-End
Testowanie od początku do końca całego systemu przez scenariusze użytkowania. Testowane są wszystkie warstwy aplikacji na raz.
42
CI / CD : np. Jenkins, Gitlab
Ciągła Integracja - Ciągłe integrowanie programu czyli commitujemy od razu zmiany do repozytorium odpalamy testy i jeżeli testy przechodzą to zmiany są zatwierdzane. Dzięki temu ciągle dostarczamy nowe funkcjonalności i zapewniamy że kod działa i mamy dużo małych commitów. Ciągłe Dostarczanie - Ciągłe wdrażanie zmian do środowiska. Gdy skończymy proces integracji zmiany są automatycznie wdrażane i gotowe dla użytkowników.
43
Konteneryzacja
○ Izolują tylko aplikacje i zależności wewnątrz kontenera, korzystają i dzielą między sobą zasoby hosta takie jak CPU czy RAM ○ Uruchamiają się szybciej niż wirtualizacja ○ Istnieje ryzyko konfliktów pomiędzy kontenerami ○ Służą do uruchamiania wielu instancji aplikacji na jednym systemie operacyjnym
44
Wirtualizacja
○ Każda wirtualka ma własny system operacyjny i odrębne zasoby ○ Wolniej się uruchamia ○ Wyższa izolacja aplikacji ○ Służy do uruchomienia różnych systemów operacyjnych na jednym serwerze
45
GitFlow
taki sposób zarządzania kodem by było dużo gałęzi które logicznie ze sobą współpracują: * Master - stabilny kod gotowy do wdrożenia * Develop - kod w którym pracujemy nad nowymi funkcjonalnościami * Feature - gałęź do rozwijania nowego featureka, jest mergowana z Developem * Release - gałęź do wdrażania oprogramowania * Hotfix - gałęź do pilnych poprawek kodu
46
Maven/Gradle
narzędzia do zarządzania zależnościami w kodzie budowania i automatyzacji. * Łatwe importowanie bibliotek i frameworków do kodu wystarczy dodać dependency w pliku xml * Automatyzacja budowania projektu * Kontrolowanie zależności w jednym pliku pomaga rozwiązać konflikty między nimi np. to że dane 2 biblioteki potrzebują wzajemnie różnych wersji
47
Jenkins
narzędzia do CI (Continous Integration) czyli automatyczne kompilowanie i testowanie kodu źródłowego za każdym razem, gdy są dokonywane zmiany w repozytorium kodu
48
Docker
platforma do konteneryzacji, umożliwia pakowanie, dostarczanie i uruchamianie aplikacji oraz ich zależności w izolowanych kontenerach.
49
Kubernetes
narzędzie to zarządzania kontenerami które umożliwia automatyzacje wdrażania aplikacji kontenerowych. Zapewnia skalowalność, niezawodność i efektywność operacyjna w środowisku chmurowym.
50
Ansible
narzędzie do IaC (Infrastructure as Code). Czyli do automatyzacji wdrażania konfiguracji i zarządzania. Może działać na rodzinie Unix i Windows. Jest bez-agentowy i działa przez połączenie SSH które umożliwia uruchomienie PowerShell
51
Terraform (też)
Też narzędzie do IaC (Infrastructure as Code). Umożliwia definiowanie zasobów w chmurze i przechowywanie tego w plikach tekstowych jako kod.