eletrotupi / tcc/ commit / 7525d8c

thesis: show docker compose health conditionals

Pedro Lucas Porcellis porcellis@eletrotupi.com 14 days ago 7525d8cd90f7c43cad67990eed06c81f36ebfe63
Parents: 94993c0
1 file(s) changed
  • monografia/chapters/tech.tex +31 -0
monografia/chapters/tech.tex
1 1
\chapter{Tecnologias}
2 2

3 3
Este capítulo apresenta as principais tecnologias empregadas no desenvolvimento
4 4
do aplicativo, organizadas de acordo com a camada da arquitetura em que
5 5
atuam: front-end, back-end e infraestrutura/persistência de dados.
▸ 110 unchanged lines
116 116
executada de forma consistente em diferentes ambientes \citep{docker:2026}. O
117 117
Docker Compose é uma ferramenta complementar que permite definir e orquestrar
118 118
múltiplos contêineres --- e as relações entre eles --- por meio de um único
119 119
arquivo de configuração declarativo \citep{dockercompose:2026}.
120 120

121 +

122 +
No projeto, o Docker Compose é utilizado tanto no ambiente de desenvolvimento
123 +
quanto no ambiente de produção para orquestrar os serviços de banco de dados
124 +
(PostgreSQL), armazenamento em memória (Valkey) e da própria API, garantindo
125 +
que as versões e configurações desses serviços sejam idênticas entre as
126 +
máquinas de desenvolvimento e o servidor de produção. O uso de
127 +
\textit{healthchecks} em conjunto com a diretiva \texttt{depends\_on} e a
128 +
condição \texttt{service\_healthy} assegura que a API só seja iniciada após o
129 +
banco de dados e o Valkey estarem de fato prontos para aceitar conexões,
130 +
evitando falhas de inicialização por condição de corrida (race condition), como ilustrado no
131 +
Código~\ref{lst:healthcheck-compose}.
132 +

133 +
\begin{lstlisting}[caption={Configuração de \textit{healthcheck} do Valkey e de dependência condicional da API no \texttt{docker-compose.yml}}, label={lst:healthcheck-compose}]
134 +
valkey:
135 +
  image: valkey/valkey:9.0-alpine
136 +
  healthcheck:
137 +
    test: ["CMD", "valkey-cli", "ping"]
138 +
    interval: 10s
139 +
    timeout: 5s
140 +
    retries: 5
141 +
    start_period: 5s
142 +

143 +
api:
144 +
  build: ./api
145 +
  depends_on:
146 +
    valkey:
147 +
      condition: service_healthy
148 +
    db:
149 +
      condition: service_healthy
150 +
\end{lstlisting}
151 +

121 152
No projeto, o Docker Compose é utilizado tanto no ambiente de desenvolvimento
122 153
quanto no ambiente de produção para orquestrar os serviços de banco de dados
123 154
(PostgreSQL), armazenamento em memória (Valkey) e da própria API, garantindo
124 155
que as versões e configurações desses serviços sejam idênticas entre as
125 156
máquinas de desenvolvimento e o servidor de produção.
▸ 75 unchanged lines
201 232
ao documentar e automatizar o processo de provisionamento, o projeto
202 233
favorece um modelo mais alinhado aos princípios de privacidade e de
203 234
autonomia sobre os dados dos usuários, permitindo que instituições ou
204 235
indivíduos preocupados com a confidencialidade de dados sensíveis de
205 236
saúde mental hospedem e controlem sua própria instância da aplicação.