http://ttc.herculano.xyz
Frontend
Backend
Devtools
-
O desafio consiste em construir uma stack de infraestrutura que provisione um ambiente para rodar duas aplicações e
-
Um banco de dados em dois cloud providers distintos (AWS, Azure ou GCP) conforme dados abaixo:
-
Aplicação 1 - (Cloud Provider 1): backend rest hipotético, em qualquer linguagem, com
-
scalling automático em caso de aumento de requisições no mesmo.
-
Aplicação 2 - (Cloud Provider 1): Frontend em qualquer linguagem hospedado em duas instancias de maquinas virtuais, e acessado através de um balanceador de carga, que deverá
-
ter reduncia de rede por zona de disponibilidade.
-
Ambas aplicações devem responder pelo mesmo DNS, porém com contextos (paths) distintos.
-
Banco de dados - (Cloud Provider 2): Criar um banco de dados qualquer em um segundo cloud provider. o acesso ao banco devera ser feito através de outro nome de dns, porem do mesmo domínio das aplicações.
-
O acesso ao banco de dados deverá ser restrito somente as duas aplicações acima.
-
A comunicação entre as aplicações (cloud provider 1) e o banco de dados (cloud provider 2), deverá ser feita de forma privada, exemplo VPN.
- Ambiente Cloud (AWS, Azure ou GCP)
- Infraestrutura básica de rede (firewall, subnets, etc)
- Load Balancer
- Resolução de DNS para o Load Balancer
- Documentação detalhada e instruções para execução em ambiente real (produção e desenvolvimento).
- Comparação/avaliação de custos em relação as diferentes possibilidades técnicas na criação deste ambiente
Pode-se fazer uso das seguintes tecnologias:
- Docker
- Terraform
- Ansible
- Kubernetes (Gerenciado ou nao)
- Instancias de maquinas virtuais
- Serviços gerenciados de hospedagem de aplicações (Azure App Service , AWS Beanstalk)
- Banco de dados Gerenciado ou nao
OBS: outras ferramentas/soluções também são bem vindas, desde que funcione de forma simples e eficiente.
- Organização
- Percentual de entrega
- Criatividade
- Roadmap de futuras melhorias
- Qualidade da documentação
- Uso de ferramentas de automatização
- Elegância na solução proposta
- Simplicidade e eficiência
- Técnicas e boas práticas de segurança
O código deverá ser entregue em um repositório git hospedado na nuvem (ex: GitHub).