Continuing Alex Krupp's work review
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Fred Pauchet 2022-06-03 20:50:18 +02:00
parent dde67920d6
commit 09a1cd0506
6 changed files with 59 additions and 3 deletions

View File

@ -1,5 +1,7 @@
\chapter{Monitoring Stack}
InfluxDB ? https://www.influxdata.com/
\section{Visualisation}
\begin{quote}
@ -53,6 +55,12 @@ Feeding in your data is pretty easy, typically most of the effort is in collecti
Loki est l'équivalent (développé directement par Grafana) de Prometheus.
Il sera donc toujours nécessaire d'accumuler des logs au travers d'exporters.
\begin{quote}
Loki se comporte comme Prometheus : c'est un logiciel que vous allez installer sur votre machine qui sert pour le monitoring de votre infrastructure et le laisser vivre sa vie. Comme son mentor, ou presque, il va falloir lui associer des exporters pour le gaver de données : Promtail.
-- https://www.dadall.info/article698/loki-jouer-avec-ses-logs-dans-grafana
\end{quote}
\section{Traces}
Unlike other tracing tools, Grafana Traces does not index the traces which makes it possible to store orders of magnitude more trace data for the same cost, and removes the need for sampling.

View File

@ -91,8 +91,26 @@ class Contract(models.Model):
\section{Mise en place}
La configuration des points de terminaison de notre API est relativement
touffue. Il convient de:
La configuration des points de terminaison de notre API est relativement touffue.
Pour cette raison, il convient de s'infliger à suivre une structure qui soit similaire pour chaque point de terminaison \cite[Predictability, Rule \#1]{django_for_startup_founders}.
Il convient de:
\begin{enumerate}
\item
\textbf{Spécifier les permissions}
\item
\textbf{Copier et assainir les éléments communiqués en entrée vers des variables locales}
\item
\textbf{Valider les données d'entrée}
\item
\textbf{Enforce business requirements}
\item
\textbf{Perform busines logic}
\item
\textbf{Retourner une réponse HTTP}
\end{enumerate}
-> Répartir les responsabilités selon les composants ci-dessous
\begin{enumerate}
\item
@ -107,6 +125,11 @@ touffue. Il convient de:
\subsection{Serialiseurs}
Les sérialiseurs agissent litérallement comme des \texttt{forms}, mais au niveau de l'API.
Ils se basent sur un modèle, définit au niveau de la \texttt{class Meta}, permettent de choisir les champs qui seront sérialisés, définissent différentes méthodes d'accès à des propriétés spécifiques et des méthodes de validation.
Tout comme les forms.
Par exemple:
\begin{minted}{python}
# serializers.py

View File

@ -1,4 +1,4 @@
\chapter{Intégration continue}
\chapter{Intégration continue / Déploiement Continu}
https://circleci.com/pricing/

View File

@ -582,6 +582,21 @@ Ce gestionnaire constitue l'interface par laquelle vous accéderez à la base de
Mais pour cela, vous aurez aussi besoin d'appliquer certains requêtes ou filtres.
Et pour cela, vous aurez besoin des \texttt{querysets}, qui consistent en des ensembles de requêtes.
\subsection{Managers}
Les \texttt{managers} constituent une partie de la couche de "services" de notre application.
Ces services peuvent se trouver à trois endroits \cite[Rule \# 2]{django_for_startup_founders}:
\begin{enumerate}
\item Dans les modèles ou au niveau des managers
\item Dans les forms ou les sérializeurs
\item Dans une couche de services séparée du reste.
\end{enumerate}
\subsection{Querysets}
Si on veut connaître la requête SQL sous-jacente à l'exécution du queryset, il suffit d'appeler la fonction str() sur la propriété \texttt{query}:
\begin{verbatim}

View File

@ -200,3 +200,7 @@ Mais pour faciliter la gestion des bases de données elles-même, et si vous n'
\subsection{Qualité du code}
Code climate, SonarQube.
\section{Insomnia}

View File

@ -30,6 +30,12 @@
year = {2016},
type = {Book}
}
@misc{django_for_startup_founders,
title = {Django for Startup Founders: A better software architecture for SaaS startups and consumer apps},
author = {Alex Krupp},
year = {2021},
url = {https://alexkrupp.typepad.com/sensemaking/2021/06/django-for-startup-founders-a-better-software-architecture-for-saas-startups-and-consumer-apps.html}
}
@book{expert_python,
title = {Expert Python Programming},
author = {Jaworski, Michal and Ziadé, Tarek},