-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
42 changed files
with
18,579 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,60 @@ | ||
name: Build | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
id-token: write | ||
contents: read | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'temurin' | ||
java-version: '17' | ||
|
||
- name: Verify | ||
run: mvn -B verify -DskipITs=false org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=FIAP-3SOAT-G15_healthmed-app | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
|
||
- name: Upload Test Reports | ||
uses: actions/upload-artifact@master | ||
with: | ||
name: generated-reports | ||
path: | | ||
target/site | ||
target/surefire-reports.html | ||
- name: Configure AWS Credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ vars.AWS_IAM_ROLE }} | ||
aws-region: ${{ vars.AWS_REGION }} | ||
|
||
- name: Set up JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'temurin' | ||
java-version: '17' | ||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v2 | ||
|
||
- name: Verify | ||
run: mvn verify | ||
- name: Build, tag, and push docker image to Amazon ECR | ||
#if: github.ref == 'refs/heads/main' && github.event_name == 'push' | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
ECR_REPOSITORY: ${{ vars.AWS_ECR_REPO_NAME }} | ||
IMAGE_TAG: "latest" | ||
run: | | ||
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | ||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
name: Destroy | ||
|
||
on: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
destroy: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
working-directory: terraform | ||
permissions: | ||
id-token: write | ||
contents: read | ||
pull-requests: write | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.inputs.branch }} | ||
|
||
- name: Configure AWS Credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ vars.AWS_IAM_ROLE }} | ||
aws-region: ${{ vars.AWS_REGION }} | ||
|
||
- name: Setup Terraform | ||
uses: hashicorp/setup-terraform@v3 | ||
with: | ||
cli_config_credentials_token: ${{ secrets.TF_CLOUD_USER_API_TOKEN }} | ||
|
||
- name: Terraform Init | ||
run: terraform init | ||
|
||
- name: Terraform Destroy | ||
run: terraform destroy -auto-approve |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
name: Docs | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- .github/workflows/docs.yml | ||
- 'docs/**' | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- .github/workflows/docs.yml | ||
- 'docs/**' | ||
|
||
jobs: | ||
docs: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
id-token: write | ||
contents: read | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Build | ||
run: make docs | ||
|
||
- name: Configure AWS Credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ vars.AWS_IAM_ROLE }} | ||
aws-region: ${{ vars.AWS_REGION }} | ||
|
||
- name: Sync S3 bucket | ||
#if: github.ref == 'refs/heads/main' && github.event_name == 'push' | ||
run: aws s3 sync ./site/ s3://${{ vars.AWS_S3_BUCKET_NAME }} --delete |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
name: Provision | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- .github/workflows/provision.yml | ||
- 'terraform/**' | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- .github/workflows/provision.yml | ||
- 'terraform/**' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
provision: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
working-directory: ./terraform | ||
permissions: | ||
id-token: write | ||
contents: read | ||
pull-requests: write | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Configure AWS Credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ vars.AWS_IAM_ROLE }} | ||
aws-region: ${{ vars.AWS_REGION }} | ||
|
||
- name: Setup Terraform | ||
uses: hashicorp/setup-terraform@v2 | ||
with: | ||
cli_config_credentials_token: ${{ secrets.TF_CLOUD_USER_API_TOKEN }} | ||
|
||
- name: Terraform fmt | ||
id: fmt | ||
run: terraform fmt -check | ||
continue-on-error: true | ||
|
||
- name: Terraform Init | ||
id: init | ||
run: terraform init | ||
|
||
- name: Terraform Validate | ||
id: validate | ||
run: terraform validate | ||
|
||
- name: Terraform Plan | ||
id: plan | ||
run: terraform plan | ||
|
||
- name: Check Errors | ||
if: steps.plan.outcome == 'failure' | ||
run: exit 1 | ||
|
||
- name: Terraform Apply | ||
#if: github.ref == 'refs/heads/main' && github.event_name == 'push' | ||
run: terraform apply -auto-approve -input=false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,3 +51,7 @@ out/ | |
|
||
# OS | ||
.DS_Store | ||
|
||
# MkDocs | ||
|
||
site |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
FROM python:3 | ||
|
||
WORKDIR /usr/src/app | ||
|
||
COPY requirements.txt ./ | ||
RUN pip install --no-cache-dir -r requirements.txt | ||
|
||
EXPOSE 8000 | ||
|
||
ENTRYPOINT ["mkdocs"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
mkdocs: | ||
@docker build --no-cache -f Dockerfile.docs -t mkdocs-fiap-3soat-g15-healthmed:latest . | ||
|
||
docs: mkdocs | ||
@docker run --rm -v ${CURDIR}:/usr/src/app mkdocs-fiap-3soat-g15-healthmed:latest build --clean | ||
|
||
website: mkdocs | ||
@docker run --rm -v ${CURDIR}:/usr/src/app -p 8000:8000 mkdocs-fiap-3soat-g15-healthmed:latest serve | ||
|
||
.PHONY: mkdocs docs website |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,76 @@ | ||
# healthmed-app | ||
# Health&Med | ||
|
||
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=FIAP-3SOAT-G15_healthmed-app&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=FIAP-3SOAT-G15_healthmed-app) | ||
|
||
Autores membros do Grupo 15: | ||
|
||
- Bleno Humberto Claus | ||
- Giovanni Di Luca Evangelista | ||
- Lucas Gabriel dos Santos | ||
- Mateus Sales Albino | ||
- Wellyson de Freitas Santos | ||
|
||
## Requisitos | ||
|
||
Health&Med, uma startup inovadora no setor de saúde, está desenvolvendo um novo sistema que irá revolucionar a Telemedicina no país. Atualmente, a startup oferece a possibilidade de agendamento de consultas e realização de consultas online (Telemedicina) por meio de sistemas terceiros como Google Agenda e Google Meetings. | ||
|
||
Recentemente, a empresa recebeu um aporte e decidiu investir no desenvolvimento de um **sistema proprietário**, visando proporcionar um serviço de maior **qualidade**, **segurança dos dados** dos pacientes e **redução de custos**. O objetivo é criar um sistema **robusto, escalável e seguro** que permita o gerenciamento eficiente desses agendamentos e consultas. | ||
|
||
Além de conter as funcionalidades de agendamento e realização de consultas online, o sistema terá o diferencial de uma nova funcionalidade: o Prontuário Eletrônico. O Prontuário Eletrônico permitirá o armazenamento e compartilhamento de documentos, exames, cartão de vacinas, e outros registros médicos entre as partes envolvidas, garantindo maior assertividade nos diagnósticos. | ||
|
||
Para viabilizar o desenvolvimento de um sistema que esteja em conformidade com as melhores práticas de qualidade e arquitetura de software, a Health&Med contratou os alunos do curso (SOAT) para fazer a análise do projeto e a arquitetura do software. | ||
|
||
[Continuar lendo...](/docs/README) | ||
|
||
## Decisões de Arquitetura | ||
|
||
1. [Infraestrutura](/docs/001-infraestrutura.md) | ||
2. [Microserviços](/docs/002-microservicos.md) | ||
3. [Bancos de dados](/docs/003-bancos-de-dados.md) | ||
4. [Estratégia de testes](/docs/004-estrategia-de-testes.md) | ||
5. [CI/CD](/docs/005-ci-cd.md) | ||
6. [Orquestração de containers](/docs/006-orquestracao-de-containers.md) | ||
7. [Observabilidade](/docs/007-observabilidade.md) | ||
8. [Autenticação e autorização](/docs/008-autenticacao-e-autorizacao.md) | ||
9. [Validação de médicos](/docs/009-validacao-de-medicos.md) | ||
10. [Mensageria](/docs/010-mensageria.md) | ||
11. [Notificações](/docs/011-notificacoes.md) | ||
12. [Videoconferências](/docs/012-videoconferencias.md) | ||
13. [Prontuário Eletrônico](/docs/013-prontuario-eletronico.md) | ||
14. [LGPD](/docs/014-lgpd.md) | ||
15. [Otimização de rede](/docs/015-otimizacao-de-rede.md) | ||
|
||
## Diagramas de Arquitetura | ||
|
||
### Diagrama de Contexto C4 | ||
|
||
![Diagrama de Contexto C4](docs/diagrams/c4-context.png) | ||
|
||
### Diagrama de Container C4 | ||
|
||
![Diagrama de Container C4](docs/diagrams/c4-container.png) | ||
|
||
### Diagrama de Infraestrutura em Nuvem | ||
|
||
![Diagrama de Infraestrutura](docs/diagrams/infra-diagram.png) | ||
|
||
### Diagramas de Entidade-Relacionamento | ||
|
||
TODO | ||
|
||
### Diagramas de Estado | ||
|
||
TODO | ||
|
||
### Diagramas de Sequência | ||
|
||
TODO | ||
|
||
## CI/CD | ||
|
||
Descrição dos workflows do GitHub Actions: | ||
|
||
- [build.yaml](.github/workflows/build.yaml): faz o build da aplicação, executando testes e análise estática. | ||
- [destroy.yaml](.github/workflows/destroy.yaml): destrói todos os recursos de infra na AWS. | ||
- [docs.yaml](.github/workflows/docs.yaml): cria o website para a documentação contida em [/docs](/docs). | ||
- [provision.yaml](.github/workflows/provision.yaml): realiza o provisionamento dos recursos de infra na AWS. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Infraestrutura | ||
|
||
## Contexto | ||
|
||
De acordo com os requisitos não funcionais, o sistema deve ser (1) altamente disponível, (2) escalável e (3) seguro. A escolha da infraestrutura é crucial para atender a esses requisitos. | ||
|
||
## Decisão | ||
|
||
Optamos por utilizar utilizar um Cloud Provider, especificamente a AWS. Usaremos serviços de Iaas e PaaS, principalmente. Os recursos serão gerenciados como Infrastructure as Code através do Terraform. | ||
|
||
## Consequências | ||
|
||
### Positivas | ||
|
||
- Alta disponibilidade e confiabilidade dos serviços AWS. | ||
- Escalabilidade com Auto Scaling Groups, em serviços serverless, etc. | ||
- Segurança compartilhada com o provedor. | ||
- Versionamento e automação com Terraform. | ||
|
||
### Negativas | ||
|
||
- Custo da infraestrutura. | ||
- Dependência de um fornecedor de nuvem. | ||
- Complexidade de gerenciamento. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Microserviços | ||
|
||
## Contexto | ||
|
||
De acordo com os requisitos não funcionais, o sistema precisa ser robusto e escalável, além de haver uma preocupação para reduzir custos e da garantia das melhores práticas de arquitetura de software. A escolha entre monolito e microserviços tem muita influência nesses quesitos. | ||
|
||
## Decisão | ||
|
||
Inicialmente, é recomendável começar com um monolito modular, isto é, um único serviço com módulos isolados que garantem uma separação tranquila no futuro. Tendo em mente o longo prazo, o aporte da Health&Med recebido, e os requisitos de escalabilidade e alta disponibilidade, optamos por uma arquitetura de microserviços (pelo menos trés: cadastro, agendamento, e prontuário). | ||
|
||
## Consequências | ||
|
||
### Positivas | ||
|
||
- cada microserviço pode ser escalado de forma independente, permitindo uma melhor utilização dos recursos. | ||
- equipes podem trabalhar em diferentes serviços ao mesmo tempo, aumentando a velocidade de desenvolvimento. | ||
- problemas em um microserviço não necessariamente afetam todo o sistema. | ||
- possibilidade de utilizar diferentes tecnologias e linguagens para diferentes microserviços conforme a necessidade. | ||
|
||
### Negativas | ||
|
||
- pode haver maior latência por causa da comunicação entre microserviços. | ||
- é preciso uma grande infraestrutura para gerenciar, escalar, e monitorar todos os serviços. |
Oops, something went wrong.