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 createpara 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=1to 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:scalecommand.
- 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.logpermite monitorar as entradas do log em tempo real.
- No Heroku, pode-se utilizar o comando
heroku logs --tailpara monitorar os logs em tempo real.
- A opção
--tailmanté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
Procfileespecifica 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
queueoujob.
- É 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
foremanpermitem 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=2ou 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.lockdeclara 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.jsondeclara 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 requirepara declarar e baixar a biblioteca desejada (exemplo: cowsayphp).
- Em seguida, executa-se
composer updatepara garantir que a biblioteca foi instalada corretamente.
- Modificações no arquivo
index.phpsã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, egit push heroku mainsã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 papertrailpara 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 papertrailpara 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 -apara PHP ourails consolepara 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
.envna raiz do projeto é usado para declarar e simular as variáveis de ambiente.
- Evita a necessidade de escrever várias declarações
exportno arquivo local de perfil do Bash.
- É recomendado ter um arquivo
.env.examplecomo modelo para criar o arquivo.env.
- O arquivo
.envdeve ser adicionado ao.gitignorepara 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
.envao 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 -megit 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.1devto download a compatible version of the PDO library.
- Create a lock file by running
composer updateto 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
getenvfunction 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 releasescommand.
- 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.