Introdução à migração do Heroku para o Code Engine
Dê as boas-vindas aos usuários do Heroku em IBM Cloud® Code Engine.
O IBM Cloud® Code Engine é uma plataforma totalmente gerenciada, serverless, que executa suas cargas de trabalho conteinerizadas. O Code Engine até constrói imagens de contêiner para você por meio do seu código-fonte. A experiência do Code Engine foi projetada para que você possa se concentrar na gravação de código e não na infraestrutura que é necessária para hospedá-lo.
O Code Engine foi projetado com os seguintes objetivos principais em mente.
- Foco no seu código. O Code Engine fornece uma experiência de desenvolvedor simplificada. Não há necessidade de aprender sobre ou gerenciar a infraestrutura subjacente.
- Suportar as modernas características de tempo de execução, como ajuste automático de escala, escalonamento para zero quando inativo e integração contínua com serviços gerenciados e segurança.
- Suportar todos os seus aplicativos baseados em nativo de cloud, sejam eles apps de 12 fatores, funções orientadas por eventos ou tarefas em lote executadas até a conclusão. Se ele puder ser conteerizado, o Code Engine poderá executá-lo.
- Pague apenas pelos recursos que você realmente usa.
Se você vem de uma experiência com o Heroku, muitos desses recursos lhe parecerão familiares. No entanto, o Code Engine também inclui alguns novos recursos que permitem que você vá além do que o Heroku oferece, incluindo aplicativos que podem ser dimensionados para zero e não incorrer em cobranças. Além disso, Code Engine requer uma conta Pay-as-you-Go que inclui uma camada livre. Então, depois que você passar pela diferença sintática da experiência do usuário, você e seus aplicativos se sentirão em casa no Code Engine.
Objetivos
- Conheça as semelhanças entre o Code Engine e o Heroku.
- Aprenda o processo geral de implementação de apps no Code Engine.
- Implemente um aplicativo por meio de código em seu sistema local com Code Engine.
Assista ao tutorial em YouTube. Implante o aplicativo Heroku em IBM Cloud Code Engine.
Pré-requisitos
Antes de começar com o Code Engine, é necessário configurar a sua conta e instalar a CLI.
-
Todos os usuários do Code Engine são obrigados a ter uma conta pré-paga.
-
Enquanto é possível usar o Code Engine por meio do console, os exemplos nesta documentação se concentram na linha de comandos. Portanto, deve-se instalar a CLI do Code Engine.
ibmcloud plugin install code-enginePara obter mais informações, veja Configurando a CLI do Code Engine. Para obter mais informações sobre a CLI, consulte a Referência da CLI do Code Engine.
Comparando Heroku e Code Engine terminologia
Antes de começar a implantar aplicativos em Code Engine, aprenda os conceitos básicos sobre Code Engine. A tabela a seguir descreve algumas diferenças de terminologia de alto nível entre Cloud Foundry e Code Engine.
| Heroku | Code Engine | Descrição |
|---|---|---|
| N/A | Grupo de recursos e projetos | Um agrupamento de cargas de trabalho. A escolha específica de qual carga de trabalho entra em cada agrupamento é definida pelo usuário. "Grupos de recursos" são um conceito IBM Cloud, enquanto que "projetos" são específicos do Code Engine. Os projetos fornecem um nível de isolamento entre as cargas de trabalho. Consulte Gerenciando projetos. |
| Dynos | Contêineres | Um dyno é um container de peso leve que executa seu código Heroku e é gerenciado para você. Em Code Engine, os contêineres subjacentes são baseados em Kubernetes e são gerenciados automaticamente para você. |
| Aplicativo | Aplicativo (app) | Uma carga de trabalho que responde a solicitações HTTP de uma API REST, uma solicitação de página da Web ou um evento, por exemplo. Code Engine exige que os aplicativos incluam o servidor HTTP como parte do código. Code Engine Os aplicativos
são dimensionados automaticamente (para cima e para baixo) com base na carga de entrada. É possível configurar a escala mínima e máxima se necessário. Por padrão, o aplicativo escuta na porta 8080. É possível substituir esse comportamento
usando o console ou com a sinalização --port da CLI. Veja Trabalhando com apps no Code Engine. |
| N/A | Tarefa ou tarefa em lote | Um trabalho executa uma ou mais instâncias de seu código executável em paralelo. Ao contrário dos aplicativos, que manipulam solicitações de HTTP, as tarefas são projetadas para executar uma vez e encerrar. Ao criar uma tarefa, é possível especificar informações de configuração de carga de trabalho que são usadas cada vez que a tarefa é executada. Veja Trabalhando com tarefas e execuções de tarefas. |
heroku create e git push heroku main ou heroku container:push web |
app create |
O processo de criação de um aplicativo. Com o Heroku, você cria um app e, em seguida, empurra seu código para ele. Seu código é construído e implementado nessa etapa única. Com Code Engine, você pode extrair uma imagem de contêiner de um repositório de imagens, criar seu código-fonte a partir de um repositório, como o GitHub, ou extrair seu código de um arquivo local em seu sistema, tudo a partir de um único comando. Você pode criar código com base em um Dockerfile ou usar um pacote de criação do Paketo. É possível construir por meio de uma única etapa na CLI, bem como no console do Code Engine. Veja Planejando sua construção. |
| Domínios customizados | Mapeamento de domínio personalizado | Ambos os serviços permitem que você defina e gerencie URLs externas para suas cargas de trabalho. Code Engine fornece suporte para mapeamentos de domínios personalizados a partir do console. Você também pode adicionar domínios personalizados através de IBM Cloud Internet Services ou qualquer outro provedor de domínio de sua escolha. |
Para mais termos e capacidades para Code Engine, veja Learn cerca de Code Engine.
Efetue login na IBM Cloud
Siga estas etapas para efetuar login na sua conta da IBM Cloud e destinar um grupo de recursos.
-
Efetue login na CLI do IBM Cloud .
ibmcloud login -
Direcione um grupo de recursos executando o comando a seguir. Para obter uma lista de seus grupos de recursos, execute
ibmcloud resource groups.ibmcloud target -g <resource_group>Saída de exemplo
Targeted resource group default
Criando um projeto
Um Code Engine "projeto" agrupa cargas de trabalho relacionadas a uma coleção lógica. É possível agrupar cargas de trabalho em diferentes projetos com base em qualquer critério que faça sentido para você, por exemplo, estrutura de organização da empresa, dependências entre as cargas de trabalho ou ambientes de desenvolvimento versus teste versus produção. Você pode então configurar o acesso a esses projetos. Tenha em mente que as cargas de trabalho dentro de um único projeto compartilham uma rede privada e ficam isoladas dentro do limite de segurança do projeto. Todas as cargas de trabalho dentro de um projeto podem conversar entre si livremente sem preocupação de serem vistas por cargas de trabalho fora do cluster. Se as cargas de trabalho em diferentes projetos quiserem se comunicar entre si, a comunicação deverá utilizar a Internet ou uma rede privada IBM interna. Para mais informações, consulte Opções de visibilidade para um aplicativo Code Engine.
Crie um projeto no Code Engine chamado sample-proj.
ibmcloud ce project create --name sample-proj
Saída de exemplo
Creating project 'sample-proj'...
ID for project 'sample-proj' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample-proj' to be active...
Now selecting project 'sample-proj'.
OK
Note que o seu projeto também é selecionado para contexto, portanto, todos os comandos subsequentes relacionados ao aplicativo estão dentro do escopo deste novo projeto sample-proj.
Implementando seu aplicativo
Esse aplicativo de amostra extrai código do repositório GitHub de amostra. Este código é um simples Push seu código para Code Engine ao usar o comando
application create. Deve-se fornecer um nome para o seu aplicativo e a localização do código-fonte. O exemplo a seguir cria um aplicativo chamado myapp que usa a estratégia buildpack e fornece o local para o código-fonte no diretório atual (.).
ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine
Saída de exemplo
Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud
E aí está. Você agora tem um aplicativo voltado para a Internet. O código no aplicativo em si é o mesmo usado para um aplicativo do Heroku, apenas os comandos do Code Engine são ligeiramente diferentes.
Vamos olhar mais detalhadamente o comando app create anterior. Observe que a saída do comando app create fornece informações sobre a progressão da execução da compilação antes de o
aplicativo ser criado e implantado.
- O Code Engine recebe uma solicitação para criar um aplicativo por meio do código-fonte (em vez de extrair diretamente de uma imagem).
- Code Engine verifica se há um ID de serviço IAM e uma chave de API associados ao projeto selecionado. Essa ID de serviço deve estar autorizada a ler e gravar em IBM Cloud Container Registry. Se nenhum ID de serviço existir, o Code Engine criará um para você. Note que este ID de serviço é usado para solicitações de construção do Code Engine subsequentes que são executadas por meio do mesmo projeto.
- Este exemplo cria código a partir de um repositório público GitHub (
--build-source https://github.com/IBM/heroku-to-code-engine). O código-fonte é compactado em um arquivo e carregado em um namespace gerenciado dentro da instância IBM Cloud Container Registry em sua conta. Note que você só pode destinar o IBM Cloud Container Registry para suas construções locais. Para obter mais informações sobre o IBM Container Registry, incluindo informações sobre limites de cotas e acesso, consulte Introdução ao IBM Cloud Container Registry. - O Code Engine constrói seu código-fonte em uma imagem. A imagem de origem é criada no mesmo namespace do seu archive de origem.
- Após a conclusão da construção, seu aplicativo é implementada. É possível acessar seu aplicativo por meio da URL fornecida.
Com o Code Engine, você obtém automaticamente muitos dos mesmos recursos do Heroku, como escalonamento automático e implementação de atualizações blue-green, mas também aproveita os benefícios de recursos mais recentes, como o escalonamento para baixo até zero, garantindo que você não seja cobrado se o aplicativo não estiver ativo.
Quer saber mais sobre suas opções para a construção do seu código-fonte? Consulte os comandos application create e job create.
Quer aprender mais sobre aplicativos e tarefas? Consulte Trabalhando com apps no Code Engine e Trabalhando com tarefas e execuções de tarefa.
Limpar
Depois de concluir este tutorial, é possível limpar os recursos criados com os comandos a seguir.
Excluir seu aplicativo
ibmcloud ce app delete --name myapp
Quando você exclui seu app, os arquivos de construção associados também são excluídos.
Por último, exclua as imagens que a construção criou por meio do IBM Cloud Container Registry.
- Navegue até Registro no console IBM Cloud.
- Localize o archive e a imagem associados ao seu aplicativo procurando o nome do seu aplicativo.
- Selecione o archive e a imagem e exclua.
Transcrição de vídeo
Oi, meu nome é JJ Asghar e eu sou um defensor desenvolvedor do IBM Cloud. Recentemente, você pode ter ouvido falar de Heroku mudando sua política de graça-a camada livre. Está causando um desafio para muitos desenvolvedores por aí então eu quero tirar um punhado de momentos aqui para mostrar como você pode migrar do Heroku para o Code Engine da IBM Cloud em apenas um punhado de etapas. Então, vamos em frente e começar a brincar com isso e ver o quão rápido você pode realmente fazer o seu sistema funcionar.
Então a primeira coisa primeiro, se você não viu isso, esta é a linha real dentro do blog oficial da Heroku, a partir de 28 de novembro de 2022, nós planejamos parar gratuitamente-oferecendo os planos de produtos gratuitos e planejando desligar os dinos e serviços de dados gratuitos. Estaremos enviando uma série de comunicações por e-mail para usuários afetados. Isso é desafiador para muitos aplicativos web iniciantes iniciantes. Eu sei por um fato pessoalmente eu usei o Heroku quando comecei de volta no dia então este é um hit bem grande para muitas pessoas e quero mostrar como é fácil converter de Heroku para Code Engine.
Então primeira coisa primeiro, vamos ver de fato um belo aplicativo que eu criei. Se eu for em frente e iniciar meu aplicativo aqui, teremos um pequeno e agradável aplicativo flask. Se você não sabe o que é python ou frasco, é um formato é um formato para python para poder executar um aplicativo em uma porta padrão. Então vamos dizer que temos essa aplicação; ela diz "Olá Mundo!". Eu já o implementei e podemos conferir aqui Temos nosso aplicativo de produção incrível em heroku.com. Diz "olá mundo" e queremos ir em frente e mudá-lo. Queríamos atualizá-lo para que eu possa ir em frente e atualizá-lo rapidamente para "Hello Moving from Heroku to Code Engine".
Vamos em frente e vamos sair disso. git add . git commit -m “update hello line”. Aí eu vou em frente e empurrarei e assim como você normalmente faria para empurrar código para o Heroku. Quero mostrar a vocês que este
é o mesmo processo dentro do Code Engine. O que faremos é, criaremos um novo ... vamos fazer o login no IBM Cloud primeiro e depois a partir daí vamos criar um novo projeto e depois vamos em frente e implementá-lo para ver que ele funciona.
Então lá vamos nós, fomos em frente e implantamos primeiro para o Heroku, só para ter certeza de que todos nós temos nosso código de trabalho e eu vou em frente e recarregamos isso e lá vamos nós estamos mudando de Heroku para o Code Engine para sabermos que nosso código funciona. Isso é ótimo.
Então agora na verdade vamos pegar o Code Engine como parte disso, então primeira coisa primeiro, precisamos do log IBM Cloud em. Então eu vou seguir em frente e fazer login no IBM Cloud. Se você não tiver configurado o vídeo IBM Cloud ou se você não tiver configurado sua conta IBM Cloud, se você olhar acima, eu você deve ver um link para ele, o que eu colocarei no vídeo.
Eu vou em frente e copiarei meu nome aqui e então eu vou pegar minha senha, fazer o login apenas bem, o que é ótimo para ver, perfeito. E agora o que eu vou fazer é ibmcloud ce project create —name amazing product production app.
Então isso cria o nosso agradável, pouco ... Alvo primeiro. Vou pegar meu grupo de recursos padrão e depois eu vou em frente e crio o projeto. Lá vamos nós. Deve levar apenas um momento-perfeito. Agora você pode mudar seu nome para o que quiser.
Este é apenas um catch-all para o seu projeto, que é útil. Em seguida, vou pegar o próximo comando, que é ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs
Agora porque eu já tenho um requirements.txt, este será, este aplicativo é inteligente o suficiente para descobrir, " hey é um aplicativo python! Então, vamos em frente e construa! ", o que é legal. Então como você pode ver, está dando
passo um aqui. É rodando a construção, o que é bom. Isso cria uma imagem agradável e privada para nós também, o que é útil. É preciso um par de momentos. Lá vamos nós e agora vemos que se quisemos fazer isso sem espera, que é o -nw,
podemos realmente colocar isso em segundo plano e esperar que ele venha para cima e então podemos verificar através deste build run get o nome real. Sendo que nós vamos ficar olhando para isso ao vivo, nós vamos em frente e fazer
isso aqui.
Perfeito! Então, agora vou em frente e abro este URL aqui e ele veio até aqui e, como você pode ver
"olá mudando de Heroku para Code Engine"
E aí está. Peguei exatamente o mesmo código que fiz de Heroku. Eu criei um novo projeto e depois criei um aplicativo e simplesmente o empurrei e ele simplesmente funcionou imagine o que você pode fazer com isso para si mesmo. Isso mostra a potência que é o Code Engine e em uma camada livre ela é verdadeiramente livre-assim como o Heroku foi ou será ou foi será ou não será no futuro. Code Engine é gratuito para sempre, o que é ótimo e esperemos, ele tornará sua vida um pouco mais fácil.
Muito obrigado por assistir e se você tiver alguma dúvida, meu identificador do Twitter é @jjasghar ou você é mais do que bem-vindo para me enviar um e-mail para awesome@ibm.com. O meu trabalho é ser um nerd personifico para nunca hesitar em chegar à tona.
Muito obrigado.
Tchau a todos.