< Return to Video

MW CAP07 2025 VA03 INTEGRACAO DE SERVICOS

  • 0:08 - 0:13
    A construção de uma aplicação
    em microserviços que faz uso de API
  • 0:13 - 0:15
    passa por diversos pontos,
  • 0:15 - 0:18
    que terminam deixando a gente
    um pouco desnorteado
  • 0:18 - 0:20
    de por onde começar.
  • 0:20 - 0:22
    Mas a verdade é que existem
    alguns padrões
  • 0:22 - 0:26
    que são sempre repetitivos
    e que terminam gerando ali
  • 0:26 - 0:30
    uma arquitetura de referência
    para a gente poder trabalhar.
  • 0:30 - 0:34
    Essa arquitetura de referência
    vai justamente trazer a gente
  • 0:34 - 0:36
    para entender
    como é que um microsserviço
  • 0:36 - 0:37
    começa com outro,
  • 0:37 - 0:41
    como o que eles falam
    com serviços externos
  • 0:41 - 0:45
    e como é que a gente provê ali
    segurança, escalabilidade
  • 0:45 - 0:48
    e debate e vários outros pontos
    dentro do nosso ambiente.
  • 0:48 - 0:52
    Quando eu falo aqui, por exemplo,
    dessa arquitetura,
  • 0:52 - 0:55
    vocês vão ver que a gente começa
    logo aqui em cima
  • 0:55 - 0:58
    tratando dos nossos usuários.
  • 0:58 - 1:01
    E quando a gente fala de microsserviço,
  • 1:01 - 1:04
    esse usuário não necessariamente
    é uma pessoa.
  • 1:04 - 1:07
    Aqui eu posso tratar
    essa minha arquitetura
  • 1:07 - 1:12
    como sendo microsserviços
    que vão atender outros serviços.
  • 1:12 - 1:16
    Imagine, por exemplo,
    um site de vendas.
  • 1:16 - 1:21
    A minha estrutura de back-end
    para ler e entender os arquivos
  • 1:21 - 1:24
    é quem vai consumir ali
    o carrinho de compras.
  • 1:24 - 1:28
    Então, um serviço chama o outro.
  • 1:28 - 1:33
    Esse caso a gente vai ter tratar também
    dentro da nossa arquitetura.
  • 1:33 - 1:35
    Outro cenário pode ser,
    por exemplo,
  • 1:35 - 1:38
    quando uma outra empresa externa
    também vai querer consultar
  • 1:38 - 1:40
    o nosso ambiente.
  • 1:40 - 1:42
    E aí a gente vai ter que tratar
    alguns pontos.
  • 1:42 - 1:44
    E o primeiro deles é a segurança.
  • 1:44 - 1:47
    Vejam que quando a gente
    começa esse acesso,
  • 1:47 - 1:51
    a primeira coisa que a gente vai ter
    é o nosso firewall.
  • 1:51 - 1:56
    Aqui a gente vai estar falando de isolar
    esses nossos microsserviços do mundo
  • 1:56 - 1:59
    para que a gente caia em uma DMZ,
  • 1:59 - 2:01
    zona desmilitarizada.
  • 2:01 - 2:06
    Isso quer essencialmente dizer
    que tudo ali para dentro é seguro
  • 2:06 - 2:10
    e que os meus microsserviços
    não precisam mais se preocupar.
  • 2:10 - 2:12
    Isso vai ser muito importante,
  • 2:12 - 2:16
    porque quando eu falo
    para o lado de fora,
  • 2:16 - 2:20
    a minha API estará sempre
    com o SSL ativo.
  • 2:20 - 2:25
    Basicamente, o SSL utilizará
    certificados para encriptar meus dados
  • 2:25 - 2:29
    e, dessa forma,
    eu vou estar seguro.
  • 2:29 - 2:33
    Só que a gente precisa entender
    que eu tenho dois tipos de APIs.
  • 2:33 - 2:38
    Uma API que tem encriptação
    na internet, ou seja,
  • 2:38 - 2:42
    ela só encripta quando eu falo
    do transporte em rede pública
  • 2:42 - 2:45
    e a encriptação fim a fim.
  • 2:45 - 2:48
    O que quer dizer que mesmo dentro
    da DMZ,
  • 2:48 - 2:51
    o meu dado também vai estar encriptado.
  • 2:51 - 2:55
    E aí vai do desenvolvedor entender
    qual é a melhor solução para ele.
  • 2:55 - 3:00
    Notem que além dessa estrutura,
    essa minha API
  • 3:00 - 3:03
    que a gente está representando
    como API Gateway,
  • 3:03 - 3:07
    ela ainda vai ter que tratar
    toda a parte de autenticação,
  • 3:07 - 3:11
    identificação de usuário
    e registro dos serviços.
  • 3:11 - 3:14
    E isso vai ser feito de uma forma
    muito simples,
  • 3:14 - 3:18
    utilizando basicamente frameworks
    de mercado,
  • 3:19 - 3:22
    como é o caso do OFF,
  • 3:22 - 3:23
    que vai trazer para mim
    toda a parte de gestão de autenticação.
  • 3:23 - 3:25
    Como que eu vou criar um usuário?
  • 3:25 - 3:27
    Qual token eu vou usar?
  • 3:27 - 3:30
    E mesmo esse TOC
    ele também vai ser padronizado
  • 3:31 - 3:34
    utilizando por exemplo o JWT,
  • 3:34 - 3:37
    que é o nosso Java Token para os íntimos.
  • 3:37 - 3:40
    E aí a gente
    consegue utilizar esses padrões de mercado
  • 3:40 - 3:45
    para aumentar a compatibilidade
    da nossa API com outros serviços externos.
  • 3:45 - 3:49
    E aqui, finalmente, com tudo isso aprovado
  • 3:49 - 3:52
    é que eu entro nos meus microsserviços.
  • 3:52 - 3:56
    Aqui a gente vai ter
    um ponto muito importante da gente tratar
  • 3:56 - 3:59
    a entrada e o recebimento desses dados.
  • 3:59 - 4:02
    Podem ser por uma API que eu desenvolvi
  • 4:02 - 4:05
    ou podem ser por serviços externos.
  • 4:06 - 4:09
    Esse gateway,
    ele pode simplesmente ser algo que eu
  • 4:09 - 4:12
    contratei
    e diversas empresas prestam esse serviço.
  • 4:13 - 4:16
    A principal delas é o WS com o IP Gateway.
  • 4:17 - 4:21
    Ele basicamente vai expor
    a minha API principal para o mundo
  • 4:21 - 4:25
    e uma vez que ela recebe essas chamadas
  • 4:25 - 4:29
    e que ela já fez todo o tratamento
    ali de certificado,
  • 4:29 - 4:32
    segurança, identificação,
    controle de sessão e tudo mais,
  • 4:33 - 4:36
    é que ela direciona
    para dentro dos microsserviços.
  • 4:37 - 4:40
    E aí eu não preciso ter que desenvolver
    toda essa parte,
  • 4:41 - 4:44
    Uma vez
    que a gente tem os nossos microsserviços,
  • 4:44 - 4:47
    eles vão ter os seus componentes,
    vão ter os seus bancos de dados
  • 4:47 - 4:50
    e vão precisar falar uns com os outros.
  • 4:51 - 4:54
    Essa fala também
    pode ser feita de duas formas.
  • 4:54 - 4:57
    Eu posso utilizar a primeira forma,
  • 4:58 - 5:01
    que são APIs de uso interno.
  • 5:01 - 5:06
    Uma vez que eu estou dentro da DMZ,
    eu posso não utilizar criptografia
  • 5:06 - 5:10
    nesse caso, porque eu considero que aquele
    ambiente da DMZ é seguro.
  • 5:11 - 5:12
    Só que em
  • 5:12 - 5:16
    alguns casos o meu dado é tão crítico
    que ainda assim eu vou encriptar
  • 5:16 - 5:20
    eles só pra não ter nenhum vacilo ali
    no meio do caminho.
  • 5:21 - 5:24
    Se eu uso uma API para conectar
    dois serviços,
  • 5:25 - 5:28
    basicamente eu estou transformando ali
  • 5:28 - 5:33
    uma metalinguagem aonde a própria API
    vai disponibilizar uma pré IR
  • 5:33 - 5:37
    para que o Tapi possa chamar
    ela e a gente vai entrar nesse loup
  • 5:37 - 5:40
    que vai perdurar bastante tempo.
  • 5:40 - 5:42
    Mas eu tenho outra forma de tratar isso.
  • 5:42 - 5:47
    Essa segunda forma
    é utilizando os serviços de mensageria.
  • 5:48 - 5:51
    Basicamente eu vou criar um canal
  • 5:51 - 5:55
    aonde a gente vai postar
    mensagens de um microserviço para o outro
  • 5:55 - 5:59
    e ali dentro desse canal
    eu vou ter tópicos de conversa,
  • 5:59 - 6:02
    como por exemplo
    um tópico de Observable idade.
  • 6:03 - 6:05
    É nele que eu vou publicar os meus blogs.
  • 6:05 - 6:06
    O que que está acontecendo comigo?
  • 6:06 - 6:09
    As mensagens de erro
    e assim sucessivamente.
  • 6:10 - 6:15
    Não só eu vou fazer isso,
    todos os micro-serviços vão fazer isso
  • 6:15 - 6:18
    e vão publicar os seus logs
    no tópico de logs.
  • 6:19 - 6:22
    É assim que a gente usa
    esses canais de conversa.
  • 6:22 - 6:28
    Esses canais vão estar estruturados
    aqui embaixo e vão ser uma estrutura
  • 6:28 - 6:32
    muito simples que a gente utiliza
    há algumas boas décadas
  • 6:33 - 6:37
    para permitir que vários serviços
    se falem de maneira estruturada,
  • 6:38 - 6:41
    não só entre eles, mas também
  • 6:41 - 6:44
    com outros serviços externos.
  • 6:44 - 6:47
    E aqui
    a gente vai ter um ponto muito importante
  • 6:47 - 6:51
    se eu coloco um serviço de mensageria
    ali no meio,
  • 6:52 - 6:56
    eu passo a ter uma estrutura que está
    se comunicando de forma assíncrona.
  • 6:57 - 7:02
    O assíncrono quer dizer que uma vez que eu
    publiquei aquela informação,
  • 7:02 - 7:06
    eu não estou recebendo a confirmação
    de recebimento do meu usuário.
  • 7:07 - 7:10
    Então como é que eu faço
    para saber se deu tudo certo?
  • 7:11 - 7:14
    A resposta que eu confio no processo.
  • 7:14 - 7:17
    Eu sei que o serviço de mensageria
  • 7:17 - 7:20
    só vai tirar aquela mensagem de dentro
    dele,
  • 7:21 - 7:27
    uma vez que ele recebeu
    o OK de dentro da outra aplicação
  • 7:27 - 7:30
    ou por parte do processo
    que eu esteja utilizando.
  • 7:31 - 7:33
    E isso para mim é muito importante,
  • 7:33 - 7:37
    porque eu consigo olhar para
    aquele micro serviço que enviou a mensagem
  • 7:37 - 7:42
    e que muita das vezes é mais custoso do
    que o processo de mensageria para operar.
  • 7:43 - 7:46
    E se ele não tem carga, ele pode parar
  • 7:47 - 7:50
    e isso vai me reduzir custos.
  • 7:50 - 7:52
    Ele volta a operar
    quando ele recebe novas demandas.
  • 7:52 - 7:56
    Toda nova demanda
    ele publica no serviço de mensageria.
  • 7:56 - 7:59
    E essa é uma forma simples
    da gente arquitetar.
  • 8:00 - 8:03
    Outra coisa
    muito parecida que a gente consegue fazer
  • 8:03 - 8:06
    é colocar um serviço de fila.
  • 8:06 - 8:09
    E ele tem um conceito muito parecido
    ao serviço de mensageria,
  • 8:10 - 8:14
    Só que a gente vai utilizar
    ela normalmente lá na entrada do dado.
  • 8:14 - 8:17
    Antes da gente falar do nosso gateway.
  • 8:18 - 8:21
    E isso vai servir pessoal
    justamente para a gente
  • 8:21 - 8:25
    conseguir não perder mensagem.
  • 8:26 - 8:29
    Imagina, por exemplo, que o micro serviço
    que a gente está construindo
  • 8:29 - 8:31
    é um processador de pagamento.
  • 8:32 - 8:33
    Ao invés de eu
  • 8:33 - 8:36
    mandar ele pagar na hora,
    aonde eu teria um erro
  • 8:37 - 8:40
    caso o serviço do banco
    estivesse fora do ar?
  • 8:40 - 8:45
    Eu agora publico
    a solicitação de pagamento em uma lista.
  • 8:46 - 8:50
    Essa lista vai sendo consumida
    ao longo do dia e o serviço de pagamento
  • 8:50 - 8:54
    vai devolvendo para o banco de dados
    o status atualizado.
  • 8:54 - 8:57
    Sempre que eu realizar um pagamento.
  • 8:57 - 8:59
    A grande sacada aqui
  • 8:59 - 9:03
    é que eu não falo mais isso
    diretamente para o usuário.
  • 9:04 - 9:06
    E aí o que vai terminar acontecendo
  • 9:06 - 9:09
    é que só tem uma falha
    no meio do processo.
  • 9:09 - 9:14
    Eu posso fazer um retry,
    eu tento novamente daqui a algum tempo
  • 9:15 - 9:18
    e eu evito dar dor de cabeça
    para esse usuário.
  • 9:19 - 9:21
    Esse evento é muito comum
    quando a gente faz compras.
  • 9:21 - 9:26
    Se você fez compras em um site,
    como por exemplo a Amazon,
  • 9:26 - 9:30
    o Mercado Livre, você pode ter notado
    que algumas ocasiões, ao invés de
  • 9:30 - 9:35
    a gente receber a confirmação do pagamento
    de imediato, a gente recebe um
  • 9:35 - 9:40
    Estamos processando o seu pagamento e dali
    alguns minutos o pagamento sai.
  • 9:40 - 9:44
    Isso acontece justamente porque a gente
    enviou estudado para uma fila
  • 9:45 - 9:47
    e esperou que o dado fosse finalizado,
  • 9:47 - 9:50
    que todo o processo concluísse com sucesso
  • 9:50 - 9:54
    para que eu pudesse determinar
    ali, para o usuário o que aconteceu.
  • 9:55 - 10:00
    E aqui a gente tem um ponto importante
    para o processo finalizar com sucesso.
  • 10:01 - 10:04
    Ele tem que ter uma mensagem esperada.
  • 10:04 - 10:07
    Essa mensagem pode ser uma negativa.
  • 10:07 - 10:12
    Vejam que para um carrinho de compras,
    um pagamento bem sucedido
  • 10:12 - 10:17
    ou um pagamento negado,
    ainda assim foi um pagamento processado.
  • 10:18 - 10:22
    Se ele foi processado com sucesso,
    eu vou ter uma dessas duas mensagens
  • 10:22 - 10:24
    e eu consigo retornar
    isso para o meu usuário.
  • 10:25 - 10:26
    Notem que a gente
  • 10:26 - 10:30
    precisa
    tomar conta de vários pequenos processos
  • 10:30 - 10:35
    para eu conseguir utilizar a API,
    como a integração de serviços.
  • 10:36 - 10:40
    E justamente por isso
    a gente vai ter que tratar segurança,
  • 10:40 - 10:44
    integridade, tomar uma série de decisões
    na construção da nossa solução.
  • 10:45 - 10:49
    A grande sacada é que essa solução
    vai ser muito robusta
  • 10:50 - 10:53
    e que uma vez
    que essa arquitetura foi definida,
  • 10:53 - 10:56
    eu posso mexer nela
    com muito mais liberdade,
  • 10:56 - 11:00
    colocando cada vez mais funções,
    mas ao mesmo tempo
  • 11:00 - 11:04
    sem estar preocupado
    que a construção de uma nova Fisher
  • 11:05 - 11:08
    em um determinado ponto do código
    derrube a minha aplicação inteira.
Title:
MW CAP07 2025 VA03 INTEGRACAO DE SERVICOS
Video Language:
Portuguese, Brazilian
Duration:
11:12

Portuguese, Brazilian subtitles

Incomplete

Revisions Compare revisions