< Return to Video

MW CAP07 2025 VA03 INTEGRACAO DE SERVICOS

  • 0:08 - 0:13
    A construção de uma aplicação
    em microsserviç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 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 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:17
    utilizando basicamente frameworks
    de mercado,
  • 3:17 - 3:19
    como é o caso do OAF,
  • 3:19 - 3:23
    que vai trazer para mim
    toda a parte de gestão de autenticação,
  • 3:23 - 3:25
    como eu vou criar um usuário,
  • 3:25 - 3:27
    qual token eu vou usar.
  • 3:27 - 3:31
    E mesmo esse token,
    ele também 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:43
    para aumentar a compatibilidade
    da nossa API
  • 3:43 - 3:45
    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 vamos ter um ponto
    muito importante de tratarmos.
  • 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:06
    ou podem ser por serviços externos.
  • 4:06 - 4:10
    Esse gateway pode simplesmente
    ser algo que eu contratei
  • 4:10 - 4:13
    e diversas empresas prestam
    esse serviço.
  • 4:13 - 4:17
    A principal delas é a AWS
    com o API 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:28
    e que ela já fez todo o tratamento ali
  • 4:28 - 4:33
    de certificado, segurança, identificação,
    controle de sessão e tudo mais,
  • 4:33 - 4:37
    é 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:40 - 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:51
    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 - 5:01
    Eu posso utilizar a primeira forma,
    que são APIs de uso interno.
  • 5:01 - 5:03
    Uma vez que eu estou dentro da DMZ,
  • 5:03 - 5:07
    eu posso não utilizar criptografia
    nesse caso,
  • 5:07 - 5:11
    porque eu considero que aquele
    ambiente da DMZ é seguro.
  • 5:11 - 5:13
    Só que em alguns casos,
  • 5:13 - 5:16
    o meu dado é tão crítico
    que ainda assim eu vou encriptá-los
  • 5:16 - 5:21
    só para não ter nenhum vacilo ali
    no meio do caminho.
  • 5:21 - 5:25
    Se eu uso uma API para conectar
    dois serviços,
  • 5:25 - 5:28
    basicamente eu estou
    transformando ali
  • 5:28 - 5:31
    uma metalinguagem onde
    a própria API
  • 5:31 - 5:34
    vai disponibilizar uma API
    para que outra API
  • 5:34 - 5:35
    possa chamá-la.
  • 5:35 - 5:40
    E a gente vai entrar nesse looping
    que vai perdurar bastante tempo.
  • 5:40 - 5:43
    Mas eu tenho outra forma
    de tratar isso.
  • 5:43 - 5:48
    Essa segunda forma
    é utilizando os serviços de mensageria.
  • 5:48 - 5:51
    Basicamente,
    eu vou criar um canal
  • 5:51 - 5:55
    onde a gente vai postar mensagens
    de um microsserviço para o outro
  • 5:55 - 5:59
    e ali dentro desse canal,
    eu vou ter tópicos de conversa,
  • 5:59 - 6:03
    como, por exemplo,
    um tópico de observabilidade.
  • 6:03 - 6:05
    É nele que eu vou publicar
    os meus logs,
  • 6:05 - 6:06
    o que está acontecendo comigo,
  • 6:06 - 6:10
    as mensagens de erro,
    e assim sucessivamente.
  • 6:10 - 6:12
    Não só eu vou fazer isso,
  • 6:12 - 6:17
    todos os microsserviços vão fazer isso
    e vão publicar os seus logs
  • 6:17 - 6:19
    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:30
    muito simples que a gente utiliza
  • 6:30 - 6:35
    há algumas boas décadas
    para permitir que vários serviços
  • 6:35 - 6:40
    se falem de maneira estruturada,
    não só entre eles,
  • 6:40 - 6:44
    mas também com outros
    serviços externos.
  • 6:44 - 6:47
    E aqui a gente vai ter um ponto
    muito importante.
  • 6:47 - 6:52
    Se eu coloco um serviço de mensageria
    ali no meio,
  • 6:52 - 6:57
    eu passo a ter uma estrutura que está
    se comunicando de forma assíncrona.
  • 6:57 - 6:59
    O assíncrono quer dizer
  • 6:59 - 7:02
    que uma vez que eu publiquei
    aquela informação,
  • 7:02 - 7:07
    eu não estou recebendo a confirmação
    de recebimento do meu usuário.
  • 7:07 - 7:11
    Então, como 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:21
    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:31
    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
    microsserviço que enviou a mensagem
  • 7:37 - 7:40
    e que muita das vezes é mais custoso
  • 7:40 - 7:43
    do que o processo de mensageria
    para operar.
  • 7:43 - 7:47
    E se ele não tem carga,
    ele pode parar
  • 7:47 - 7:49
    e isso vai me reduzir custos.
  • 7:49 - 7:52
    Ele volta a operar
    quando recebe novas demandas.
  • 7:52 - 7:56
    Toda nova demanda
    ele publica no serviço de mensageria.
  • 7:56 - 8:00
    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:10
    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:18
    antes da gente falar
    do nosso API Gateway.
  • 8:18 - 8:21
    E isso vai servir, pessoal,
    justamente para a gente
  • 8:21 - 8:26
    conseguir não perder mensagem.
  • 8:26 - 8:27
    Imagine, por exemplo,
  • 8:27 - 8:29
    que o microsserviço
    que a gente está construindo
  • 8:29 - 8:32
    é um processador de pagamento.
  • 8:32 - 8:35
    Ao invés de eu mandar
    ele pagar na hora,
  • 8:35 - 8:40
    aonde eu teria um erro caso
    o serviço do banco estivesse fora do ar,
  • 8:40 - 8:44
    eu agora publico
    a solicitação de pagamento
  • 8:44 - 8:46
    em uma lista.
  • 8:46 - 8:49
    Essa lista vai sendo consumida
    ao longo do dia
  • 8:49 - 8:50
    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:04
    é 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 se eu tenho uma falha
    no meio do processo,
  • 9:09 - 9:12
    eu posso fazer um "retry",
  • 9:12 - 9:15
    eu tento novamente
    daqui a algum tempo
  • 9:15 - 9:19
    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:25
    Se você fez compras em um site,
    como, por exemplo,
  • 9:25 - 9:27
    a Amazon ou o Mercado Livre,
  • 9:27 - 9:30
    você pode ter notado
    que algumas ocasiões,
  • 9:30 - 9:31
    ao invés da gente receber
  • 9:31 - 9:33
    a confirmação
    do pagamento de imediato,
  • 9:33 - 9:35
    a gente recebe um:
  • 9:35 - 9:37
    "estamos processando
    o seu pagamento".
  • 9:37 - 9:40
    E dali a alguns minutos
    o pagamento sai.
  • 9:40 - 9:44
    Isso acontece justamente
    porque a gente enviou esse dado
  • 9:44 - 9:47
    para uma fila
    e esperou que o dado fosse finalizado,
  • 9:47 - 9:50
    que todo o processo
    concluísse com sucesso,
  • 9:50 - 9:55
    para que eu pudesse determinar
    para o usuário o que aconteceu.
  • 9:55 - 9:57
    E aqui a gente tem
    um ponto importante.
  • 9:57 - 10:01
    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:10
    Vejam que para um carrinho
    de compras,
  • 10:10 - 10:14
    um pagamento bem sucedido
    ou um pagamento negado,
  • 10:14 - 10:18
    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:25
    e eu consigo retornar
    isso para o meu usuário.
  • 10:25 - 10:30
    Notem que a gente precisa tomar conta
    de vários pequenos processos
  • 10:30 - 10:36
    para eu conseguir utilizar a API
    como a integração de serviços.
  • 10:36 - 10:39
    E justamente por isso,
    a gente terá que tratar
  • 10:39 - 10:41
    segurança, integridade,
  • 10:41 - 10:44
    tomar uma série de decisões
    na construção da nossa solução.
  • 10:44 - 10:50
    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:05
    sem estar preocupado
    que a construção de uma nova feature
  • 11:05 - 11:09
    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