Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adenilson365/projeto-final-compassuol

Repositório do projeto final do programa de bolsas da CompassUOL
https://github.com/adenilson365/projeto-final-compassuol

Last synced: about 1 month ago
JSON representation

Repositório do projeto final do programa de bolsas da CompassUOL

Awesome Lists containing this project

README

        

## Projeto Final Programa de Estágios DevSecOps - CompassUOL

Equipe:

[![Adenilson konzelmann](https://img.shields.io/badge/Adenilson%20Konzelmann-gray?style=flat-square&logo=github&logoColor=white&logoWidth=20&link=https://github.com/Adenilson365)](https://github.com/Adenilson365)
[![Gustavo Pedoni](https://img.shields.io/badge/Gustavo%20Pedoni-gray?style=flat-square&logo=github&logoColor=white&logoWidth=20&link=https://github.com/Gustavopedoni1)](https://github.com/Gustavopedoni1)

### Objetivos
- Desenvolver a arquitetura para um eCommerce usando as melhores práticas de Devops
- Ambiente Kubernetes
- Banco de dados PaaS MySQL
- Balanceamento de carga
- Segurança

### Diagrama técnico - Infraestrutura AWS

![Diagrama Tecnico Ambiente AWS](./assets/diagrama_arquitetura.png)

### Diagrama da Migração do Banco de Dados On-Premisse para AWS RDS
![Diagrama da Migração do Banco de Dados](./assets/migracao_bd.png)

## Recursos usados no projeto:

### Pipeline CI/CD

-

AWS CodePipeline

Para gerenciar a pipeline de deploy
-

AWS CodeCommit

Como repositório e versionamento de código, nessa arquitetura é onde recebemos o entregável da equipe dev
-

AWS CodeBuild

Para Converter o código em imagem docker, e depois realizar o deploy no cluster EKS via kubectl
-

AWS ECR

Como registry privado para as imagens Docker.

### Migração do Banco de Dados On-Premisse para AWS RDS

-

VPN Connection

Prover segurança na conexão MySQL local para o AWS DMS
-

DMS

Serviço de migração de banco de dados da AWS, para replicar em tempo real o MySQL On-Premisse para RDS MySQL na nuvem AWS, objetivando menor janela de manutenção.
-

AWS RDS MySQL

Serviço de banco de dados SQL na nuvem AWS, usamos como multi-az para failover (Quando um banco cai outro assume em segundos).
- Após migração completa a applicação para a responder na nuvem AWS

### Arquitetura da Aplicação

> Optamos por um cluster de EKS em multi-az, com subnets totalmente privadas, dessa forma provendo alta disponíbilidade e segurança a aplicação. A aplicação recebe tráfego a partir de um load balancer de camada 7 aberto para internet, os servidores são gerenciados usando kubernetes, acessam internet via NAT gateway.

-

Route 53

Hospeda nossas zonas de DNS
-

Cloudfront

Fornece CDN ( Cache de borda para acelerar a entrega de conteúdo ao usuário da aplicação)
-

AWS S3

Para armazenar os estáticos da aplicação
-

Load Balancer de aplicação

Para fazer o balanceamento de carga e verificar a integridade dos servidores
-

WAF - Web Application Firewall

Firewall de aplicação para proteger o Load Balancer de ataques, como SQL injection, DDoS entre outros...
-

ACM

Para fornecer certificado SSL, provendo conexão segura do usuário para a aplicação.
- NAT Gateway Para permitir que os servidores saiam para a internet mas não sejam accessíveis da internet
-

EC2

Servidores Linux
-

Auto Scaling

Para fornecer elasticidade a infraestrutura, permitindo que ela se adapte rápidamente a demanda da aplicação, adicionando ou removendo servidores conforme demanda, Escalabilidade Horizontal.
-

EKS

Serviço de Kubernetes gerenciado da AWS, fornecendo node Master totalmente gerenciado.
-

EFS

Sistema de NFS para fornecer persistência de volume para nossos pods de kubernetes.

### Serviços de Segurança e gestão

-

IAM

Configurar e gerenciar regras de acesso para o Ambiente AWS, tanto de Usuários quanto de um recurso para o outro.
-

CloudWatch

Fornecer observabilidade do cluster, e também do ambiente AWS e seus recursos, coletando logs, métricas e gerando alertas em cima dessas métricas.
-

SNS

Serviço de notificação, a partir dos alertas do cloudwatch envia notificação para o responsável. Pode trabalhar junto com o cloudwatch e com cost Explorer
-

AWS Config

Permite acompanhar as alterações realizadas nos recursos aws, permitindo controles de conformidade e rastreabilidade
-

Secrets Manager

Responsável por gerenciar as credenciais do RDS, permitindo rotacionar essas credencias conforme configuração, e não sendo necessário codificar na aplicação.
-

Cost Explorer

Usado para acompanhar o financeiro da infra AWS, permitindo acompanhar e otimizar a arquitetura sob a ótica de custos.

> Além disso foi proposto um plano de suporte visando acompanhar a aplicação e ajustar seus recursos de acordo com o crescimento de demanda da aplicação e análise do seu comportamento, visando propor estratégias de otimização de custos e infra, seguindo o well-architected framework