Skip to content

[Aula 04] RA: 6325053 - Matheus Gabriel Correa Braga Viana - #150

Merged
AleTavares merged 1 commit into
AleTavares:mainfrom
Matiasdocs:entregas/aula-04/6325053
Sep 19, 2026
Merged

AleTavares merged 1 commit into
AleTavares:mainfrom
Matiasdocs:entregas/aula-04/6325053

Conversation

@Matiasdocs

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

Copy link
Copy Markdown

🎯 Avaliação do Trabalho de Fixação — Aula 04

Aluno: Matheus Gabriel Correa Braga Viana
RA: 6325053
Data de Avaliação: 2026-09-18


📊 Resultado Final

Critério Peso Status Nota
Infraestrutura funcional 25% ✅ Atende 0,25
Arquitetura Multi-AZ 10% ✅ Atende 0,10
Security Groups 15% ✅ Atende 0,15
User Data + EC2 10% ✅ Atende 0,10
Tags e organização 10% ✅ Atende 0,10
Evidências 5% ✅ Atende 0,05
README com diagrama 5% ✅ Atende 0,05
Subtotal (verificável pelo PR) 80% 0,80
AWS Academy 20% ⏳ Pendente
NOTA AUTOMÁTICA 0,80 / 1,5

⚠️ AWS Academy: Conferir no ambiente da disciplina a nota e percentual de execução do laboratório. Não incluído na nota automática.


✅ Pontos Fortes

  1. Código Terraform bem estruturado e profissional

    • Separação clara em providers.tf, main.tf, variables.tf, outputs.tf
    • Uso correto de data sources para buscar AMI dinamicamente
    • Defaults bem configurados em variables.tf
  2. Arquitetura Multi-AZ corretamente implementada

    • 4 subnets em 2 AZs (us-east-1a e us-east-1b) conforme requisitado
    • Subnets públicas com map_public_ip_on_launch = true
    • Subnets privadas adequadamente isoladas
  3. Networking robusto

    • Internet Gateway + Route Table pública corretamente configurados
    • Rota 0.0.0.0/0 → IGW aplicada apenas nas subnets públicas
    • Associações de Route Table implementadas via aws_route_table_association
  4. Security Groups com menor privilégio

    • API SG: SSH (22) e API (3000) apenas de 0.0.0.0/0 — apropriado para desenvolvimento
    • DB SG: PostgreSQL (5432) apenas da VPC (10.0.0.0/16) — correto e seguro
    • Egress liberado para todos (necessário para downloads/atualizações)
  5. Evidências funcionais e completas

    • ✅ API respondendo nos endpoints /, /health, /orders
    • ✅ SSH comprovado com aws sts get-caller-identity mostrando LabRole
    • terraform destroy foi executado (sem deixar recursos pendentes)
  6. Documentação de qualidade

    • README com diagrama ASCII-art clara e legível
    • Explicação técnica das decisões (Multi-AZ, público/privado, uso de LabInstanceProfile)
    • Tabela de recursos com funções bem detalhadas
    • Instruções de uso passo-a-passo
  7. Adaptação inteligente ao Learner Lab

    • Ao invés de tentar criar aws_iam_role (bloqueado), usou LabInstanceProfile existente
    • Documentou essa decisão no README e no comentário do código
    • Evidência de SSH prova que a role foi aplicada corretamente
  8. User Data funcional

    • Node.js 18 instalado
    • Repositório clonado e dependências instaladas
    • API iniciada automaticamente na porta 3000
  9. Tags presentes e consistentes

    • Default tags no provider com Project, Environment, ManagedBy, Owner, Aluno, Aula
    • Recursos específicos também possuem tags Name descritivas
  10. .gitignore bem configurado

    • Arquivos sensíveis excluídos (.tfstate, .pem, aws-creds.sh)
    • Nenhuma credencial ou chave versionada

⚠️ Ressalvas e Pontos de Atenção

  1. user_data.sh não fornecido no código entregue

    • O main.tf referencia file("${path.module}/user_data.sh"), mas o arquivo não foi incluído na análise
    • Verificar: O arquivo user_data.sh deve estar no repositório unifaat-devops-portfolio/aula-04/
    • As evidências mostram que funcionou, mas a auditoria de código não pode validar seu conteúdo
  2. Outputs parcialmente redundantes

    • ec2_public_ip + api_url compartilham a mesma informação (ligeiramente redundante)
    • Não é erro, apenas observação de organização
  3. Sem arquivo terraform-plan-output.txt no repositório

    • O entrega.md marca [x] para "terraform-plan-output.txt", mas ele não foi incluído
    • Verificar: Confirmar se foi entregue como evidência separada no PR ou comentário
  4. Chave SSH pública via file()

    • Depende que o usuário execute ssh-keygen localmente antes do terraform apply
    • Documentado no README, mas requer ação manual prévia
    • ✅ Aceitável para desenvolvimento; em produção usar secretos manager
  5. Sem teste de conectividade de internet das subnets privadas

    • Subnets privadas não foram testadas (sem saída para internet, conforme esperado)
    • ✅ Apropriado por design; não é um problema
  6. Tags estrutura padrão via provider, mas sem tags específicas em alguns recursos

    • Alguns recursos menores (ex: aws_internet_gateway) poderiam ter Name tags explícitas
    • ✅ Default tags mitigam isso, mas seria mais robusto ser explícito

🔍 Validação de Requisitos Obrigatórios

Requisito Status Observação
VPC (10.0.0.0/16) com DNS support Implementado corretamente
4 Subnets (2 pub + 2 priv, 2 AZs) us-east-1a e us-east-1b
IGW + Route Tables Rota 0.0.0.0/0 → IGW nas públicas
Security Groups (API + DB) Menor privilégio aplicado
EC2 t2.micro com User Data Evidenciado funcionando
Instance Profile Usando LabInstanceProfile (Learner Lab)
Tags em todos recursos Via default tags + específicas
Outputs 8 valores Todos exportados corretamente
README + diagrama Completo e claro
Evidências (plan, curl, SSH) Entrega.md contém respostas
terraform destroy Confirmado sem recursos pendentes

📝 Parecer Pronto para o PR

## ✅ APROVADO

### Avaliação Completa

Excelente trabalho, Matheus! A entrega atende **todos os requisitos obrigatórios** da Aula 04.

#### ✅ Pontos Fortes

- **Arquitetura Multi-AZ corretamente implementada**: 4 subnets em 2 AZs (us-east-1a/b), separação público/privado bem definida
- **Terraform profissional**: código limpo, bem organizado, com data sources, variáveis e outputs completos
- **Security Groups com menor privilégio**: API exposta apropriadamente (22, 3000), BD isolado para a VPC interna apenas
- **Adaptação inteligente ao Learner Lab**: ao invés de forçar criação de IAM Role (bloqueada), usou `LabInstanceProfile` pré-existente e documentou a decisão
- **Evidências funcionais**: API respondendo em `/`, `/health`, `/orders`; SSH com `LabRole` confirmado
- **Documentação de qualidade**: README com diagrama ASCII-art clara, decisões técnicas explicadas, instruções passo-a-passo
- **.gitignore robusto**: nenhuma credencial ou chave privada versionada
- **Tags consistentes**: default tags no provider + tags específicas por recurso

#### ⚠️ Ressalvas Menores

1. **`user_data.sh` não consta da análise**: o arquivo é referenciado em `main.tf` mas não foi fornecido junto ao código. Confirmar se está no repositório `unifaat-devops-portfolio/aula-04/`. As evidências mostram que funcionou, então presume-se estar correto.

2. **`terraform-plan-output.txt`**: o `entrega.md` marca como entregue, mas não foi encontrado no repositório. Confirmar se foi anexado ao PR ou comentário.

3. **Chave SSH via `file()`**: requer `ssh-keygen` manual antes do apply. Está documentado, mas é um passo extra. Aceitável para dev.

#### 📊 Notas por Critério

| Critério | Nota | Máx |
|----------|------|-----|
| Infraestrutura funcional | 0,25 | 0,25 |
| Arquitetura Multi-AZ | 0,10 | 0,10 |
| Security Groups | 0,15 | 0,15 |
| User Data + EC2 | 0,10 | 0,10 |
| Tags e organização | 0,10 | 0,10 |
| Evidências | 0,05 | 0,05 |
| README + diagrama | 0,05 | 0,05 |
| **Subtotal (código verificável)** | **0,80** | **0,80** |
| AWS Academy || 0,20 |
| **Total (após verificação Academy)** || **1,50** |

#### ✅ Recomendação

**APROVADO** — Entrega completa e funcional. Aguardando verificação do professor no AWS Academy (Learner Lab) para validar a nota e percentual de execução do laboratório prático, que complementa os 20% finais da avaliação.

Excelente compreensão de networking AWS e Terraform!

---

**Revisado em:** 2026-09-18  
**Avaliador:** DevOps Team

🎓 Resumo Executivo

Aspecto Resultado
Código Terraform ✅ Profissional, bem estruturado, funcional
Requisitos atendidos ✅ 100% (10/10 obrigatórios)
Evidências ✅ Completas e comprovadas
Documentação ✅ Clara e detalhada
Decisões técnicas ✅ Justificadas e apropriadas
Status APROVADO

Nota Automática: 0,80 / 1,5 (80% do critério verificável pelo PR)

AWS Academy: ⏳ Pendente de conferência do professor


Avaliacao automatica gerada por GitHub Actions. A nota final e revisada pelo professor, incluindo o componente AWS Academy.

@AleTavares
AleTavares merged commit f2e8dd6 into AleTavares:main Sep 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants