Commit 53f8a8d0 authored by Jordi Masip's avatar Jordi Masip

Canvis a l'apartat Serveis Web

parent 07d486ac
......@@ -361,14 +361,29 @@ En el inici de programa, es crida \texttt{lib\_aci\_init} per començar el mode
\section{Serveis web}
Tal com es mostra la figura~\ref{fig:containers}, els serveis web estan formats per:
\subsection{Descripció}
Els serveis web que s'han desenvolupat en aquest treball tenen dues funcionalitats molt importants:
\begin{itemize}
\1 Oferir una eina senzilla, ràpida, còmode i múltiplataforma per escollir el contingut que "emetran" els punts d'interès.
\2 Facilitar l'accés a aquesta informació a les aplicacions mòbils.
\end{itemize}
S'ofereixen a través d'Internet, utilitzant el protocol HTTP(S). Aquests serveis es poden biseccionar en quatre:
\begin{itemize}
\item \emph{Panell d'administració}: per administrar la informació del punt d'interès i.
\item \emph{API per Android}: endpoint per l'aplicació Android perquè pugui consultar la informació dels punt d'interès.
\item \emph{MariaDB}: base de dades relacional encarregada d'emmagatzemar tota la informació que es gestiona al panell d'administració.
\item \emph{Redis}: base de dades NoSQL volàtil que permet mantenir les sessions d'usuari del panell d'administració obertes.
\item Accessible des d'Internet:
\subitem \emph{Panell d'administració}: per administrar la informació del punt d'interès.
\subitem \emph{API per Android}: endpoint per l'aplicació Android perquè pugui consultar la informació dels punt d'interès.
\item D'ús intern:
\subitem \emph{MariaDB}: base de dades relacional encarregada d'emmagatzemar tota la informació que es gestiona al panell d'administració.
\subitem \emph{Redis}: base de dades NoSQL volàtil que permet mantenir les sessions d'usuari del panell d'administració obertes.
\end{itemize}
\subsection{Infraestructura}
\begin{figure}[H]
\centering
\includegraphics[width=0.3\textwidth]{imatges/containers.pdf}
......@@ -376,23 +391,21 @@ Tal com es mostra la figura~\ref{fig:containers}, els serveis web estan formats
\label{fig:containers}
\end{figure}
Els serveis web que són accessibles a través d'internet són el panell d'administració i l'API per l'aplicació d'Android. Aquests dos serveis comparteixen la mateixa base de dades MariaDB.
Els quatre serveis que apareixen a la figura~\ref{fig:containers} estan aïllats entre sí. Aïllar els serveis en màquines diferentes és una bona idea perquè si un dels serveis web es veu compromès, serà més difícil comprometre els altres serveis. Separar els serveis web afavoreix més independència, flexibilitat i seguretat.
A la figura~\ref{fig:containers} es pot observar que els quatre serveis estan aïllats entre sí. Aïllar els serveis en màquines diferentes és una bona idea perquè si un dels serveis web es veu compromès, serà més difícil comprometre els altres serveis. Separar els serveis web afavoreix més independència, flexibilitat i seguretat.
A priori, un pot pensar que separar els serveis en quatre màquines (físiques) diferents implica haver de gastar més recursos en maquinària, però és possible aconseguir l'aïllament dels serveis utilitzant només una màquina (física). Es disposa de tres opcions:
Per aconseguir aquest aïllament existeixen diverses solucuions. A priori, un pot pensar en separar els serveis en quatre màquines (físiques) diferents, però implica haver de gastar més recursos en maquinària. Altres solucions permeten aconseguir l'aïllament dels serveis utilitzant només una màquina (física):
\begin{itemize}
\item \emph{Emular}: TODO
\item \emph{Virtualitzar}: TODO
\item \emph{Contenidor}: TODO
\item \emph{Emular}: % TODO
\item \emph{Virtualitzar}: % TODO
\item \emph{Contenidor}: % TODO
\end{itemize}
En aquest treball s'ha obtat per treballar amb contenidors, utilitzant l'eina Docker.
Docker \cite{docker_overview} proporciona la capacitat d'empaquetar i executar una aplicació en un entorn sense prémer aïllat anomenat contenidor. L'aïllament i la seguretat li permeten executar molts contenidors de forma simultània en una màquina. A causa de la naturalesa lleugera dels contenidors, que s'executen sense la càrrega addicional d'un hipervisor, pot executar més contenidors en una combinació de maquinari donada que si estigués utilitzant màquines virtuals.
A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de sessions de usuaris de web d'administració~\ref{tab:docker_containers}.
% REVISAR: A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de sessions de usuaris de web d'administració~\ref{tab:docker_containers}.
\begin{table}
\centering
......@@ -400,7 +413,7 @@ A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de s
\hline
& nom & servei & SO \\ \hline
1 & mariadb & MariaDB 10.1 & Debian Jessie \\ \hline
2 & redis & Redis & Alpine \\ \hline
2 & redis & Redis & Debian Jessie \\ \hline
3 & flask-admin & Flask & Ubuntu 16.04 \\ \hline
4 & flask-api-android & Flask & Ubuntu 16.04 \\
\hline
......@@ -409,6 +422,10 @@ A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de s
\label{tab:docker_containers}
\end{table}
\subsection{Gestió i desplegament}
Per realitzar el desplegament d'aquests serveis s'ha optat per uilitzar \emph{Docker-Compose}. Docker Compose permet % ACABAR
\subsection{Base de dades}
Es disposa una base de dades relacional SQL, s'utilitza MariaDB \cite{mariadb} com el sistema de gestió de bases de dades. MariaDB és una branca de MySQL impulsada per la comunitat per tal de mantenir el seu estat lliure sota la GNU GPL. \\
\\
......@@ -436,7 +453,7 @@ L'figura~\ref{fig:esquema_db} mostra l'esquema de base de dades.
% seguretat de base de dades
\subsection{Serveis web}
% millora aquesta part: definit api-rest i comenta una mica el codi
% millora aquesta part: definit api-rest i comentar una mica el codi
Un servidor web \cite{web_server} és un sistema informàtic que processa peticions a través d'HTTP. Es defineix front-end com a la capa de presentació que és la interfície entre usuari, i back-end com a la capa d'accés de dades. La web d'administració conté front-end i back-end i la web per aplicació mòbil només té back-end \cite{front_back_ends}.
El web de administració serveix per:
\begin{itemize}
......@@ -491,7 +508,8 @@ Jinja2 és un dels motors de plantilles per Python més utilitzat. Està inspira
La figura~\ref{fig:flask_app} representa l'estructura d'una aplicació flask, sota del directori \texttt{static} hi ha els fitxers CSS i Javascript i sota del directori \texttt{templates} hi ha les platilles en format Jinja2.
Pel web de administració és un web amb interació visual
Pel web de administració és un web amb interació visual % frase inacabada?
\texttt{JSON} JavaScript Object Notation, és un estàndard obert basat en text dissenyada per a intercanvi de dades llegible per humans. Deriva del llenguatge script JavaScript, per a representar estructures de dades simples i llistes associatives, anomenades objectes. El tipus MIME del JSON és \emph{application/json}. El format JSON s'utilitza habitualment per serialitzar i transmetre dades estructurades en una connexió de xarxa. S'utilitza principalment per intercanviar dades entre un servidor i una aplicació web, sent una alternativa a l'XML.
\section{L'aplicació Android}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment