Tutorial: Build Your Own Heroku With Cloud... - Muvaffak Onus, & Sidarta Oliveira, Grupo Boticário
Introdução
Visão Geral da Seção: Esta apresentação aborda a criação de uma plataforma semelhante ao Heroku usando uma pilha nativa em nuvem, que inclui o Backstage, Argo CD e um repositório Git.
Experiência do Heroku
- O Heroku permite fazer alterações no código, fazer push e tudo fica online.
- Oferece recursos como implantação, dimensionamento, monitoramento e algumas medidas de segurança.
- No entanto, não é flexível o suficiente para empresas maiores que precisam de mais controle sobre suas configurações e contas em nuvem.
Ferramentas Utilizadas
Crossplane
- Permite criar sua própria plataforma em nuvem interna para provisionar recursos em nuvem.
- Integra-se com ferramentas como Terraform e Kubernetes.
- Instala CI/CDs e permite interagir com eles por meio da API do Kubernetes.
Backstage
- Fornece um catálogo de serviços interno para a empresa.
- Permite criar novos aplicativos a partir de modelos pré-definidos.
- Oferece informações sobre os serviços disponíveis, como propriedade e documentação.
Argo CD
- Gerencia a implantação de aplicativos e infraestrutura.
- Integra-se com o Backstage para implantar aplicativos automaticamente quando solicitado.
Diagrama Básico da Solução Proposta

Introdução ao Tutorial
Visão Geral da Seção: Nesta seção, o tutor explica que o tutorial irá abordar a experiência do Heroku e como ele funciona. Ele sugere que os ouvintes acessem uma página específica para copiar e colar o código necessário durante o tutorial.
Acessando a Página do Heroku
- É sugerido aos ouvintes que acessem a página do Heroku para criar um novo aplicativo.
- O tutor pede para colocarem a página em uma aba aberta para facilitar a cópia e colagem de código posteriormente.
Criação de um Aplicativo no Heroku
- O tutor cria um novo aplicativo no Heroku.
- Ele faz login na sua conta do Heroku.
- O tutor menciona que criará uma pasta para o projeto.
Configurações de Visualização
- Há dificuldades iniciais com as configurações de visualização, mas são resolvidas posteriormente.
- O tutor ajusta as configurações para tornar o texto mais legível.
Push Inicial para o Repositório Remoto
- O tutor adiciona o repositório remoto do Heroku ao projeto local.
- Ele realiza um push inicial para enviar as alterações ao repositório remoto.
Experiência do Heroku
- Ao fazer alterações no código e realizar push, o aplicativo é automaticamente construído e implantado pelo Heroku.
- Isso demonstra a experiência contínua de implantação automática oferecida pelo Heroku.
Adicionando Add-ons (Infraestrutura)
- É mencionado brevemente sobre os add-ons, que são recursos adicionais que podem ser adicionados a um aplicativo no Heroku.
- Um exemplo de add-on é mencionado, mas não é implementado neste momento.
Preparando o Cluster
- O tutor copia um código relacionado à configuração do cluster.
- Ele cria um namespace para trabalhar com o Heroku, Backstage, Crossplane e Argo CD.
Configurando o Backstage
- O tutor explica que o Backstage é uma biblioteca TypeScript que permite construir interfaces personalizadas.
- Ele demonstra como criar um aplicativo Backstage e fazer alterações no código.
Conclusão da Seção
- O tutor conclui a seção informando que será necessário instalar ferramentas adicionais e continuar fazendo alterações no código do projeto Backstage.
Explorando o Projeto Backstage
Visão Geral da Seção: Nesta seção, o tutor explora o projeto Backstage recém-criado e mostra seu estado inicial.
Explorando a Estrutura do Projeto
- O tutor mostra a estrutura de pastas do projeto Backstage.
- Ele destaca as pastas "app" (front-end) e "backend" (back-end).
Iniciando o Servidor Localmente
- É mencionado que será necessário executar
npm startpara iniciar o servidor localmente.
- No entanto, essa etapa não é realizada neste momento.
Conclusão Parcial da Seção
Visão Geral da Seção: Nesta seção, foi explorada a estrutura inicial do projeto Backstage. A próxima etapa envolverá a execução do servidor localmente e a visualização do estado inicial do projeto.
Próximos Passos
- O tutor menciona que o próximo passo será executar o servidor localmente e verificar o estado inicial do projeto Backstage.
Fim da Transcrição
Visão Geral da Seção: A transcrição termina aqui.
Visão Geral da Interface do Backstage
Visão Geral da Seção: Nesta seção, o palestrante apresenta a interface inicial do Backstage e explica suas funcionalidades.
Exemplo de Website e Criação de Novo Componente
- O Backstage possui um exemplo de website e a opção de criar um novo componente.
- A parte do catálogo mostra todos os softwares em execução na empresa, incluindo informações sobre CI/CD, dependências e documentação.
- Ao clicar em uma fonte, como um repositório no GitHub, é possível ser redirecionado para lá.
- A parte de criação permite escolher um template e criar um repositório no GitHub com base nesse template.
Criação de Token do GitHub
- É necessário criar um token do GitHub para dar permissões ao Backstage para criar repositórios.
- O token precisa ter permissões para repositórios e fluxos de trabalho.
Verificação das Configurações
- É preciso verificar as configurações do aplicativo (app config) para garantir que o ambiente esteja correto.
- Existem diferentes arquivos de configuração dependendo do ambiente (local, produção).
- É importante verificar se a integração com o GitHub está correta.
Criação de Serviço
- O processo de criação de serviço envolve três etapas: fornecer um diretório inicial, publicar no repositório do GitHub e registrar no Backstage.
- São utilizados templates predefinidos que podem ser personalizados com informações fornecidas pelo usuário.
Implantação no Cluster Kubernetes
- Após a criação do serviço, é possível implantá-lo em um cluster Kubernetes.
- É necessário configurar um banco de dados em memória e adicionar a opção de templates no Backstage.
- Após a configuração, é feito o build da imagem e a implantação no cluster.
Instalação do Argo CD
- O Argo CD será instalado no namespace Heroku usando uma imagem pré-carregada.
Problemas Técnicos e Soluções
Visão Geral da Seção: Nesta seção, o palestrante enfrenta problemas técnicos durante a demonstração e encontra soluções para resolvê-los.
Problema de Conexão Recusada
- Durante a abertura do serviço implantado, ocorre um erro de "conexão recusada".
Solução do Problema
- Foi identificado que faltava adicionar o token do GitHub como variável de ambiente.
- Após corrigir essa falha, o serviço foi reiniciado com sucesso.
Implantação do Argo CD
Visão Geral da Seção: Nesta seção, o palestrante continua com a implantação do Argo CD após resolver os problemas técnicos anteriores.
Pré-carregamento das Imagens do Argo CD
- Para evitar problemas com limites de download das imagens utilizadas pelo Argo CD, é feito um pré-carregamento dessas imagens.
Instalação do Argo CD no Namespace Heroku
- O Argo CD é instalado no namespace Heroku utilizando as imagens pré-carregadas.
Esperando que ele apareça
Visão geral da seção: Nesta parte, o palestrante está esperando que algo apareça.
Aguardando a exibição rápida das imagens
- O palestrante pré-carregou as imagens para que elas apareçam rapidamente.
- Confirmação de que está tudo bem.
Imagens frequentemente usadas e problemas com o Wi-Fi
Visão geral da seção: O palestrante fala sobre o uso frequente de imagens e os problemas causados pelo Wi-Fi.
- As imagens são frequentemente usadas e podem causar problemas no Wi-Fi.
- Decisão de eliminar todas as imagens.
- Observação de que as imagens podem voltar.
- Confirmação de que as imagens estão retornando.
- Tentativa de obter a senha inicial do Argo CD.
Configurando o Argo CD
Visão geral da seção: O palestrante configura o Argo CD.
- Solicitação para obter a senha inicial do Argo CD.
- Acesso ao Argo CD no Chrome.
- Assumindo riscos durante a configuração do Argo CD.
Instalando Crossplane com Helm
Visão geral da seção: O palestrante instala o Crossplane usando o Helm.
- Instalação do Crossplane com Helm.
- Utilização de um exemplo simples de scaffolding para validar a instalação.
Criando um novo repositório
Visão geral da seção: O palestrante cria um novo repositório.
- Criação de um novo repositório chamado "template-demo".
- Clonagem do repositório criado.
Inicializando o repositório
Visão geral da seção: O palestrante inicializa o repositório criado anteriormente.
- Inicialização do repositório "template-demo".
Criando um template YAML
Visão geral da seção: O palestrante cria um arquivo YAML para definir um template.
- Explicação sobre a criação de um template YAML.
- Definição das propriedades que serão solicitadas aos usuários.
- Descrição dos passos necessários no template YAML.
- Uso de valores fornecidos pelos usuários no skeleton template.
- Publicação do template no GitHub e registro no catálogo do Backstage.
Criando a estrutura do projeto
Visão geral da seção: O palestrante cria a estrutura básica do projeto.
- Criação da pasta "skeleton" para a estrutura do projeto.
- Adição do arquivo "catalog-info.yaml".
- Adição dos arquivos "package.json" e "server.js".
Adicionando código ao template
Visão geral da seção: O palestrante adiciona código ao template.
- Uso de templates no código, substituindo valores específicos.
- Continuação da adição de código ao template.
Essas são as principais informações e etapas mencionadas no vídeo.