Skip to main content

Conclusão do backend

Introdução

Este backend consiste em um sistema de gerenciamento de farmácia e requisição de medicamentos para o Pyxis. A arquitetura do backend é baseada em microsserviços, o que permite maior escalabilidade, flexibilidade e facilidade de manutenção. Utilizamos FastAPI como framework web e Prisma como ORM para interação com o banco de dados PostgreSQL no Supabase. Os serviços são implantados na EC2 da AWS, garantindo alta disponibilidade e desempenho.

Estrutura do Backend

A estrutura do backend do projeto é dividida em diversos microsserviços, cada um responsável por uma parte específica do sistema. Abaixo está uma visão geral da estrutura de pastas e arquivos do backend:

backend

├── consumer_service
│ ├── controllers
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── logs
│ │ └── logger.py
│ ├── routes
│ │ ├── init.py
│ │ ├── consumer.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── schemas
│ │ ├── init.py
│ │ ├── consumer.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── services
│ │ ├── init.py
│ │ ├── redis.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── init.py
│ ├── consumer.py
│ ├── Dockerfile
│ ├── main.py
│ └── requirements.txt

├── kubernetes
│ ├── deployments.yaml
│ └── services.yaml

├── logs_service
│ ├── app.py
│ ├── Dockerfile
│ ├── docker-compose.yaml
│ └── requirements.txt

├── publisher_service
│ ├── controllers
│ │ └── order.py
│ ├── routes
│ │ ├── init.py
│ │ └── order.py
│ ├── schemas
│ │ ├── init.py
│ │ └── order.py
│ ├── services
│ │ ├── init.py
│ │ └── queue.py
│ ├── init.py
│ ├── Dockerfile
│ ├── main.py
│ └── requirements.txt

├── storage_service
│ ├── controllers
│ │ ├── item.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── prisma
│ │ └── schema.prisma
│ ├── routes
│ │ ├── init.py
│ │ ├── item.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── schemas
│ │ ├── init.py
│ │ ├── item.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── services
│ │ ├── init.py
│ │ ├── item.py
│ │ ├── order.py
│ │ ├── pyxis.py
│ │ └── user.py
│ ├── init.py
│ ├── .env
│ ├── consumer.py
│ ├── Dockerfile
│ ├── main.py
│ └── requirements.txt

└── tests
└── teste_de_carga
└── locust.py

Explicação dos Principais Componentes

consumer_service

Este serviço é responsável pelo consumo de mensagens relacionadas aos pedidos de medicamentos. Ele inclui controladores, rotas, esquemas e serviços para gerenciar pedidos, usuários e interações com a máquina Pyxis.

  • controllers: Contém a lógica dos controladores para os pedidos, Pyxis e usuários.
  • logs: Gerencia a geração e armazenamento de logs.
  • routes: Define as rotas da API.
  • schemas: Define os esquemas de dados utilizados.
  • services: Contém a lógica de negócio e interação com outros serviços.

kubernetes

Contém arquivos de configuração para o Kubernetes, como deployments e services, para facilitar a implantação e gerenciamento dos microsserviços.

logs_service

Este serviço é responsável por coletar e armazenar logs gerados pelos outros microsserviços.

publisher_service

Este serviço publica mensagens na fila para processamento posterior. Inclui controladores, rotas, esquemas e serviços específicos para a publicação de mensagens relacionadas aos pedidos.

storage_service

Este serviço gerencia o armazenamento de dados relacionados aos itens, pedidos, Pyxis e usuários. Utiliza o Prisma como ORM para interagir com o banco de dados PostgreSQL.

tests

Contém testes de carga e outros tipos de testes para garantir a robustez e desempenho do sistema.

Ferramentas e Tecnologias Utilizadas

  • FastAPI: Framework web moderno e de alta performance para a construção de APIs com Python.
  • Prisma: ORM que facilita a interação com o banco de dados, fornecendo um tipo seguro e gerenciando as migrações de esquema.
  • AWS EC2: Serviço de computação em nuvem que fornece capacidade de processamento escalável, onde os microsserviços são implantados para garantir alta disponibilidade e desempenho.
  • Docker: Utilizado para criar, implantar e gerenciar containers para cada microsserviço.
  • Kubernetes: Sistema de orquestração de containers utilizado para automatizar a implantação, escalonamento e gerenciamento dos microsserviços.

Conclusão

O projeto de gerenciamento de farmácia e requisição de medicamentos para o Pyxis no Hospital Sírio Libanês é um exemplo de aplicação de microsserviços, proporcionando escalabilidade e facilidade de manutenção. Cada serviço desempenha um papel crucial no sistema, permitindo uma gestão eficiente e integrada dos medicamentos e recursos da farmácia.