fabriziomachado / ugf-terraform-store-infra

Projeto Terraform para o AWS User Group Floripa

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ugf-terraform-store-infra

Projeto Terraform para o gerenciamento de recursos AWS para exemplificar o funcionamento de uma arquitetura de microsserviços.

Diagram

Resumo da arquitetura

  • Cliente realiza conexão através de front-end Amplify e do Application Load Balacer.
  • As conexões HTTP do ALB são encaminhadas ao serviço store-resource.
  • store-resource é responsável por tratar as requisições HTTP e por encaminhar as requisições para os serviços pets e order, utilizando o serviço de descoberta do Cloud Map e protocolo gRPC. API
  • pets e order são responsáveis pelo controle destes serviços e interações necessárias com o banco DocumentDB assim como a publicação de eventos no SNS.
  • listener é responsável por consumir os eventos no SQS.
  • É necessário que os serviços contenham uma política IAM atrelada para interação dos eventos no SNS e SQS.
  • O banco DocumentDB publica sua senha em um segredo no Secrets Manager, os serviços utilizam esse valor via variável de ambiente.
  • Os logs dos serviços são enviados ao CloudWatch.
  • As métricas dos serviços são enviadas ao Prometheus.
  • A visualização das métricas ocorre através do Grafana.

Usage

To run this example you need to execute:

$ terraform init
$ terraform plan
$ terraform apply

Note that this example may create resources which cost money. Run terraform destroy when you don't need these resources.

Requirements

Name Version
terraform >= 1.0.0
aws >= 5.0

Providers

Name Version
aws 5.9.0

Modules

Name Source Version
acm terraform-aws-modules/acm/aws ~> 4.3.0
alb_sg terraform-aws-modules/security-group/aws//modules/https-443 ~> 4.0
amplify brunordias/amplify-app/aws ~> 1.0.0
documentdb_cluster cloudposse/documentdb-cluster/aws 0.22.0
ecs_cluster brunordias/ecs-cluster/aws ~> 2.0.0
ecs_fargate_listener brunordias/ecs-fargate/aws ~> 8.0.0
ecs_fargate_order brunordias/ecs-fargate/aws ~> 8.0.0
ecs_fargate_pets brunordias/ecs-fargate/aws ~> 8.0.0
ecs_fargate_store_resource brunordias/ecs-fargate/aws ~> 8.0.0
vpc terraform-aws-modules/vpc/aws ~> 5.1.0

Resources

Name Type
aws_iam_policy.policy resource
aws_kms_key.docdb resource
aws_lb.alb resource
aws_lb_listener.https resource
aws_route53_record.api resource
aws_secretsmanager_secret.docdb resource
aws_secretsmanager_secret_version.docdb resource
aws_service_discovery_private_dns_namespace.local resource
aws_service_discovery_service.local resource
aws_route53_zone.this data source

Inputs

Name Description Type Default Required
access_token_github GitHub Access Token string n/a yes
api_url Define URL da API string n/a yes
docdb_password Senha do DocumentDB string n/a yes
name Utilizado para nomear os recursos string "ugf-store" no
region Código da região AWS string "us-east-1" no
route53_domain Define dominio do Route53 string n/a yes
tags Tags dos recursos map(any)
{
"Environment": "Demo"
}
no

Outputs

Name Description
alb_dns_name Use this URL to access your UGF Store API

About

Projeto Terraform para o AWS User Group Floripa


Languages

Language:HCL 100.0%