KOLOS1 Flashcards

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
Q

ES (Event Sourcing )

A

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
Q

Polyglot Persistence

A

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
Q

JPA ( Java Persistence Api )

A

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
Q

FTS ( Full Text Search )

A

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
Q

ACID ( Atomic Consistency Isolation Durability )

A

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
Q

BASE ( Basically Available, Soft State, Eventual Consistency )

A

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
Q

Twierdzenie CAP (Consistency Availability Partition Tolerance)

A

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
Q

Transakcje Rozproszone

A

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
Q

TDD ( Test Driven Development )

A

Nie tworzymy oprogramowania zanim nie napiszemy do niego testów które nie przechodzą. Test -> Code -> Refactor (repeat)

34
Q

Testy Manualne

A

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
Q

Testy Automatyczne

A

Testy są tworzone i uruchamiane automatycznie przy użyciu skryptów. Tworzymy testy jednostkowe/integracyjne i uruchamiamy je automatycznie po wprowadzonych zmianach.

36
Q

Piramida Testów

A
  1. Jednostkowe
    2.Integracyjne
    3.Akceptacyjne
    4.E/e, GUI
37
Q

Testy Jednostkowe

A

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
Q

Testy Integracyjne

A

Testowanie kilku warstw kodu np. sprawdzenie czy baza danych współpracuje z aplikacją np. Test przepływu danych

39
Q

Testy Akceptacyjne

A

Testują cały system, są czytelne dla biznesu i zapisują jak działa system i udowadniają że cała aplikacja działa.

40
Q

Testy GUI

A

Testowanie ręczne przez testerów - sprawdzenie czy część graficzna działa poprawnie np. czy guziki się dobrze wyświetlają

41
Q

Testy End-2-End

A

Testowanie od początku do końca całego systemu przez scenariusze użytkowania. Testowane są wszystkie warstwy aplikacji na raz.

42
Q

CI / CD : np. Jenkins, Gitlab

A

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
Q

Konteneryzacja

A

○ 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
Q

Wirtualizacja

A

○ 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
Q

GitFlow

A

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
Q

Maven/Gradle

A

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
Q

Jenkins

A

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
Q

Docker

A

platforma do konteneryzacji, umożliwia pakowanie, dostarczanie i uruchamianie aplikacji oraz ich zależności w izolowanych kontenerach.

49
Q

Kubernetes

A

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
Q

Ansible

A

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
Q

Terraform (też)

A

Też narzędzie do IaC (Infrastructure as Code). Umożliwia definiowanie zasobów w chmurze i przechowywanie tego w plikach tekstowych jako kod.