Migrando a ligação de serviço
Vamos considerar um app nativo de nuvem comum que segue os princípios do app de 12 fatores, simplificar e atualizar o código, e criar tanto uma versão do Cloud Foundry quanto uma versão do Code Engine. Essas versões servem como exemplo para a discussão das etapas de migração e aspectos de implementação.
O aplicativo de amostra é um aplicativo da Web típico, escrito em Node.jsJavaScript) e que usa a estrutura da Web Express. Um banco de dados IBM Cloudant NoSQL serve como o serviço auxiliar para armazenar dados exibidos pelo aplicativo. Como típico para os apps nativos de nuvem de 12 fatores, o aplicativo de amostra é baseado em componentes discretos e reutilizáveis que atuam como microsserviços para compor o aplicativo geral. Tanto o programa Node.js implementado quanto o banco de dados pode ser escalado, melhorado ou mesmo substituído de forma independente. Os componentes funcionam juntos por causa de como eles são configurados e por usar APIs bem definidas.
O banco de dados IBM Cloudant pode ser configurado para funcionar como um recurso anexado com as versões do aplicativo que são implementadas no Cloud Foundry e Code Engine. Pela simplicidade, a solução é mantida para esses dois componentes.
Criando a Ligação de Serviço
Este aplicativo de amostra requer um banco de dados Cloudant para armazenar conteúdo. É possível configurar o acesso ao Cloudant injetando manualmente as variáveis de ambiente, mas o processo típico é por meio da ligação de serviço.
O relacionamento entre o app e seus serviços auxiliares é explicitamente declarado, por isso as credenciais são criadas e injetadas automaticamente no ambiente de tempo de execução. Cloud Foundry fornece as credenciais como parte do objeto
VCAP_SERVICES. Code Engine imita este objeto através de sua variável de ambiente CE_SERVICES.
Tanto o Cloud Foundry quanto os aplicativos Code Engine são anexados ao serviço de banco de dados. O código implementado para o Code Engine pode ser considerado uma versão diferente, mais recente, do app Cloud Foundry. Ele continua a estar ligado ao mesmo serviço de banco de dados, mas por outros meios.
Para vincular a versão Code Engine do aplicativo a um serviço,
- Acesse sua instância de banco de dados Cloudant. Se você não tiver, crie uma.
- Crie credenciais de serviço (chave de serviço do IAM) para a instância do Cloudant com um nome descritivo. Especifique a função de IAM
Manager,WriterouReader) para seu aplicativo. Escolha uma função com o menor nível de privilégio necessário para o aplicativo. - Ligue o serviço ao app usando a credencial existente. Code Engine pode criar credenciais para você quando você liga um serviço. No entanto, ao criar sua própria credencial, você pode acompanhar e até mesmo alterar o privilégio independentemente de Code Engine.
Para este app de amostra com o Cloudant como o serviço de banco de dados, execute os comandos a seguir para criar a chave de serviço Cloudant-CF2CE-Manager com a função Manager e depois use-a para ligar o serviço.
ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager
Se seu app Cloud Foundry se conectar a um serviço por meio de um serviço fornecido pelo usuário, crie um app que use secrets ou configmaps para Code Engine. Usando secrets e configmaps, você pode injetar as credenciais de serviço no ambiente de tempo de execução e gerenciá-las como um objeto nomeado no projeto Code Engine.
Migrando o código
Normalmente, a migração de código é direta. Por exemplo, em vez de ler de uma variável de ambiente chamada VCAP_SERVICES para o Cloud Foundry, seu código deve ler de CE_SERVICES para Code Engine. Além disso, esteja
ciente das diferenças sutis na forma como os serviços são nomeados devido ao método em que os serviços são disponibilizados por meio de corretores para o Cloud Foundry e por meio do gerenciamento de recursos baseado em IAM para o Code Engine.
Dependendo da linguagem de programação, o código pode usar uma biblioteca de códigos ou módulo para acessar o ambiente de tempo de execução do Cloud Foundry, a configuração injetada localmente ("dotenv") e mais. Essas
seções devem ser adaptadas.
Compare o código no arquivo server.js nestes dois exemplos de aplicativo.
Preparando a migração de aplicativos
Se o aplicativo não puder ser desligado enquanto você o move do Cloud Foundry para o Code Engine, considere realizar a migração de código com uma etapa intermediária.
- 1cloudfoundry_base: A base de código Cloud Foundry como fonte inicial. Este app executa apenas no Cloud Foundry.
- 2cf_ce_intermediate_hybrid: Adicionar código para também suportar uma implementação Code Engine. Esse aplicativo é executado tanto no Cloud Foundry quanto no Code Engine.
- 3codeengine_target: Finalmente, mova-se para uma base de código Code Engine-somente após a migração do projeto real é concluída. Esse aplicativo é executado apenas no Code Engine.
Essa abordagem é benéfica porque é possível continuar a manter ou aprimorar a base de código durante o processo de migração, independentemente do ambiente de implementação.
Construindo o código e executando o app
Quando terminar a configuração da ligação de serviço, a migração do código e a preparação da migração, será o momento de construir o código. Siga as etapas no primeiro tutorial de migração para construir o código por meio de uma origem local. Se quiser usar o console para criar seu código, ele deverá estar no Git. Para obter mais informações, consulte Implementando seu app por meio do código-fonte.
Próximas etapas
- Acabou de iniciar a migração? Confira a Introdução.
- Comparar a terminologia do Cloud Foundry com o Code Engine.
- Experimente o Code Engine com um tutorial de construção local.
- Migrando a ligação de serviço (página atual)
- Aprenda sobre ajuste de escala e gerenciamento de tráfego.
- Encontre equivalentes do Code Engine para comandos do Cloud Foundry.
- Ainda tem perguntas? Experimente as Perguntas mais frequentes de Migrando aplicativos Cloud Froundry para o Code Engine.
Outras Informações
- Saiba mais sobre a precificação do Code Engine.
- Tente outros Code Engine tutoriais.
- Explore outros tópicos do Code Engine.