Subindo Aplicações Web em Produção | Aprendendo HEROKU

Subindo Aplicações Web em Produção | Aprendendo HEROKU

Introdução ao vídeo e contexto

Visão geral da seção: Nesta seção, Fabio Akita introduz o tema do vídeo e fornece um contexto sobre os 12 fatores para criar projetos escaláveis modernos. Ele menciona a importância de ter conhecimento prévio sobre a plataforma Heroku para entender completamente o conteúdo.

Apresentação do tema

  • Fabio Akita dá as boas-vindas ao primeiro vídeo de 2022.
  • O vídeo será dividido em duas partes, sendo esta a primeira.
  • Ele abordará os famosos 12 fatores para criar projetos escaláveis modernos.
  • É recomendado ter familiaridade com a plataforma Heroku antes de prosseguir.

Importância do uso do Heroku

Visão geral da seção: Nesta seção, Fabio Akita destaca a importância de usar o Heroku como base para apresentar os conceitos dos 12 fatores. Ele menciona que mesmo aqueles que já estão familiarizados com o Heroku podem encontrar informações úteis neste vídeo.

Uso do Heroku como exemplo

  • O uso do Heroku é comparado ao "arroz com feijão" no contexto deste vídeo.
  • É uma plataforma adequada para apresentar aos amigos que ainda não estão familiarizados com ela.
  • Mesmo para aqueles que já trabalham com o Heroku, este modelo de trabalho é recomendado como referência.

Esclarecimentos sobre vídeos anteriores

Visão geral da seção: Nesta seção, Fabio Akita esclarece alguns pontos mencionados em vídeos anteriores e responde a algumas questões levantadas online.

Exemplo do ingresso.com

  • Fabio Akita menciona o exemplo do ingresso.com e conclui que eles deveriam controlar o acesso aos sistemas de reserva de assentos usando uma fila virtual.
  • Ele destaca que implementar um sistema de fila virtual foi exatamente o que a Caixa Econômica Federal fez para lidar com a alta demanda da Mega Sena da virada.

Implementação de fila virtual

Visão geral da seção: Nesta seção, Fabio Akita discute a importância da implementação de uma fila virtual para lidar com altas demandas em sistemas.

Exemplo da Mega Sena da virada

  • A Caixa Econômica Federal implementou uma fila virtual para lidar com a multidão que tentava acessar o sistema no último dia.
  • Mesmo com essa implementação, muitas pessoas enfrentaram dificuldades durante o processo.

Implementação correta e possíveis problemas

Visão geral da seção: Nesta seção, Fabio Akita enfatiza que apenas implementar um padrão ou arquitetura não garante sua eficácia. Ele discute dois possíveis problemas na implementação do sistema da Mega Sena.

Tráfego intenso e problemas técnicos

  • O tráfego gerado pela Mega Sena pode ter sido extremamente alto, até mesmo para grandes empresas como a Amazon.
  • Além disso, é possível que o sistema tenha sido mal projetado desde o início, resultando em dificuldades operacionais.

Desafios no setor público

Visão geral da seção: Nesta seção, Fabio Akita discute os desafios enfrentados pelos sistemas do setor público e a diferença em relação aos sistemas desenvolvidos na iniciativa privada.

Limitações dos sistemas públicos

  • Sistemas desenvolvidos pelo estado nunca serão tão bons quanto os melhores sistemas da iniciativa privada devido à falta de concorrência.
  • A maioria dos funcionários públicos não está comprometida com a qualidade e acaba sendo um obstáculo para aqueles que tentam fazer as coisas corretamente.

Software sempre em evolução

Visão geral da seção: Nesta seção, Fabio Akita destaca a importância de manter o software constantemente atualizado e melhorado.

Mentalidade de "terminar" o software

  • Se um lugar tem a mentalidade de considerar o software como "pronto" e não faz mais alterações, ele provavelmente será de baixa qualidade.
  • O software precisa estar em constante atualização, correção, expansão e remodelação para acompanhar as necessidades e demandas.

Problemas decorrentes da falta de atualização

Visão geral da seção: Nesta seção, Fabio Akita discute os problemas que surgem quando os sistemas não são atualizados adequadamente ao longo do tempo.

Acúmulo de gambiarras

  • Em lugares como a Caixa Econômica Federal, onde existem vários sistemas antigos sem integração adequada, surgem inúmeras gambiarras para contornar as limitações.
  • Com o passar do tempo, essas soluções improvisadas resultam em uma experiência ruim para os usuários.

Introdução aos 12 fatores e Heroku

Visão geral da seção: Nesta seção, Fabio Akita menciona a metodologia dos 12 fatores e sua relação com o Heroku. Ele destaca que abordará os 12 fatores no próximo vídeo.

Conceitos dos 12 fatores

  • Os 12 fatores serão abordados no próximo vídeo.
  • Para entender completamente os 12 fatores, é necessário ter conhecimento sobre o Heroku.
  • É recomendado assistir a tutoriais básicos sobre como implantar um aplicativo no Heroku para obter uma experiência transformadora.

Encerramento e próximos passos

Visão geral da seção: Nesta seção final, Fabio Akita conclui o vídeo e menciona que complementará mais informações nos próximos vídeos.

Conclusão do vídeo

  • Fabio Akita reforça que seguir pelo menos os 12 fatores é essencial para ser considerado um programador sênior.
  • Ele promete complementar mais informações importantes nos próximos vídeos.

Tecnologias do fim dos anos 90

Neste trecho, o palestrante menciona que usar tecnologias como MySQL, Perl e PHP é considerado ultrapassado nos dias de hoje. Ele ressalta que atualizar código diretamente no servidor via FTP não é uma prática recomendada.

Tecnologia ultrapassada

  • O uso de MySQL, Perl e PHP é considerado tecnologia do fim dos anos 90.
  • Atualizar código diretamente no servidor via FTP não é a forma mais adequada de colocar uma aplicação no ar nos dias atuais.

Melhores práticas para deploy

Nesta parte, o palestrante aborda as melhores práticas para realizar o deploy de uma aplicação, levando em consideração aspectos como escalabilidade e segurança. Ele menciona que seguir um tutorial oficial do Heroku pode ser uma opção simples e eficiente.

Estado da arte para deploy

  • É importante adotar as melhores práticas para realizar o deploy de uma aplicação.
  • O palestrante sugere seguir um tutorial oficial do Heroku para entender como fazer o deploy corretamente.
  • O tutorial abordará tanto a escalabilidade quanto a segurança da aplicação.

Criando uma conta no Heroku

Nesta seção, o palestrante explica que é necessário criar uma conta no Heroku antes de prosseguir com o tutorial. Ele destaca que existem tutoriais disponíveis para diferentes linguagens de programação, mas neste caso específico será abordado como subir uma aplicação PHP.

Criando uma conta no Heroku

  • Antes de prosseguir, é necessário criar uma conta no Heroku.
  • O palestrante menciona que existem tutoriais disponíveis para diferentes linguagens, mas neste caso será abordado o processo de subir uma aplicação PHP.
  • É importante ter o Composer instalado para gerenciar as dependências da aplicação.

Conhecimentos básicos necessários

Nesta parte, o palestrante destaca a importância de ter conhecimentos básicos em Git e ressalta que é essencial saber utilizar essa ferramenta para trabalhar em projetos modernos. Ele sugere assistir aos seus vídeos sobre Git caso haja necessidade.

Conhecimentos básicos necessários

  • É fundamental ter conhecimentos mínimos em Git para seguir o tutorial do Heroku.
  • O palestrante reforça a importância de saber utilizar o Git para trabalhar em projetos modernos.
  • Caso não tenha conhecimento em Git, ele sugere assistir aos seus vídeos sobre o assunto.

Instalando a linha de comando do Heroku

Nesta seção, o palestrante explica como instalar a linha de comando do Heroku. Ele menciona que é possível encontrar instruções específicas para diferentes distribuições Linux e destaca a importância de habilitar autenticação de duas etapas.

Instalando a linha de comando do Heroku

  • A instalação da linha de comando do Heroku varia conforme a distribuição Linux utilizada.
  • No Arch Linux, basta executar yay -S heroku-cli, enquanto no Ubuntu é possível instalar via Snap.
  • É importante habilitar a autenticação de duas etapas para garantir a segurança da conta.

Subindo uma aplicação de exemplo

Nesta parte, o palestrante explica como subir uma aplicação de exemplo no Heroku. Ele menciona que é necessário cadastrar a aplicação e realizar o push do código para o repositório remoto do Heroku.

Subindo uma aplicação de exemplo

  • Para subir uma aplicação de exemplo, é necessário cadastrar a aplicação no Heroku.
  • A partir do diretório do projeto, basta utilizar o comando heroku create para cadastrar a nova aplicação.
  • Em seguida, é possível fazer o push do código para o repositório remoto do Heroku utilizando git push heroku main.

O funcionamento do Git com o Heroku

Nesta seção, o palestrante explica como funciona a integração entre Git e Heroku. Ele destaca que ao fazer um push para o repositório remoto associado à nova aplicação no Heroku, será realizada automaticamente a instalação das ferramentas necessárias para executar a aplicação em PHP.

Funcionamento do Git com o Heroku

  • Ao fazer um push para o repositório remoto associado à nova aplicação no Heroku, serão instaladas automaticamente as ferramentas necessárias para executar a aplicação em PHP.
  • O processo realizado pelo Heroku é semelhante à criação de uma imagem Docker utilizando docker build.
  • O conceito de buildpacks utilizado pelo Heroku inspirou muitas funcionalidades do Docker.

O Heroku e a invenção do Docker

Nesta parte, o palestrante explica que o Heroku precede a invenção do Docker e que muitas das funcionalidades do Docker foram inspiradas no que o Heroku já fazia. Ele destaca que o objetivo do Docker e de outras ferramentas de containers é imitar o que o Heroku já realizava anteriormente.

O Heroku e a invenção do Docker

  • O Heroku foi lançado em 2008, antes da criação do Docker em 2013.
  • Muitas das funcionalidades presentes no Docker foram inspiradas no que o Heroku já fazia.
  • O objetivo do Docker e de outras ferramentas de containers é imitar as funcionalidades oferecidas pelo Heroku.

Identifying Memory Leaks and Best Practices

The speaker discusses the importance of checking for memory leaks and programming efficiently to avoid excessive memory usage. They emphasize the benefits of working in a more restricted environment than one's local machine.

Checking for Memory Leaks

  • It is important to verify if there are any memory leaks in your application.
  • Poorly programmed applications can fill up memory with unnecessary garbage.
  • Working in a more restricted environment than your local machine is considered good practice.
  • Many notebooks today have 8GB or more RAM, so excessive memory usage may go unnoticed.

Scaling the Application on Heroku

The speaker explains how to scale an application on Heroku using the heroku ps:scale command. They discuss the concept of dynos and how scaling affects concurrent requests.

Scaling with Heroku Dynos

  • Use the command heroku ps:scale web=1 to scale up your application on Heroku.
  • Each dyno represents a server instance that can handle requests.
  • Increasing the number of dynos allows for more concurrent requests.
  • The speaker uses a bakery analogy to explain that each dyno can handle multiple simultaneous requests.
  • The actual number of concurrent requests depends on various factors such as processing time and resource availability.

Theoretical Calculation of Request Handling

The speaker provides a theoretical calculation for handling requests based on response time and number of dynos.

Theoretical Calculation

  • Assuming each request takes 100 milliseconds to respond, you could handle up to 10 requests per second with one dyno.
  • With two dynos, you could theoretically handle up to 20 requests per second (assuming no blocking resources).
  • The speaker acknowledges that real-world scenarios may vary due to resource limitations and blocking factors like database access.

Understanding Containers and Dynos

The speaker explains the concept of containers, such as Docker and Heroku Dynos, and how they partition resources for running applications.

Containers vs. Virtual Machines

  • Containers, including Docker and Heroku Dynos, are not virtual machines.
  • They allow for partitioning of machine resources, enabling multiple programs to run independently.
  • By dividing a large physical machine into smaller containers, resources can be allocated more efficiently.

Infrastructure Prepared by Heroku

The speaker highlights the infrastructure provided by Heroku and explains the benefits of using their platform.

Infrastructure Benefits on Heroku

  • Heroku offers infrastructure features like scaling with ps:scale command.
  • Multiple dynos can be used to handle incoming requests through load balancing.
  • Requests are first directed to a load balancer before being distributed among available dynos.
  • This setup allows for better resource utilization and improved performance.

Load Balancing in Practice

The speaker elaborates on load balancing in practice and how it works with multiple containers or dynos.

Load Balancing with Multiple Containers

  • When running multiple containers or dynos, each has its own internal IP address.
  • Unlike accessing a single server directly via localhost, accessing multiple containers requires a load balancer.
  • A load balancer like NGINX distributes incoming requests among the available containers using strategies like round-robin.
  • Users are unaware of the underlying container structure as the load balancer anonymizes server IPs.

Accessing Containers with Load Balancer

The speaker explains how to access containers using a load balancer and the use of virtual IPs.

Accessing Containers via Load Balancer

  • When using multiple containers, accessing them directly via localhost is not possible.
  • Docker creates a local virtual network where each container has its own private IP.
  • To access multiple containers, a third container with a load balancer like NGINX can be used.
  • The load balancer listens on port 80 and forwards requests to the appropriate container based on configured rules.

Load Balancing for Multiple Containers

The speaker discusses the use of load balancing to distribute requests among multiple containers.

Load Balancing for Multiple Containers

  • A load balancer helps distribute requests across multiple containers or dynos.
  • By configuring rules in the load balancer, incoming requests on port 80 can be directed to specific containers.
  • This setup allows for efficient utilization of resources and ensures that all containers are utilized effectively.

Proxy Reverse and Anonymizing IPs

The speaker explains the concept of reverse proxies and how they help distribute requests while anonymizing server IPs.

Reverse Proxy and Anonymizing IPs

  • A reverse proxy, such as NGINX, acts as an intermediary between users and backend servers.
  • It distributes incoming requests to different backend servers based on predefined rules.
  • Users are unaware of the actual number of backend servers or their IPs due to the reverse proxy's anonymization capabilities.

Further Exploration with Docker Compose

The speaker suggests further exploration by setting up Docker Compose with multiple web application containers and an NGINX load balancer.

Exploring Docker Compose

  • To gain practical experience, set up Docker Compose with multiple web application containers and an NGINX load balancer.
  • This setup allows for observing how requests are distributed among the containers.

Monitorando logs em tempo real

Neste trecho, o palestrante explica como monitorar os logs em tempo real no Heroku. Ele menciona o comando tail log/application.log para acompanhar as entradas do log em tempo real. No Heroku, é possível usar o comando heroku logs --tail para obter o mesmo resultado.

Monitorando logs com tail

  • O comando tail log/application.log permite monitorar as entradas do log em tempo real.
  • No Heroku, pode-se utilizar o comando heroku logs --tail para monitorar os logs em tempo real.
  • A opção --tail mantém o log aberto e exibe as novas entradas conforme são registradas.
  • Essa prática é comum para usuários familiarizados com sistemas Linux.

Arquivo Procfile e execução de aplicação no Heroku

Nesta parte, é explicado que toda aplicação que é implantada no Heroku precisa ter um arquivo chamado Procfile. Esse arquivo define qual binário executável será utilizado pelo container web do Heroku. O palestrante também menciona que diferentes frameworks têm seus próprios executáveis específicos.

Utilizando o arquivo Procfile

  • Toda aplicação implantada no Heroku deve ter um arquivo chamado Procfile.
  • O arquivo Procfile especifica qual binário executável será usado pelo container web do Heroku.
  • Para frameworks como Rails, o executável seria algo como bin/rails server.
  • É importante definir corretamente o conteúdo do arquivo Procfile para que o Heroku saiba como executar a aplicação dentro do container.

Outros tipos de containers e uso do Procfile

Nesta seção, é mencionado que além do tipo de container web, o Heroku também suporta outros tipos, como queue ou job, para lidar com filas assíncronas. O palestrante destaca que o formato de arquivo Procfile se tornou universal e pode ser usado em diferentes frameworks. Ele também menciona ferramentas como o foreman para simular a execução local da aplicação.

Outros tipos de containers e uso do Procfile

  • Além do tipo de container web, o Heroku suporta outros tipos, como queue ou job.
  • É possível usar o arquivo Procfile para declarar esses outros tipos de containers.
  • O formato de arquivo Procfile se tornou universal e pode ser utilizado em diferentes frameworks.
  • Ferramentas como o foreman permitem simular a execução local da aplicação com base no conteúdo do arquivo Procfile.

Escalabilidade e auto-escala no Heroku

Nesta parte, é abordada a questão da escalabilidade das aplicações no Heroku. O palestrante explica que é possível escalar uma aplicação aumentando ou diminuindo o número de containers web usando o comando heroku ps:scale. Ele também menciona a possibilidade de contratar serviços de auto-escala para ajustar automaticamente a quantidade de containers com base na carga recebida pela aplicação.

Escalabilidade e auto-escala

  • Através do comando heroku ps:scale, é possível escalar uma aplicação no Heroku.
  • Aumentar o número de containers web pode ser feito com o comando heroku ps:scale web=2 ou mais.
  • Para desligar a aplicação, basta definir o número de containers como zero: heroku ps:scale web=0.
  • É possível ajustar manualmente o número de containers usando esse comando ou contratar serviços de auto-escala para fazer isso automaticamente com base na carga recebida pela aplicação.

Gerenciamento de dependências

Nesta seção, é abordado o tema do gerenciamento de dependências em diferentes linguagens. O palestrante destaca que cada linguagem possui seu próprio gerenciador de dependências e um arquivo específico para declará-las. Ele menciona exemplos como Bundler para Ruby, npm ou yarn para JavaScript/Node.js, Maven ou Gradle para Java, pip e requirements.txt para Python, Cargo.toml para Rust e go.mod para Go.

Gerenciamento de dependências em diferentes linguagens

  • Cada linguagem possui seu próprio gerenciador de dependências e um arquivo específico para declará-las.
  • Exemplos incluem Bundler (Ruby), npm/yarn (JavaScript/Node.js), Maven/Gradle (Java), pip/requirements.txt (Python), Cargo.toml (Rust) e go.mod (Go).
  • É importante utilizar esses gerenciadores e arquivos adequados para adicionar e atualizar as dependências do projeto.

Gerenciamento de Dependências

Neste trecho, o palestrante explica a importância do gerenciamento de dependências e como isso é feito em projetos PHP usando o Composer.

Arquivo composer.lock

  • O arquivo composer.lock declara as bibliotecas e suas versões baixadas.
  • É importante para garantir que todos os desenvolvedores tenham exatamente as mesmas versões das dependências.
  • Evita problemas de compatibilidade e introdução de bugs.

Uso do Composer

  • O projeto PHP utiliza o gerenciador de dependências Composer.
  • O arquivo composer.json declara as bibliotecas necessárias.
  • Ao executar composer update, todas as dependências são baixadas localmente.
  • No Heroku, ao fazer git push, o Composer é executado para montar a imagem com as dependências corretas.

Adicionando uma nova funcionalidade

  • Utiliza-se o comando composer require para declarar e baixar a biblioteca desejada (exemplo: cowsayphp).
  • Em seguida, executa-se composer update para garantir que a biblioteca foi instalada corretamente.
  • Modificações no arquivo index.php são feitas para utilizar a nova biblioteca.

Versionamento e Deploy

  • As modificações são adicionadas ao repositório Git com git add ..
  • Apenas os arquivos modificados são adicionados, conforme definido no .gitignore.
  • Comandos como git status, git commit -m, e git push heroku main são utilizados para versionamento e deploy da aplicação.

Instalando o Addon Papertrail

Nesta parte, o palestrante explica sobre os addons do Heroku e demonstra a instalação do addon Papertrail para monitorar logs da aplicação.

O que é um addon

  • Um addon é um plugin ou serviço oferecido pelo Heroku.
  • O Papertrail é um serviço de log que permite monitorar e pesquisar logs da aplicação.

Instalando o Papertrail

  • Utiliza-se o comando heroku addons:create papertrail para instalar o addon.
  • É possível escolher diferentes opções de planos, incluindo uma versão gratuita.
  • Com heroku addons, pode-se listar os addons instalados, incluindo o Papertrail.

Acessando a interface web do Papertrail

  • Utiliza-se heroku addons:open papertrail para abrir a interface web no navegador.
  • Através dessa interface, é possível fazer pesquisas nos logs da aplicação.
  • É especialmente útil quando há vários dynos em execução simultaneamente.

Container de Console

Neste trecho, o palestrante fala sobre a utilização de um container de console para realizar tarefas administrativas especiais em uma aplicação. Ele explica que esse container permite abrir uma conexão SSH segura e executar comandos interativos do framework ou do sistema operacional.

Utilização do Container de Console

  • Um container de console é usado para realizar tarefas administrativas especiais em uma aplicação.
  • Permite abrir uma conexão SSH segura.
  • É possível rodar comandos interativos do framework, como php -a para PHP ou rails console para Rails.
  • Também é possível abrir um shell bash para checar informações no nível do sistema operacional.
  • Carrega as mesmas configurações dos containers web, incluindo acesso ao banco de dados.
  • Cuidado ao utilizar o container de console, pois qualquer alteração feita no banco será permanente.
  • Não crie ou baixe arquivos no container, pois ele será destruído ao se desconectar.

Variáveis de Ambiente

Nesta parte, o palestrante aborda o conceito de variáveis de ambiente e sua importância na configuração das aplicações em containers. Ele explica como declarar e utilizar variáveis de ambiente usando arquivos .env e destaca a necessidade de não adicionar esses arquivos ao repositório Git por conterem informações sensíveis.

Conceito e Utilização das Variáveis de Ambiente

  • Variáveis de ambiente são utilizadas para configurar as aplicações em containers.
  • Boa prática declarar configurações como variáveis de ambiente.
  • Arquivo .env na raiz do projeto é usado para declarar e simular as variáveis de ambiente.
  • Evita a necessidade de escrever várias declarações export no arquivo local de perfil do Bash.
  • É recomendado ter um arquivo .env.example como modelo para criar o arquivo .env.
  • O arquivo .env deve ser adicionado ao .gitignore para não ser incluído no repositório Git.
  • Em produção, as variáveis de ambiente são configuradas no sistema operacional usando comandos como heroku config:set.

Boas Práticas e Segurança

Nesta seção, o palestrante destaca boas práticas relacionadas à segurança das aplicações em containers. Ele enfatiza a importância de nunca adicionar arquivos contendo senhas ou tokens ao repositório Git e ressalta que essas informações devem ser armazenadas apenas nas variáveis de ambiente.

Boas Práticas e Segurança

  • Nunca adicione arquivos como .env ao repositório Git.
  • Variáveis de ambiente são usadas para armazenar senhas e tokens.
  • Essas informações só existem dentro do container e não devem estar expostas no código fonte do projeto.
  • Credenciais e segredos jamais devem estar em um versionador de código acessível a todos.

Atualização da Aplicação

Nesta parte final, o palestrante demonstra como atualizar uma aplicação hospedada no Heroku. Ele mostra os passos necessários para adicionar uma nova rota e explica como configurar variáveis de ambiente para a aplicação.

Atualização da Aplicação no Heroku

  • Para atualizar a aplicação, é necessário fazer um commit das modificações no código.
  • Utilize os comandos git add ., git commit -m e git push heroku main.
  • O Heroku criará uma nova imagem com as modificações e reiniciará os dynos.
  • É possível verificar as variáveis de ambiente usando o comando heroku config.
  • Adicione o addon Postgres à aplicação para utilizar um banco de dados.

Configuring Database Connection and Listing Content

In this section, the speaker explains how to connect a PHP project to a PostgreSQL database and list the content of a table in HTML using PDO (PHP Data Objects).

Adding PDO Library with Composer

  • Use composer require csanquer/pdo-service-provider=~1.1dev to download a compatible version of the PDO library.
  • Create a lock file by running composer update to ensure that all dependencies are downloaded.

Configuring Database Access

  • Declare the database access URL as an environment variable named DATABASE_URL.
  • Retrieve the value of this variable using getenv function and parse its components for configuring PDO.

Creating a New Route and Template

  • Create a new route called '/db' that uses PDO to send a query to the database and retrieve names from it.
  • Use Twig, a template system provided by Symfony, to generate HTML by passing the array of names to the 'database.twig' template.

Committing Changes and Pushing to Heroku

  • Add modifications with git add ..
  • Check status with git status.
  • Commit changes with git commit -m "Descriptive message".
  • Push changes to Heroku with git push heroku main.

Working with Migrations

The speaker mentions that modern web frameworks often use migrations, which are scripts for creating tables, indexes, and other necessary elements in databases. However, this tutorial skips discussing migrations and focuses on other aspects.

Interacting with Postgres Console

This section explains how to open the Postgres console (psql) on Heroku's server and execute commands related to the database.

  • Open the Postgres console using heroku pg:psql.
  • Execute commands in the console, such as creating a table and inserting values.
  • Exit the Postgres console by typing q.

Testing the Database Query

The speaker demonstrates how to test the database query by opening it in a web browser.

  • Open the web browser using heroku open db, which corresponds to the newly created route.
  • Verify that the query successfully executed and displayed HTML with the inserted values.

Conclusion and Further Learning

The speaker concludes by mentioning that this tutorial covers only basic aspects of Heroku. They recommend exploring additional resources, such as articles on how Heroku works and understanding application lifecycle in dynos.

  • Learn more about releases or deployments on Heroku using heroku releases command.
  • Explore further documentation specific to your framework, including information about migrations.

Releases: Rollback to Version 10

The speaker discusses the benefits of using tools like Git and Heroku for managing code releases and rollbacks.

Rollback to Version 10

  • The recently deployed version 11 is causing issues, so they decided to rollback to version 10.
  • Manually updating source code using FTP would not have allowed for a quick and organized rollback.
  • Using tools like Git and Heroku enables faster and more efficient management of code releases and rollbacks.
  • Investing in such tools is worth it due to the time saved and improved organization.

Longevity of Heroku

The speaker explains why tutorials on specific tools may become outdated quickly, but platforms like Heroku have remained consistent over time.

Consistency of Heroku

  • Unlike specific tool tutorials that can become outdated quickly, platforms like Heroku have been around for over ten years and continue to function similarly.
  • Tutorials created in 2010 are still applicable in 2022, indicating the platform's stability.
  • Newer DevOps solutions aim to replicate the workflow provided by platforms like Heroku.
  • Even if not currently used in one's work, it is important to familiarize oneself with this way of working.

Next Episode: Architecture and Agile Project Management

The speaker previews the next episode where they will discuss architecture and agile project management based on what was learned in this episode.

Preview of Next Episode

  • In the next episode, they will build upon the concepts discussed in this episode.
  • They will delve into architecture and real-world agile project management.
Video description

Finalmente vou mostrar o que é o Heroku e como é o fluxo de trabalho mínimo de um projeto web ideal. Se você já usa Heroku, aproveite pra compartilhar o video com conhecidos que ainda não usam. Se nunca viu Heroku, prepare-se pra ficar surpreso! ## Conteúdo 00:00 - Intro 00:41 - Mega Sena da Virada 02:33 - Concorrência 04:11 - Intro a Heroku 04:46 - Deploy antigo 06:24 - Iniciando Tutorial Heroku 06:49 - Setup: Git é Básico! 07:22 - Heroku Login 08:18 - Primeiro Deploy 10:03 - Buildpack? Dockerfile? 10:35 - Entendendo Dynos e Containers 11:30 - Escalando Dynos 13:16 - Entendendo Load Balancer 16:41 - Vendo logs dos Dynos 17:22 - Entendendo Procfiles 18:58 - Mais sobre escalar dynos 20:21 - Entendendo Gerenciamento de Dependências 24:37 - Adicionando nova dependência 26:40 - Adicionando Addons 28:16 - Conectando num shell remoto 29:41 - Configurando com variáveis de ambiente 33:39 - Adicionando Banco de Dados 37:13 - Database Migrations 37:47 - Conectando no Banco de Dados 39:22 - Releases e Rollback 40:34 - Conclusão ## Links * Mega da Virada: Loterias Caixa colocam fila em app, e site fica fora do ar (https://tecnoblog.net/noticias/2021/12/31/mega-da-virada-loterias-caixa-colocam-fila-em-app-e-site-fica-fora-do-ar/) * Getting Started on Heroku with PHP (https://devcenter.heroku.com/articles/getting-started-with-php#set-up) * Transcript: https://www.akitaonrails.com/2022/01/10/akitando-112-subindo-aplicacoes-web-em-producao-aprendendo-heroku * Podcast: https://anchor.fm/dashboard/episode/e1cln4e