Arquitetura de Software

Conteúdo produzido pelas turmas de Arquitetura de Software - Computação @ UFCG

Fila da Creche - Documento arquitetural

Autores

Este documento foi produzido por Mateus de Lima Oliveira.

Descrição Arquitetural

Este documento descreve parte da arquitetura do projeto Fila de Creche. Essa descrição foi baseada principalmente no modelo C4. É importante destacar que este documento visa expor de forma mais abstrata como funciona o conjunto de ferramentas da aplicação e não necessariamente explicará em detalhes a sua implementação.

Descrição Geral sobre o Fila de Creche

O Fila da Creche é um projeto com iniciativa da Secretaria Municipal de Educação de São Paulo que busca facilitar o acompanhamento de geração de vagas na educação infantil de acordo com localização e faixa etária informadas. Mais detahes sobre o projeto podem ser vistos nesse link.

Objetivo Geral

Implementar, com transparência ativa, em linguagem simples e com acessibilidade digital, uma ferramenta para que os pais e famílias possam se programar e acompanhar a geração de vagas na educação infantil pela Secretaria Municipal de Educação de São Paulo.

Objetivos Específicos

Permitir que a qualquer pessoa saber como está a espera por atendimento nos Centros de Educação Infantil (CEIs), de acordo com o endereço fornecido e a faixa etária informada. Ela pode ser acessada por qualquer dispositivo móvel (como celular) ou computador com acesso à internet, sem precisar de instalação (download), assim evitando desinformações e locomoção dos responsáveis.

Contexto

Como vemos no diagrama abaixo, o Fila da Creche é composto pelo frontend e uma API que fornece acessa os dados disponíveis em uma base de dados das matrículas na cidade de São Paulo, que são requisitados utilizando o protocolo HTTP. De modo geral, o sistema funciona como um facilitador, entre o usuário e as bases de dados citadas, em que simplifica e filtra a obtenção de determinada informação de acordo com as informações passadas.

Visão da informação do Dispatch

Containers

O Fila da Creche é composto pelos três containers que serão descritos a seguir.

O primeiro deles é a Web Page, feita em React, que é responsável por pela interação com os usúarios do sistema e pela representação gráfica do sistema, ou seja, todo o HTML que o browser irá interpretar e renderizar para o usuário final.

O Banco de Dados é o container responsável por armazenar, de forma estruturada, todas as informações extraídas por meio do Airflow do banco de dados do Sistema Escola Online - EOL, onde tem as informações sobre o sistema de matricula múnicipal. Ele foi implementado em PostgreSQL e outros containers utilizam Psycopg.

O container API, é um conjunto de rotinas e padrões de programação para acesso das bases de dados do Fila da Creche. Ela foi implementada em Python juntamente com o framework Flask. Foram utilizados padrões REST e o acesso a esta API se dá por meio de requisições HTTP em formato JSON. Alguns dos endpoints disponíveis estão descritos a seguir.

GET /v1/schools/radius/string:lon/string:lat'

Descrição: Retorna as escolas/creches em um raio de distância (1,5 KM) do ponto passado pela latitude (lat) e longitude (lon).

GET /v1/schools/radius/wait/string:lon/string:lat/int:groupCode'

Descrição: Retorna as escolas/creches em um raio de distância (1,5 KM) do ponto passado pela latitude (lat) e longitude (lon) com o tamanho das filas de espera para matrículas baseado no grupo da criança (definido a partir da idade).

O diagrama apresentado abaixo descreve os containers que compõem o Fila de Creche.

Visão da informação do Dispatch

Componentes

A fim de detalhamento, podemos dividir o container Frontend outros dois componentes: Utils e Pages.

O componente Utils, que usa Javascript, é composto por ações de verificação de registros, responsabilidade de fazer requests a API e calculos internos que são utilizados em páginas HTML, compondo de forma fragmentada, funcionalidades para interação do usuário no sistema. Pages, que usa React, faaz o recebimento dos dados dos usuários e fornece os dados solicitados sobre as vagas e creches em mapas. Outro componente incluido para maior detalhamento é o Airflow, que contém DAGs (Directed Acyclic Graph) internas para trazer dados de do banco de dados municipal para o do Fila da Creche.

Logo abaixo, temos o diagrama de componentes para o Fila da Creche:

Visão da informação do Dispatch

Código

Nesta etapa não faremos diagramas que apresentam detalhes da
implementação. Faremos isso mais adiante.

Visão de Informação

Como sabemos, a principal funcionalidade do projeto Fila da Creche é apresentar informações sobre o preenchimento de vagas em creches de São Paulo. Dessa forma, nesta seção abordaremos de maneira simplificada, o percurso habitual que os usuários percorrem na busca das informações disponibilizadas pela aplicação em estudo.

Na página inicial, o usuário se encontra uma breve apresentação da plataforma e, logo em seguida, duas caixas de seleção para mês e ano de nascimento da criança e um campo para digitar a rua e número de residência. A contulta pose ser feita quando os três campos forem preenchidos.

Após ser clicado no botão de consultar, é feito o recebimento dos dados e ,se bem-sucedida, mostrada as informações ao usuário, que pode voltar a página inicial e refazer a consulta. Caso o recebimento de dados não seja de sucesso, como por exemplo ocorra algum problema com conexão/internet, a mesma página de sucesso é exibida porém sem nenhum dos dados de vagas e creches requisitados.

Vejamos abaixo, uma máquina de estados que ilustra fluxo da informação da aplicação estudada, para principais interações de um usuário:

Visão da informação do Dispatch