diff --git a/chapters/infrastructure.tex b/chapters/infrastructure.tex index b49814d..f3bc0a4 100755 --- a/chapters/infrastructure.tex +++ b/chapters/infrastructure.tex @@ -21,6 +21,17 @@ Au niveau des composants destinés à épauler ces applications, nous pouvons di \textbf{Les composants de supervision}, qui permettent de s'assurer que tout fonctionne correctement, et qu'aucun incident n'est prévu ou n'a été constaté récemment. \end{enumerate} +\textit{Designing for production} means thinking about production issues as first-class concerns: \cite[pp. 142-143]{release_it}: + +\begin{itemize} + \item \textbf{Operations}: Security, availablity, capacity, status, communication, + \item \textbf{Control plane}: Monitoring, deployment, anomaly detection, new features + \item \textbf{Interconnect}: Routing, load balancing, failover, traffic management + \item \textbf{Instances}: Services, processes, components, instance monitoring + \item \textbf{Foundation}: Hardware, VMs, IP addresses, physical network. +\end{itemize} + + \section{Composants fonctionnels} \begin{figure}[H] @@ -164,6 +175,19 @@ Au niveau logiciel (la partie mise en subrillance ci-dessus), la requête arrive https://circus.readthedocs.io/en/latest/, https://uwsgi-docs.readthedocs.io/en/latest/, statsd +\begin{quote} +When we crash an actor or a process, how does a new one get started ? +You could write a bash script with a while() loop in it. +But what happens when the problem persists across restarts ? +The script basically fork-bombs the server. \cite[p. 109-110]{release_it} +\end{quote} + +Actors system use a hierarchical tree of supervisors to manage the restarts. +Whenever an actor terminates, the runtime notifies the supervisor. +The supervisor can then decide to restart the child actor, restart all of its children, or crash itself. +If the supervisor crashes, the runtime will terminate all its children and notify the supervisor's supervisor. +Ultimately you can get while branches of the supervision tree to restart with a clean state. + \subsection{Journaux d'évènements} diff --git a/chapters/python.tex b/chapters/python.tex index 6f2cc6d..00af56d 100755 --- a/chapters/python.tex +++ b/chapters/python.tex @@ -1064,7 +1064,9 @@ Cet élément peut être: \subsubsection{Ignorer une ligne de code} +\begin{listing} +\end{listing} \subsubsection{Ignorer un bloc de code} diff --git a/references.bib b/references.bib index fdd8d7d..37dd6e7 100755 --- a/references.bib +++ b/references.bib @@ -100,6 +100,10 @@ isbn = {978-1-449-37332-0}, release = {Fifteenth release - 2021-03-26} } +@book{release_it, + title = {Release It!}, + author = {Michael T. Nygard} +} @book{rework, title = {Rework}, author = {David Heinemeier Hansson and Jason Fried},