Categoria
🤖
TecnologiaTranscrição
00:00Olá, sejam bem-vindos à aula de Arquitetura SOA e Web Services.
00:09Meu nome é Eduardo, sou arquiteto de soluções da Platform Builders,
00:14com mais de 20 anos de experiência em TI, especialista em integração de sistemas,
00:20atuando sempre diretamente com serviços financeiros e bancários.
00:24Tenho pós-graduação em gestão de negócios pela IBMEC-RJ e MBA em arquitetura de soluções pela FIAP.
00:32Além da Platform Builders, também já passei por diversas empresas de tecnologia ao longo desses 20 anos,
00:39entre elas como, por exemplo, Totos, Banco BV, Softech, entre outras.
00:46A agenda para a nossa aula, eu vou começar abordando sobre os conceitos e características da arquitetura SOA,
00:52apresentar o nosso estudo de caso, fazer um breve hands-on na prática e, por fim, os próximos passos.
01:03Mas o que é a arquitetura orientada a serviços?
01:07A arquitetura orientada a serviços, as funcionalidades do negócio, são organizadas com serviços de forma independente.
01:14tem, por premissa, contratos bem definidos e que podem ser reutilizados e integrados de forma flexível por diferentes aplicações.
01:27Além disso, outros conceitos que envolvem a arquitetura orientada a serviços,
01:32dentre eles a gente tem o Enterprise Service Bus,
01:34que é o barramento de integração responsável pela centralizar a comunicação,
01:39e rotear e transformar mensagens entre esses serviços,
01:44assim como fazer a orquestração dentro desses serviços,
01:48enriquecendo o retorno de mensagens, colocando ou agregando informação.
01:57Outro conceito dentro de uma arquitetura SOA,
02:01quando se trata de web services, são os web services tipo SOAP,
02:04que a gente vai tratar aqui nessa aula,
02:08são serviços web baseados em protocolo, do protocolo SOAP,
02:13que basicamente são trocas de mensagem em XML,
02:17arquivo XML estruturado,
02:20através de um contrato formal,
02:24seguindo outro padrão, que é o WSDL,
02:26eu vou descrever mais abaixo,
02:28o que garante a interoperabilidade da comunicação entre sistemas.
02:32O padrão WSDL é um documento em formato XML,
02:40é de fato um contrato,
02:42que descreve todas as operações que o web service possui,
02:47os tipos de dados que ele trata,
02:49que ele suporta,
02:52e os endpoints de um serviço SOAP.
02:55Algumas características da arquitetura SOA,
03:00eu destaco aqui,
03:02dentre várias,
03:04algumas que eu considero aqui mais importantes,
03:07como baixo acoplamento,
03:09você pode ter
03:10serviços se comunicando entre si,
03:15e só se conhece pelo contrato WSDL,
03:17não precisam,
03:20não tem nenhuma particularidade de implementação,
03:22não precisam ser feitos na mesma tecnologia,
03:24ao contrário,
03:26um serviço pode ser implementado como uma plataforma,
03:29outro serviço pode ser implementado de outra,
03:31tecnológica,
03:32desde que suporte WSD,
03:34que suporte protocolo SOAP.
03:36possibilidade de reúso desse serviço,
03:42talvez um dos principais ganhos,
03:44em que o mesmo serviço pode ser consumido
03:46por múltiplos sistemas distintos,
03:49e até mesmo por outros serviços,
03:52e interoperabilidade,
03:55que é a comunicação heterogênea entre sistemas,
04:00através de padrões de mercado já bem estabelecidos e abertos,
04:03como o próprio SOAP,
04:05o padrão HTTP,
04:07XML,
04:08entre outros.
04:11Sobre o nosso estudo de caso,
04:13eu vou apresentar aqui para vocês o cenário da vinícola
04:16Rock New Ventures Wine,
04:19que é uma vinícola moderna,
04:20que entende como tecnologia é parte do seu negócio.
04:26Nos últimos anos,
04:27a Rock New Ventures tem investido forte em tecnologia,
04:31e investiu bastante em uma arquitetura orientada
04:33a serviços,
04:34muito no propósito de suportar o crescimento do seu negócio,
04:38permitindo o reuso de serviços de componentes de software,
04:42e a melhor interoperabilidade entre os diversos sistemas da empresa.
04:47Hoje, a arquitetura da vinícola Rock New Ventures
04:50está organizada da seguinte forma.
04:53De um lado,
04:53a gente tem os serviços que ela expõe,
04:56separados por domínio de negócios,
04:58como pedidos,
05:00estoque,
05:01produção,
05:02financeira e logística,
05:04e de outros sistemas que consomem esses serviços,
05:07como canais digitais,
05:09canais de venda,
05:10o próprio e-commerce,
05:11sistemas de parceiros,
05:14sistemas de gestão,
05:17como o próprio ERP,
05:20sistemas de CRM,
05:21e sistemas de gestão de warehouse,
05:23o WMS.
05:24Todos eles passando por um barramento
05:27com o Enterprise Service Bus
05:28construído pela própria empresa.
05:33E agora a gente vai seguir para o hands-on.
05:36Nesse hands-on,
05:38a gente vai utilizar
05:39dois serviços WebSoup
05:42para acessar serviços expostos pela empresa
05:47utilizando o padrão de contrato WSDL.
05:51Para esse exemplo,
05:52a gente vai utilizar
05:53o serviço de estoque
05:54e o serviço de pedidos.
06:03E alguns pré-requisitos.
06:05Primeiro,
06:05é necessário uma conta no GitHub.
06:07Acho que hoje em dia,
06:08todo mundo que trabalha com TI
06:09tem uma conta no GitHub.
06:13Se não tem,
06:14é importante criar.
06:16E ter uma conta do Google,
06:17uma conta de Gmail,
06:18ou o que seja,
06:19porque vamos usar ferramentas
06:22que utilizam dessas contas
06:23para se autenticar
06:25e fazer ali a login,
06:28a autenticação e a autorização.
06:31Dessas ferramentas,
06:32a gente vai utilizar
06:33o próprio GitHub,
06:35o Killer Koda
06:36para execução de serviços
06:38e o Postman e o Google Lab
06:41para fazer acesso
06:43aos serviços de pedido
06:45e aos serviços de estoque.
06:46Eu vou trazer o browser para cá.
06:59Eu criei um repositório
07:01com o projeto
07:03onde tenho meus laboratórios.
07:06E para esse teste,
07:10para esse hands-on específico,
07:12a gente vai utilizar
07:13o vinícola
07:14Soa Mini Hands-On.
07:23Vou acessar aqui também
07:25o Killer Koda.com.
07:27O Killer Koda permite
07:28que a gente inicialize
07:31uma máquina virtual Ubuntu
07:33por um período de uma hora.
07:36Tempo suficiente
07:37para fazer esse hands-on.
07:43Vou fazer o login.
07:44Para fazer esse login,
07:46vou utilizar a minha conta
07:47do GitHub mesmo.
07:48virar em Playground.com.
08:12Veio em Playground.com.
08:17na virtual Ubuntu e me disponibiliza 60 minutos de uso dessa máquina. Então, o que que precisa
08:30ver de qualquer coisa? Para utilizar, para poder fazer o download, o código do repositório git eu
08:39preciso ter o git instalado. Então, por padrão essas máquinas já vem com o git instalado, mas
08:46custa conferir. Então, confirmado que o git está instalado. Eu vou copiar a URL do repositório e
08:59utilizar o comando git clone para baixar esse repositório. Porém, antes, é importante sair do
09:11usuário root, que é o usuário padrão e utilizar o usuário Ubuntu, que é o usuário padrão do Ubuntu.
09:24Navego para a pasta home, e aí sim, git clone.
09:31Olha lá, o diretório public training labs.
09:46E aqui, a gente tem três componentes. O stock service, o pedido service e o vinícola SB, que é o SB responsável
10:08para fazer a infração e a organização da comunicação entre sistemas e serviços.
10:21Começa pelo stock service.
10:24E para executar o stock service, primeiro a gente tem que baixar as dependências e fazer o build utilizando o maven, porém o maven, a gente precisa confirmar se o maven está instalado.
10:43A gente consegue ver isso utilizando o comando nvn-v. O maven não está instalado, não foi encontrado, mas o próprio Ubuntu já dá aqui o comando que precisa ser utilizado.
10:57Vamos instalar o maven, confirma.
11:27Instalação concluída, mvn-v para verificar novamente, e está lá o Apache Maven instalado.
11:44Para executar a aplicação, também o comando maven, essas aplicações foram feitas usando Spring Boot, com Java, então para executar o comando Spring Boot com o maven, é só utilizar o comando mvn-spring-boot dos pontos de run.
12:14Ele vai baixar todas as dependências, fazer o build da aplicação e já iniciar a execução.
12:44A aplicação executada com sucesso, rodando na porta 8080.
13:05Para testar essa aplicação que está de fato rodando, a gente vem no menu do lado do temporizador,
13:14Traffic Ports e no botão que direciona para a porta 80.
13:28Essa mensagem significa que ele não encontrou nada, mas que o serviço está no ar, então está rodando como deveria.
13:38E para chegar, a gente vai precisar, para confirmar que está rodando de fato, a gente vai baixar, vai executar aqui o link para o contrato WSDL dessa aplicação.
13:51Usando aqui o caminho, barra WSDL de webservice, barra StockService,
14:02ponto WSDL.
14:07Olha lá, esse o contrato WSDL do serviço StockService.
14:13A mesma coisa eu vou fazer agora para o serviço de pedidos.
14:23Muda para o usuário Ubuntu.
14:28Navega para a pasta de usuário Ubuntu.
14:35S-NA.
14:37CD.
14:38Public Training Labs.
14:40Minicula Soa Mini Hands-On.
14:44Pedido Service.
14:47O meio já está instalado.
14:53Springer.
14:54Boot.
14:56Run.
14:57Repara que dessa vez ele não baixou as dependências, porque as dependências são exatamente as
15:17mesmas para ambos os componentes.
15:19A gente já fez isso da primeira vez que a gente executou para o StockService.
15:24A aplicação rodando, só que dessa vez na porta 8081.
15:30A gente faz o mesmo procedimento.
15:34Vem no menu ao lado do temporizador.
15:37Traffic Ports.
15:39Porém, como a porta é diferente da 8080, a gente utiliza Custom Ports para informar qual
15:50o que a gente quer.
15:51No caso 8031.
15:52Mesma coisa.
15:53.
15:55.
16:04.
16:05.
16:06.
16:07.
16:08.
16:09.
16:10.
16:11.
16:12.
16:13.
16:14.
16:15.
16:16.
16:17.
16:32.
16:37.
16:38.
16:39.
16:40.
16:42meu usuário do github, então vou utilizar aqui, então só preciso clicar em signup que já tem
16:49conta, se você não tem a conta basta utilizar signup for free e pode utilizar tanto o
16:58a conta do github quanto do próprio google
17:01O que a gente vai fazer aqui agora? A gente vai importar os contratos WSDL para poder fazer
17:20requisição a esse serviço. Começando primeiro pelo serviço de estoque, então a gente seleciona
17:31copia e cola o contrato WSDL, aqui no post vem workspace, my workspace, import e cola o WSDL e ele já reconhece
17:51pode ver aqui, estoque port service, a mesma coisa a gente faz para o pedido
18:03automaticamente ele já importou ambos os serviços com todas as operações que hoje os serviços disponibilizam
18:23para o estoque service agora a gente vai executar o obter estoque produto e depois para o pedido
18:31listar pedidos, porém tem que fazer um passo aqui anterior em ambos
18:38ele se baseia nos parâmetros que estão no WSDL e nem todos eles estão 100% corretos
18:50então ele cria aqui uma variável com a url do url base do serviço porém ele coloca a porta 443 no final
19:02se a gente executar dessa forma vai dar erro, então a gente apaga e salva
19:10a mesma coisa para o pedido service
19:14isso aqui é padrão
19:16por que que ele se baseia nisso? porque isso está no WSDL, se a gente vê aqui
19:21WSDL monta isso automaticamente, a gente não tem esse controle
19:26mas lembra que a gente estava apontando para a porta 8081 aqui, 8080 no outro
19:30então essa porta 443 ela não faz sentido
19:34e um outro detalhe também, uma correção
19:42ele já deixa pré montado o corpo da requisição
19:49porém com um pequeno erro que ele não define o namespace correto
19:58ele utiliza o nome namespace para poder referenciar os atributos do objeto de payload
20:05mas ele não define o namespace, então se utilizar dessa forma vai dar erro
20:11a gente corrige também isso
20:13e já salva
20:17e a mesma coisa no listar pedidos que é o passo que a gente vai utilizar
20:21dois pontos TNS para equalizar
20:28opa
20:30perdão
20:32dois pontos TNS
20:37que aí fica
20:40definido aqui associando o namespace correto
20:45feito isso é só executar
20:48aqui
20:51o parâmetro é diferente
20:53tá lá
20:58executou com sucesso
21:00vou pedir
21:02o estoque de um produto
21:04e ele trouxe o código
21:05o SKU
21:06e a quantidade
21:07e no listar pedido
21:13vou pedir o código de pedido
21:18e ele vai me trazer toda a informação daquele pedido
21:24assim a gente termina essa primeira etapa de consumo através do post
21:34agora a gente vai fazer a mesma coisa
21:38porém utilizando o Google Colab
21:41o Google Colab é uma ferramenta que permite a gente utilizar Python
21:44principalmente para análise de dados
21:47é muito comum
21:48para esse propósito
21:50mas ele permite fazer também acesso a APIs, acesso a web services
21:54e uma série de coisas para quem quer brincar um pouquinho com Python
21:59sem ter que ter o Python instalado localmente
22:05esse aqui obrigatoriamente precisa de uma conta Google para fazer
22:09o login
22:11e eu já deixei uma conta separada para fazer isso
22:15e para mostrar esse consumo
22:33eu também criei um notebook
22:35que já faz, já tem a estrutura pronta
22:39a gente só vai substituir as informações ali de URL e de corpo de requisição
22:44então eu vou fazer o upload
22:46de um notebook que eu já criei
22:48brevemente
22:49o notebook é esse Rocknew Ventures notebook
23:00e aqui tá, o que que a gente vai fazer aqui?
23:14substituir o valor
23:16com o valor da URL do serviço de estoque
23:19o payload
23:23esse payload a gente vai copiar do próprio post
23:27e aqui a mesma coisa só que para o serviço de pedido
23:32a URL a gente copia
23:35aqui da
23:41do próprio
23:43exibição do WSDL
23:55e o payload
23:57de obter estoque
23:59a gente puxa
24:01e agora a mesma coisa com
24:17repara que eu só estou pegando a URL base
24:23sem o barra WSDL
24:29porque não é necessário
24:30ele já tem aqui
24:31barra WSDL
24:35importante ficar atento com isso também
24:37se por acaso fazer a cópia sem querer da barra no final
24:41para não terem duas barras
24:43duas barras
24:45aqui
24:46e aqui
24:47finalmente
24:49vou listar pedido
24:55copiei o POS do postman
24:57e colo
24:59aqui
25:01salvo
25:03o que que esse notebook faz?
25:07é só para explicar
25:09primeiro ele faz os importes necessários
25:13das bibliotecas que são utilizadas
25:15aqui para fazer requisição e formatar o resultado
25:19e os outros dois
25:21as duas células seguintes fazem exatamente a mesma coisa
25:24faz uma requisição padrão HTTP
25:27que bate lá no web service
25:29e volta com o resultado
25:31então
25:33a gente tem duas opções
25:35executar um a um
25:37vou executar tudo de uma vez
25:39eu vou executar
25:41célula por célula
25:43aqui está subindo uma VM
25:45com Python instalado
25:49uma configuração muito boa de espaçagem
25:57opa
25:59funcionou
26:01trouxe o resultado
26:03exatamente igual está aqui
26:05vou obter
26:07vou obter
26:09estoque
26:11e a mesma coisa
26:13para cá
26:15e o resultado é o mesmo
26:17certo?
26:18então esse foi o
26:20pequeno hands-on
26:21que eu preparei para mostrar aqui
26:23essa aula
26:24bem rápida
26:25tá?
26:26o próximo passo
26:28é implementar a orquestração desses serviços
26:31e expor através do USB
26:33do USB
26:35mas isso fica para uma próxima aula
26:37tá?
26:39obrigado e até a próxima
26:41tchau
26:43tchau
26:45tchau
26:47tchau
26:49tchau
26:51tchau