Infraestrutura de Desenvolvimento
Bem-vindo à página de infraestrutura na Google Cloud Platform (GCP) da Resultados Digitais! Aqui você encontrará informações detalhadas sobre os recursos e ambientes que compõem nossa infraestrutura de TI.
Repositórios
Começando pelos repositórios do GitHub, nossos códigos relacionados a Marketing & Branding estão armazenados no link do backstage, cujo proprietário é o time mkt-engineers.
Google Cloud Platform
A RD Station utiliza a Google Cloud Platform (GCP) como sua infraestrutura de nuvem principal. A GCP oferece uma ampla variedade de serviços e recursos que nos permitem construir e operar nossa infraestrutura de TI de forma escalável, segura e confiável.
Nossos ambientes de Staging e Produção são hospedados na GCP e utilizam diversos serviços para suportar nossas aplicações, garantindo alta disponibilidade, desempenho e segurança.
Aqui estão alguns dos principais recursos da GCP que utilizamos em nossa infraestrutura:
Ambiente de Staging
O ambiente de Staging está declarado no diretório rd-crossmarketing-stg-01, no domínio de marketing, do repositório do tf-projects.
Link do diretório no tf-projects
Ambiente de Produção
O ambiente de Staging está declarado no diretório rd-cross-marketing-prd-01, no domínio de marketing, do repositório do tf-projects.
Link do diretório no tf-projects
Recursos
A criação de recursos é totalmente feita utilizando IaC.
IaC significa "Infrastructure as Code" ou "Infraestrutura como Código" em português. É uma abordagem que envolve a automação e a gestão da infraestrutura de TI por meio de código. Em vez de configurar servidores, redes, bancos de dados e outros componentes manualmente, a IaC permite que toda a infraestrutura seja definida e gerenciada através de arquivos de código, seguindo a filosofia de que a infraestrutura deve ser tratada como qualquer outro software.
Atualmente, na RD os recursos de cloud computing são criados através do Terraform, no domínio de Marketing, no repositório tf-projects
Cluster GKE (Google Kubernetes Engine)
O Cluster GKE é um grupo de instâncias de máquinas virtuais gerenciadas pelo Kubernetes. Ele é essencial para implantar, gerenciar e escalar nossas aplicações em contêineres de forma eficiente. O Cluster GKE é o coração da nossa infraestrutura, fornecendo alta disponibilidade, escalabilidade e orquestração para nossos aplicativos.
Artifact Registry
O Artifact Registry é um repositório seguro para armazenar e gerenciar imagens de contêineres, pacotes Maven, NPM e outros artefatos de build. Utilizamos esse recurso para armazenar versões e dependências dos nossos aplicativos, garantindo controle e rastreabilidade durante o ciclo de desenvolvimento.
Atualmente, temos quatro recursos criados no Artifact Registry para receber aplicações frontend e backend, nos namespaces rdstation e resdigitais:
- atf-usc1-backend-rdstation
- atf-usc1-frontend-rdstation
- atf-usc1-backend-resdigitais
- atf-usc1-frontend-resdigitais
CloudSQL
O CloudSQL é um serviço de banco de dados totalmente gerenciado pela GCP. Neste ambiente específico, utilizamos o CloudSQL para hospedar nossos bancos de dados do tipo MySQL, garantindo alta disponibilidade, backup automático e segurança para nossas aplicações.
PersistentDisk
O PersistentDisk é uma opção de armazenamento persistente e durável oferecido pelo Google Cloud. Ele é usado para fornecer armazenamento persistente para as nossas aplicações. O PersistentDisk é especialmente útil para garantir que nossos dados sejam preservados mesmo em caso de falhas de instâncias de máquinas virtuais. Em nosso contexto, utilizaremos os PersistentDisks para armazenar arquivos de upload do WordPress.
Portanto, teremos dois PersistentDisks para cada namespace (rdstation e resdigitais), que são:
Staging:
- disk-rd-crossmarketing-stg-01-rdstation
- disk-rd-crossmarketing-stg-01-resdigitais
Produção:
- disk-rd-crossmarketing-prd-01-rdstation
- disk-rd-crossmarketing-prd-01-resdigitais
Bucket
O Bucket é um objeto de armazenamento do Google Cloud Storage. Neste ambiente, usamos os Buckets para armazenar arquivos estáticos, como imagens, vídeos e outros ativos do aplicativo. Os Buckets oferecem escalabilidade e durabilidade, garantindo que nossos arquivos estejam disponíveis e acessíveis de forma eficiente.
Utilizaremos buckets, principalmente, para disponibilizar assets de natureza estática (páginas HTML, CSS e Javascript). São aplicações de baixa complexidade e que podem ser expostas publicamente, sem causar incidências de segurança. Também podemos armazenar imagens e outros arquivos que precisam ser acessados a todo momento.
Para cada namespace, teremos um bucket específico. Portanto, para rdstation e resdigitais, temos os seguintes buckets:
Service Accounts e IAM Members
Utilizamos Service Accounts para autenticar e autorizar recursos e serviços na nuvem. Além disso, definimos IAM Members com níveis apropriados de acesso para gerenciar e operar nossos recursos de forma segura e controlada.
- Service Accounts de Staging
- Service Accounts de Produção
- IAM Members de Staging
- IAM Members de Produção
Grupos de Acesso
O grupo de acesso, atualmente, está representado por mktengineers@rdstation.com. Para incluir ou excluir novos membros no time, é preciso abrir um ticket no canal de Infrasec. As permissões do grupo são:
variable "mktengineers-roles" {
type = list(string)
default = [
"roles/viewer",
"roles/artifactregistry.reader",
"roles/artifactregistry.writer",
"roles/artifactregistry.repoAdmin",
"roles/container.clusterAdmin",
"roles/iam.serviceAccountUser",
"roles/container.admin"
]
}
Outros recursos
Outros recursos também são encontrados em ambos os projetos, como a VPC, Variables, Providers, entre outros. Para saber mais sobre eles, faça uma pesquisa mais detalhada no Oráculo ou consulte os seguintes links: