Primeiros passos utilizando o SAP Cloud Platform — SCP
Uma jornada de aspectos básicos do SCP até o Deploy de uma aplicação NodeJS
E aweeeeee meu povo!!!!
E mais um ano que passou, o que significa que temos mais um ano de novas tecnologias e desafios. Tenho alguns planos e algumas novidades para 2019, e essas novidades envolvem utilizar cada dia mais o SAP Cloud Platform (SCP) por aqui, e se você acompanha o Bar8 nesses últimos anos sabe que não iniciamos nenhum assunto sem antes ao menos dar uma base sólida para o que pretendemos alcançar.
Então hoje veremos os controles básicos do SAP Cloud Platform e, em seguida, vamos nos preparar para realizar um tour pelo cockpit do SAP Cloud Platform, além de realizar deploy de uma aplicação.
O que é o SAP Cloud Platform (SCP)?
O SAP Cloud Platform é um conjunto de Aplicações, Plataformas e Infraestrutura oferecidas como Serviço. Esses serviços ajudam muito principalmente quando é necessário criar e/ou estender aplicações para ambientes SAP.
Hoje com o SCP é possível trabalhar com diversas tecnologias e linguagens de programação, e em especial com ABAP, que já foi alvo de muita discussão se morreria ou não, e com o SCP podemos afirmar que a linguagem segue firme e forte.
Veja mais sobre essa discussão aqui no Bar8 acessando o link abaixo:
ABAP é mais forte do que você imagina
Nesta vida a única constante permanente é a mudança.
bar8.com.br
Além disso o SCP nos fornece suporte para o desenvolvimento de sistemas, nos permitindo criar landscapes com ambientes de teste e produção.
O que tem mais me empolgado em trabalhar com o SCP é a variedade de serviços disponíveis, principalmente quando o assunto é relacionado a suíte de aplicações do Leonardo, e é um assunto que deveremos tratar aqui no Bar8 em breve.
Um ponto que é positivo, mas delicado ao mesmo tempo, é a constante evolução que o SCP vêm sofrendo. Existe um risco enorme deste post ficar ultrapassado muito rapidamente.
E apenas para relembrar, existem outras opção de plataformas. Eu citei no meu último post fazendo menções sobre Google Cloud Platform (GCP), AWS e Heroku, que são três plataformas na nuvem, e que mais utilizei em 2018. Se quiser saber um pouco mais sobre você pode ler em:
O que significa SaaS, PaaS e IaaS e como eles funcionam?
Como você já percebeu mencionei que o SCP funciona como serviço, se você não entende muito bem o que isso significa, pode conhecer mais aqui:
O que são serviços e onde posso saber mais sobre eles?
Entendido o que é SaaS, IaaS e PaaS temos que o SCP é capaz de nos fornecer SaaS e PaaS. Essa combinação de PaaS e SaaS fornece todas as ferramentas necessárias para trabalhar em conjunto com as demais suítes de aplicações SAP (S/4 Hana, C/4 Hana e etc.)
Como exemplo, abaixo temos uma imagem apresentando diversos serviços da SAP:
Todos os serviços acima podem ser rodados em aplicações desenvolvidas de dentro do próprio SCP e é onde se encaixa o PaaS.
Existe a possibilidade de utilizar a SCP como IaaS também, entretanto não tenho conhecimento de como isso funciona ou de clientes que já utilizaram esse tipo de serviço.
Neo e o Cloud Foundry
Assim que acessamos o SCP vemos que existem dois ambientes de PaaS: Cloud Foundry e NEO
Vamos falar primeiro daquele que está lá desde sempre, este é o ambiente chamado Cloud Foundry.
Cloud Foundry é um projeto e padrão de código aberto, executado pela Cloud Foundry Foundation (e antes disso, a Linux Foundation).
Ela funciona com a SAP implementando o Cloud Foundry no SCP, usando servidores em data center de terceiros como AWS, Azure e Google Cloud (como é possível ver na própria imagem). Deixarei mais detalhes para quem quiser conhecer nos links de referência.
O outro ambiente é chamado de Neo. Se o outro ambiente é utilizando data center de terceiros esse aqui é um ambiente mantido e suportado pela própria SAP.
O ambiente Neo permite desenvolver aplicativos e e serviços. Você também pode usar o UI Development Toolkit para HTML5 (SAPUI5) para desenvolver interfaces.
Qual o ambiente ideal para você?
Muito recentemente passei por essa questão e a resposta não é muito simples. Os serviços mais interessantes para mim ainda estão disponíveis apenas no Cloud Foundry (serviços relacionados a Machine Learning e IoT por exemplo), mas o movimento que vejo é que com o tempo a maior parte dos serviços deverão ser movidos para o Neo.
A questão que passei tratava-se uma parceria com a SAP, onde se utilizássemos o ambiente Neo teríamos um determinado período sem custos para utilizar o ambiente para desenvolvimento e apresentação. Então estamos utilizando este ambiente, e pagando por alguns outros serviços do Cloud Foundry, mas que independente de qualquer coisa, já tem ajudado bastante.
SAP Cloud Cockpit
Conseguimos acessar os cockpits do SAP Cloud Platform acessando:
As coisas mudam muito rápido no SCP, entretanto até aqui
a SAP têm nos oferecido uma forma gratuita do SAP Cloud Platform também para estudos e experimentação.
Acessando com uma conta trial teremos acesso a ambos os ambientes Neo e Cloud Foundry para teste. Até onde se tem conversado o ambiente Neo é uma avaliação gratuita que nunca expira, o ambiente Cloud Foundry tem o tempo determinado de 90 dias para teste, entretanto é possível renová-lo quantas vezes desejarmos.
Já dentro do SAP Cloud Platform veremos que é utilizado dois níveis de contas: Contas globais e Subcontas.
Uma conta global é a conta principal da sua organização ou equipe. É a área central de todos os recursos. A conta global não é acessada diretamente, ela apenas funciona como um “guarda-chuva” ou um contêiner para todas as subcontas.
As subcontas são criadas pela conta global e podem ser usadas para subdividir recursos. Cada subconta tem um nome distinto.
Como usarei uma conta trial para este post não conseguirei demonstrar tão bem alguns detalhes, pois contas trial possuem uma única conta global e uma única subconta, entretanto é importante desde já saber como isso funciona quando você estiver em uma empresa, e acessar o cockpit se deparar com várias subcontas.
Confesso que esta parte ainda está um pouco abstrata para mim sobre como as empresas deverão se organizar, pois os clientes que tenho trabalhado ainda não têm adotado o uso do SCP.
Mas uma conta possui uma espécie de "cota de recursos" que terá acesso, e com as subcontas são uma forma de dividir essa cota. Assim fica mais simples controlar o quanto de recurso cada subconta necessita, e qual serviço está necessitando de mais recurso.
Criando uma conta
Este passo é para você que ainda não possui conta. Caso já possua, pode pular para o próximo tópico que é: Navegando no SCP.
Vamos acessar o endereço:
Então clicar na opção destacada na imagem abaixo:
Então você deverá ser redirecionado para outra página
Navegando no SCP
Vá se acostumando com essa tela:
Este é o cockpit SCP. E é o ponto central quando estamos utilizando-o para desenvolvimento.
Vamos clicar no ambiente NEO primeiramente para explorar mais opções, dessa forma você deverá ser levado para a seguinte tela:
A seção Status do sistema, na página Visão geral, dá uma rápida visão sobre os nossos aplicativos.
É possível fazer deploy de aplicativos em diversas linguagens e até mesmo de banco de dados no SCP. Então aqui é uma forma rápida para saber se algum crash aconteceu nos seus apps. Além de ter uma visão geral de todos seus aplicativos, se estão iniciados ou parados.
Lembrando, este recurso estará disponível desde que tenha sido utilizado o ambiente NEO para o deploy. Para o ambiente Cloud Foundry existe um outro painel para acompanharmos nossas aplicações.
No painel do lado esquerdo, é possível ver maiores detalhes dessas aplicações. Então por exemplo vamos navegar para Applications> HTML 5 Applications
Vamos criar uma aplicação apenas para teste, e poder acessar outros controles do SCP, mas a ideia aqui nesse momento é apenas entender onde estão os controles.
Vamos clicar no nome da nossa aplicação, para então poder acessar controles mais específicos da nossa aplicação
Aqui encontraremos informações específicas sobre o aplicativo. Como por exemplo o consumo de recursos, atualizar a versão, encontrar o URL do aplicativo e muito mais.
Vamos voltar a tela inicial do ambiente NEO, e então vamos explorar um pouco mais o que o SCP pode fornecer para os nossos aplicativos.
Services
E a agora a minha parte predileta no SCP: Services
Aqui acredito que ficará claro a diferença em quando utilizar os ambientes Cloud Foundry e o NEO.
No ambiente NEO o único serviço que tenho utilizado é o do Web IDE, quando preciso realizar um deploy de uma aplicação, pois durante o desenvolvimento ainda tenho preferido utilizar o VSCode localmente. Para encontra-lo basta digitar web na barra de busca, como na imagem abaixo:
Entretanto no inicio desse tópico eu havia comentado sobre essa ser a minha parte predileta do SCP. Disse e assumo! Mas não disse que era minha parte predileta utilizando o ambiente NEO.
Vamos voltar ao inicio e agora acessar o ambiente Cloud Foundry.
Na tela seguinte, é possível conferir a quantidade de novos serviços passamos a ter acesso, que não estão disponíveis no ambiente NEO:
No Cloud Foundry um ambiente de desenvolvimento para aplicativos é chamado de: Spaces.
Spaces normalmente contêm uma única aplicação (é possível possuir mais de uma aplicação, mas na minha experiência isso não ficou legal, por isso hoje prefiro trabalhar apenas com uma aplicação por space).
Muito semelhante a subcontas que havíamos conversado, cada space tem uma alocação de recursos da conta global (a conta global pertence à sua equipe ou organização). Esse recurso dedicado é chamado de quota pelo SCP e limita a quantidade de memória, o número de URLs (chamados de rotas) e outros recursos. Cada espaço é atribuído a um ou mais usuários (chamados de membros).
A sua empresa poderá criar espaços para projetos individuais e também criar espaços para produção, homologação e etc. Cada espaço é separado e isolado de todos os outros. #vivaContêiner
Entendido melhor como funciona parte do Cloud Foundry, vamos clicar em spaces, e então seremos levado para a seguinte tela:
Clicando no espaço DEV, seremos levado a seguinte pagina:
Então chegamos ao paraíso dos serviços. Como é possível ver na imagem abaixo, aqui encontraremos serviços para projetos que envolvam Blockchain, IoT, Machine Learning e etc.…
Clique em qualquer um dos serviços para obter maiores detalhes e/ou para poder assinar o serviço e obter a sua própria instancia — Assinar um desses serviços será cenas para os próximos capítulos, hoje é apenas um overview.
Repositório e Documentação
Quando voltamos para o ambiente NEO temos opções interessantes para documentação e versionamento. Não vou entrar em detalhes sobre como documentar seus projetos usando o SCP ou como repositório Git, pois na minha breve utilização ainda tenho preferido utilizar o JIRA ou Trello, Confluence e Bitbucket para isto.
Entretranto, uma vantagem para quem gosta de trabalhar com o Web IDE, é que este repositório é integrado, sendo assim é possível navegar pelo versionamento do código utilizando o Web IDE.
Para acesso a esta área, basta navegar novamente para o ambiente NEO, e então será apresentado como na imagem abaixo:
Conectividade
Destinations: Irá nos ajudar a conectarmos a sistemas externos, sejam eles sistemas SAP ou não. Ele lida com o trabalho pesado em torno de autenticação, permissões e CORS para a maioria dos navegadores.
Cloud Connectors: Ajudarão a nos conectar a sistemas SAP. É realmente muito útil utilizar essa opção quando precisamos extrair dados do SAP local durante o desenvolvimento de um aplicativo.
Segurança
Vamos clicar em Security >Authorizations como na imagem abaixo:
Aqui encontraremos todas as possibilidades para configuração de acesso, o que é muito útil quando você trabalha em conjunto com um time. Aqui somos capazes de configurar acessos de administradores para aplicativos distintos, e também acesso de desenvolvedor. O uso das Funções nas configurações de Segurança permite definir quanto acesso cada usuário ou grupo de usuários precisa.
No menu Trust por exemplo, somos capazes de definir as configurações da comunicação SAML (Security Assertion Markup Language) 2.0 entre o SAP Cloud Platform e os provedores confiáveis.
Esta área dificilmente será utilizada enquanto estivermos em uma conta trial, entretanto, para uma conta produção certamente será necessário utilizar.
Instalando o CLI — Command Line Interface
Como havia falado anteriormente no SCP o que mais tenho utilizado são os serviços do Cloud Foundry, e um recurso apenas disponível para o Cloud Foundry é a opção para trabalhar via linha comando. Isto realmente ajuda muito no dia a dia.
Então certamente usaremos o CLI em futuros exemplos, segue abaixo como configurar e alguns comandos básicos.
O download da versão mais recente do CLI para o seu sistema operacional é possível ser realizada no seguinte endereço:
E aqui todos os detalhes para ajudar na instalação:
Após instalado, vá ao seu terminal e então digite:
cf
E você deverá conseguir ter acesso a uma série de comandos e além disso a versão do seu CLI:
Instalado o CLI agora é hora de descobrir qual a região do seu Cloud Foundry para assim obter a nossa URL para acesso. Conseguimos isso acessando o seguinte link:
Ou mais simples que isso, quando acessamos o cockpit. Basta seguir o caminho como na imagem abaixo:
Agora que sabemos o nosso endpoint, vamos configurá-lo no nosso CLI. Basta fazer o comando abaixo:
cf api <URL>
Como na imagem abaixo, seguido do respectivo resultado:
Então aqui já seriamos capazes de efetuar o login por exemplo. Veja um exemplo na imagem abaixo:
Deploy de uma aplicação utilizando o Cloud Foundry
Agora já que já tivemos uma visão geral de como funciona o SCP, vamos a parte mais divertida, que é realizar o deploy de uma aplicação.
Abaixo irei descrever em alguns passos como realizar o deploy de uma aplicação NodeJS usando o ambiente Cloud Foundry então. Este exemplo é basicamente igual para qualquer tipo de aplicação, inclusive é assim que tenho trabalhado com SAPUI5, vamos aos passos:
- Faça login utilizando o CLI:
- Clone o conteúdo do repositório git disponível no link do GitHub usando o comando:
git clone https://github.com/erickcarvalho/bar8-cf-exemplo01
Caso o comando falhe ou você não tenha o GIT instalado na sua maquina, é possível utilizar a opção de fazer download seguindo o seguinte:
- Acesse o endereço: https://github.com/erickcarvalho/bar8-cf-exemplo01
Com a aplicação em sua maquina, abra o arquivo:
manifest.yml
Este arquivo é o responsável por indicar a configuração do contêiner durante a criação da instancia que será criada para a nossa a aplicação. Ele aberto possui as seguintes informações:
Entendendo melhor as informações desse arquivo, vamos ver o que é cada um dessas propriedades que utilizei:
Buildpack — É o framework que utilizaremos em tempo de execução. Os buildpacks cuidam por examinar nossos aplicativos, e para gerenciar quais dependências baixar e como configurar os aplicativos para se comunicarem com serviços vinculados. Como estamos utilizando o NodeJS em nossa aplicação, ele utiliza o NPM.
Então trocando em miúdos buildpack é usado para compilar ou preparar seu aplicativo para a execução.
Como sei quais buildpacks o SCP está preparado? Simples, basta digitar no seu terminal:
cf buildpacks
E você deverá ter o seguinte resultado:
Voltando ao arquivo manifest.yml, vamos entender as propriedades.
Applications: Aqui iremos configurar name, command, memory e instances, sendo que:
- Name: O nome da aplicação é sempre precedida de um traço. E este é o único atributo realmente obrigatório.
- Command: Este ponto é específico do NodeJS. Você já pensou: Após subir meu código para a plataforma, como acontece o start? quem roda a minha aplicação? Pois bem, para que após a instalação da aplicação no SCP ocorra, precisamos criar um script para que seja possível colocar a nossa aplicação automaticamente no ar. As plataformas em geral já estão preparadas para rodar o script START em uma aplicação NodeJS. E este script configuramos no arquivo package.json da aplicação NodeJS. Veja abaixo:
package.json
- Memory: Quanto de memória vamos dedicar a essa instância da nossa aplicação. Neste caso estamos dedicando 256MB
- Instance: Quantas instâncias serão dedicadas a essa aplicação, no nosso caso por se tratar de uma aplicação muito simples, vamos trabalhar apenas com uma instância.
Após ter feito a configuração referente a propriedade NAME do MANIFEST.YML vamos colocar a nossa aplicação no ar.
Existem duas maneira. A primeira utilizando o CLI que é como faremos hoje, mas é possível fazer direto pelo site.
Primeiramente, pelo site o caminho seria:
Eu particularmente não utilizo essa opção, justamente pelo trabalho de navegar até essa pagina, e além disso ter que zipar a nossa aplicação sempre antes de realizar o Deploy. Então abaixo eu apresento como eu faço normalmente:
Utilizando o seu terminal, acesse a pasta da sua aplicação. Como na imagem abaixo:
Certifique-se que ainda está logado no Cloud Foundry, e então execute o comando abaixo:
cf push <NOME DA APLICAÇÃO>
Você deverá alterar o nome da aplicação aqui, isso pois o SCP utiliza parte do nome para poder montar a URL de acesso da sua aplicação. Como estamos utilizando uma conta trial, as rotas são compartilhadas com todas as demais contas trial da plataforma. Então aqui altere o nome da aplicação que está bar8_cf_exemplo01 para SEU_NOME_bar8_cf_exemplo01, ou algo do tipo.
Importante saber que é possível controlar a criação de URL com os comandos random-route e host, entretanto como nosso exemplo é apenas experimental deixei para que o SCP cuide disso.
Um outro ponto muito importante é que o arquivo manifest.yml deverá estar neste mesmo diretório. Caso contrário é necessário informar o local do arquivo com o seguinte comando:
cf push -f <CAMINHO-DO-MANIFEST.YML>
Logo após o comando PUSH , você deverá ter algo assim:
As informações acima podem ser acessadas com os comandos:
cf apps
— Este comando irá listar todas as suas aplicações
cf app <NOME DA APLICAÇÃO>
— Este comando irá lhe passar as informações mais importantes sobre a aplicação que você informou.
As mesmas informações que foram exibidas no final do log no terminal ou após usar o comando cf app
, estarão disponíveis acessando o espaço DEV dentro do ambiente Cloud Foundry:
Uma última curiosidade, no menu da esquerda, algumas opções muito úteis passam a ficar disponíveis também.
Mas o que interessa nesse momento é ver a nossa aplicação no ar. Sendo assim vamos pegar a nossa URL, que como vimos um pouco antes é:
E então:
É assim que tenho preferido realizar o deploy das minhas aplicações. Dessa forma tenho a liberdade de a qualquer momento trocar de plataforma, e além disso fica mais fácil para trabalhar localmente.
Deploy de uma aplicação utilizando o NEO
Para facilitar o trabalho já criei uma aplicação em SAPUI5, que é possível acessar no seguinte link:
Caso você tenha optado por utilizar a aplicação que estou disponibilizando, não será necessário realizar nenhuma modificação no código. Apenas precisaremos compacta-la para então importar no SCP utilizando o Web IDE.
Agora que sabemos que a aplicação está funcionando sem problemas, vamos realizar o Deploy da aplicação.
Vamos clicar na URL e então complementa-la para que seja possível acessar a nossa aplicação. No meu caso irei complementa-la com /webapp/index.html, isso porque é a forma que está estruturada as minhas pastas no Web IDE. Veja as imagens abaixo:
Conclusão
E já que conversamos aqui hoje sobre tantos aspectos técnicos, deixe-me apenas concluir com uma mensagem que é a essência do que está por vir nos próximos anos.
Quando se trata de nos mantermos atualizados, estar motivado é o recurso mais precioso que temos. Se vamos dominar consistentemente nosso ofício, precisamos proteger nossa motivação dos desafios que ameaçam extingui-la.
Especificamente, precisamos estar atentos para sentimentos de ansiedade ou sermos oprimidos. Essas cargas podem ser abordadas desde o início com hábitos saudáveis de aprendizado, bem como foco organizado e deliberado.
Se você puder proteger e cultivar sua motivação para aprender o que está por vir, nada poderá ficar no seu caminho. Você desenvolverá uma resolução inabalável que o levará a se tornar o melhor desenvolvedor possível.
Fique apaixonado. Permaneça motivado.
Obrigado pela leitura, e em especial ao Adriano Campanhola que me ajudou na elaboração deste texto.
Não deixe de conferir as referências abaixo, e se curtiu o post não deixe de participar comentando, compartilhando ou simplesmente segurando esse botão de aplausos para mostrar que é esse tipo de conteúdo que você deseja ter por aqui. Muito obrigado e até mais!