WUT_Computer_Science/report/final/ver1/main.tex

237 lines
6.9 KiB
TeX
Raw Normal View History

2025-04-13 17:17:38 +02:00
\documentclass[a4paper,12pt]{article}
% Packages
\usepackage{amsmath, amssymb, amsthm} % For math symbols and theorems
\usepackage{graphicx} % For including images
\usepackage{hyperref} % For hyperlinks
\usepackage{geometry} % Page layout
\usepackage{fancyhdr} % Header and footer
\usepackage{listings} % Code listings
\usepackage{xcolor} % Colors for code
\usepackage{biblatex} % References
\usepackage{float} % Dodaj na początku dokumentu
\usepackage{polski} % Obsługa języka polskiego
\addbibresource{references.bib}
% Page Setup
\geometry{margin=1in}
\pagestyle{fancy}
\fancyhf{}
\rhead{\thepage}
\lhead{Small Documentation}
\renewcommand{\headrulewidth}{0.4pt}
% Code Formatting
\lstset{
language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
breaklines=true,
frame=single
}
% Theorem, Definition, and Example Styles
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem{theorem}{Theorem}
\newtheorem{example}{Example}
\begin{document}
% Title Page
\title{AIS \\ Projekt}
\author{Jakub Woźniak 318745 \\ Filip Budzyński 319021 \\}
\date{\small \today}
\maketitle
\begin{abstract}
Projekt opiera sie...
\end{abstract}
\tableofcontents
\newpage
\section{Wymagania funkcjonalne}
\subsection{Pogrupowana lista wymagań}
\begin{itemize}
\item \textbf{Rejestracja i zarządzanie kontem}
\begin{itemize}
\item Rejestracja konta użytkownika (indywidualnego lub firmowego)
\item Dodawanie pojazdów i przypisywanie urządzeń lokalizacyjnych
\item Zarządzanie danymi użytkownika
\end{itemize}
\item \textbf{Monitoring pojazdów}
\begin{itemize}
\item Odbieranie danych GPS w czasie rzeczywistym
\item Identyfikacja płatnych odcinków
\item Obsługa przerw w sygnale
\end{itemize}
\item \textbf{Naliczanie opłat}
\begin{itemize}
\item Analiza przejazdu i naliczanie opłaty
\item Uwzględnianie kategorii pojazdu, pory dnia, długości trasy
\item Obsługa taryf i zniżek
\end{itemize}
\item \textbf{Płatności i fakturowanie}
\begin{itemize}
\item Doładowanie konta
\item Historia opłat i przejazdów
\item Generowanie faktur
\end{itemize}
\item \textbf{Obsługa wyjątków}
\begin{itemize}
\item Brak sygnału GPS interpolacja pozycji
\item Brak środków powiadomienie i odroczenie płatności
\item Korekta błędnych danych, reklamacje
\end{itemize}
\end{itemize}
\subsection{Kluczowy proces biznesowy: Naliczanie opłaty}
\begin{itemize}
\item \textbf{Cel:} Naliczenie opłaty za przejazd przez płatny odcinek drogi
\item \textbf{Stan początkowy:} System odbiera dane GPS pojazdu
\item \textbf{Stan końcowy:} Opłata naliczona i zarejestrowana
\item \textbf{Kroki:}
\begin{enumerate}
\item Odbiór danych GPS
\item Detekcja wjazdu/zjazdu z odcinka
\item Obliczenie opłaty
\item Sprawdzenie środków:
\begin{itemize}
\item Jeśli są: pobranie opłaty
\item Jeśli brak: zapis zobowiązania, notyfikacja
\end{itemize}
\item Zapis transakcji
\item Wystawienie e-faktury
\end{enumerate}
\end{itemize}
\section{Wymagania niefunkcjonalne}
\begin{itemize}
\item \textbf{Skala działania:} Polska, z możliwością rozszerzenia na UE
\item \textbf{Liczba klientów:} do 7 milionów aktywnych użytkowników
\item \textbf{Zdarzenia biznesowe:}
\begin{itemize}
\item 5 mln przejazdów dziennie
\item 200 tys. opłat/h
\item 10 tys. zapytań/min
\end{itemize}
\item \textbf{Wydajność:} <1s latencji, \textless 200 ms API
\item \textbf{Niezawodność:} SLA 99.95\%, redundancja
\item \textbf{Bezpieczeństwo:}
\begin{itemize}
\item TLS, MFA, role
\item Szyfrowanie danych lokalizacyjnych
\item Zgodność z RODO
\end{itemize}
\end{itemize}
\section{Model C4}
\begin{itemize}
\item \textbf{Poziom 1:} Kontekst użytkownicy, systemy zewnętrzne, urządzenia
\item \textbf{Poziom 2:} Kontenery frontend, backend, baza, billing
\item \textbf{Poziom 3:} Komponenty mikroserwisy: płatności, GPS, billing, notyfikacje
\end{itemize}
\section{Diagramy}
\begin{itemize}
\item \textbf{Diagram dynamiczny:} Proces naliczania opłaty
\item \textbf{Diagram wdrożenia:} Kubernetes, CDN, bazy danych, load balancer
\end{itemize}
\section{Zastosowane wzorce i taktyki}
\begin{itemize}
\item CQRS oddzielenie zapisu i odczytu
\item Event-Driven Architecture system oparty na zdarzeniach
\item Saga Pattern do obsługi błędów i retry
\item Service Mesh np. Istio
\item Cache Aside Redis dla odczytów
\item Sharding danych lokalizacyjnych
\end{itemize}
\section{Model MAD 2.0 decyzje architektoniczne}
\begin{tabular}{|p{4cm}|p{4cm}|p{7cm}|}
\hline
\textbf{Decyzja} & \textbf{Alternatywy} & \textbf{Uzasadnienie} \\
\hline
Architektura mikroserwisowa & Monolit & Skalowalność i niezależny rozwój komponentów \\
\hline
TimescaleDB & MongoDB, Cassandra & Dane czasowo-lokalizacyjne w zoptymalizowany sposób \\
\hline
gRPC do komunikacji & REST & Wydajność, binarny format, mniejsze opóźnienia \\
\hline
Kafka jako event broker & RabbitMQ & Lepsza wydajność dla dużych wolumenów danych \\
\hline
Kubernetes & VM & Skalowalność, automatyzacja, dostępność \\
\hline
\end{tabular}
% ===============
% MODELE MAD 2.0
% ===============
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-wybor-architektury.png}
\caption{Model MAD 2.0 dla decyzji wyboru architektury systemu.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-organizacja-aplikacji-serwerowej.png}
\caption{Model MAD 2.0 dla decyzji organizacji aplikacji serwerowej.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-dostep-do-systemu.png}
\caption{Model MAD 2.0 dla decyzji dostępu do systemu.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-uprawniania-uzytkownikow.png}
\caption{Model MAD 2.0 dla decyzji o uprawnianiach dla użytkowników.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-obsluga-platnosci-archiwizacja-danych.png}
\caption{Model MAD 2.0 dla decyzji o realizacji obsługi płatności i archiwizacji danych.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-zapewnienie-dostepnosci.png}
\caption{Model MAD 2.0 dla decyzji zapewnienia dostępności i odporności na awarie.}
\label{fig:csr}
\end{figure}
\begin{figure}[h]
\centering \includegraphics[width=0.8\textwidth]{mad/mad2-wybor-tech-wdrozeniowej.png}
\caption{Model MAD 2.0 dla decyzji wyboru technologii wdrożeniowej.}
\label{fig:csr}
\end{figure}
\end{document}
\printbibliography
\end{document}