Bom pessoal, vamos falar agora de um cara extremamente importante Para a gente trabalhar com aplicações escaláveis Então a gente está falando bastante aqui sobre várias das aplicações aqui da AWS Falou de vários componentes, de substâncias e assim por diante Mas para a gente ter uma aplicação escalável A gente precisa trabalhar com o Elastic Load Balancer Que é o carinha que a gente vai falar um pouco agora E ele, na minha opinião, é um dos caras que podem te derrubar ou resolver a sua vida. Pensar na melhor forma de utilizar o LB e as estratégias de LB que a gente tem, é o que vai fazer a sua aplicação dar muito certo ou dar muito errado. Como é que a gente vai falar sobre o que é LB? Eu tenho um jeito de explicar LB que eu acho que é o jeito mais bobo e mais simples possível pra ficar na nossa cabeça e depois a gente vai aprofundando sobre isso. Lembra quando eu falei pra vocês sobre a história dos ônibus? Então, poxa, eu preciso fazer a escala da minha aplicação. Eu preciso levar várias pessoas pra praia. Foi a brincadeira do ônibus que eu fiz. Então eu tenho lá um ônibus que consegue levar 40 pessoas e dentro desse ônibus eu coloco as 40 pessoas e levo para a praia. Bacana, top demais. Funcionou. Agora eu vou lá e tenho 200 pessoas para levar, não vai acabar em um ônibus, eu vou precisar de mais ônibus. Tenho 300, 500, assim por diante. Preciso de 10 ônibus para levar essas pessoas. Ou eu vou fazer uma escala subindo andares dos ônibus, mas os ônibus normalmente vão até dois andares, pelo menos eu nunca vi um de três andares, pode até ter, mas eu nunca vi, e um ônibus de três andares ficaria mais difícil de levar ele pela estrada, mas a gente tem a possibilidade de ter vários ônibus para levar as pessoas, então eu posso fazer a escala vertical e a escala horizontal, na escala vertical eu vou colocar lá a minha ideia de colocar mais margem e assim por diante. E tudo bem, funcionou. E na escala horizontal, eu fui lá e coloquei vários ônibus. Então, vamos pensar na escala horizontal. Vou lá, eu tinha um ônibus para levar 500 pessoas. E obviamente não vai dar. Fui lá e chamei 10 ônibus para me ajudarem. Estou com 10 ônibus para levar 500 pessoas. E por um acaso, os 500 entraram no primeiro ônibus. E agora? Adiantou alguma coisa eu ter 10 ônibus? Não, porque eu estou com 500 caras dentro do primeiro ônibus. Ele ficou entubado de gente, possivelmente ele não vai sair do lugar, vai ter gente em cima, 500 pessoas dentro de um ônibus, pelo amor de Deus, né? Haja gente. E aqui a gente vai ter um grande problema. Eu tenho 10 ônibus e eu só usei o primeiro, os outros 9 ficaram parados sem ninguém. Parece uma bobeira, mas isso acontece. Se você não tiver uma estratégia de balanceamento de carga, você vai fazer isso. Então pensa que o LB, esse Elastic Load Balancer, é basicamente uma pessoa que está ali organizando a carga. Olha, vem 10 para esse, 10 para aquele, 10 para aquele, 10 para aquele outro. Filar, fila B, fila C, ou assim por diante. Tem vários jeitos de arrumar isso, você pode pensar em várias estratégias. E o LB, se você pensar de forma estratégica, você vai ter um monte de ideias para a gestão do tráfego. O que você vai fazer é dividir a carga de trabalho que está chegando, para você aumentar a escalabilidade e você aumentar a disponibilidade das suas aplicações você não trabalhar com o lb vai dar tudo errado beleza vamos ali mostrar que num desenho como é que isso funcionaria então imagina que a gente tem aqui ó 123456 seis pessoas tentando acessar um website e aqui atrás você tem as suas instâncias onde eles estão tentando acessar essas seis pessoas estão utilizando essas instâncias se a gente olhar desse jeito seria como se fosse seis pessoas e não tivesse o lb essas seis pessoas acessando uma por exemplo em vez de você distribuir a carga e tudo na primeira tem três aqui mas é tudo na primeira quando você coloca o lb você vê que essa distribuição fica como aqui embaixo depois da distribuição dele deu que está fazendo basicamente pegando dois colocando em uma delas dois colocando na outra e dois colocando na outra ou seja pra eles estão tudo acessando a mesma mas por trás está fazendo é distribuindo colocando dois em cada uma e fazer uma distribuição da sua carga de trabalho sem gastar todas elas por mais cabe 6 na primeira cabe só que vai por exemplo aumentar muito a o poder de processamento dela vai gastar muito nele assim por diante quando você pode segregar esse dividir em várias o lb vai te ajudar nesse tipo de estratégia beleza então basicamente o lb isso é o jeito mais fácil de explicar eles vão começar a aprofundar nesse carinha? Então aqui o LB tem três tipos de estratégias. A gente vai falar de cada uma delas. A primeira é a Application Load Balancer, o ALB. A segunda é Network Load Balancer, NLB. E a última é a Classic Load Balancer, CLB. A gente vai começar falando da ALB e a gente vai aprofundando para vocês entenderem qual é a mudança de uma estratégia para a outra. Quando a gente está falando da ALB, ela trabalha na camada 7 do modelo OSI. A ALB vai trabalhar na camada de aplicação, que vai permitir que ele faça a gestão, ou seja, ele inspecione e tome a decisão das mensagens HTTP na base de URL e assim por diante. Então, você consegue olhar, por exemplo, se o método é GET, se é um POST, PULL, DELETE e assim por diante. No ALB, você vai poder tomar decisões mais sofisticadas, tá? De decisão para onde vai cada carga. Então, pensa que aqui é como se fosse na ideia do ônibus, você conseguir decidir ali, ó, no nível do CPF da pessoa, quem vai para cada lugar, tá bom? Então você vai ter muito mais habilidade de decidir com base em especificidades a tomada de decisão de quem vai para onde. Você consegue falar, olha, o Zezinho vai para o ônibus 1, o Luizinho para o ônibus 2, o do outro para o ônibus 3 e assim por diante. Então você consegue dividir essa carga no detalhe. Pensa desse jeito, é a melhor forma diferente do NLB, que depois a gente vai falar que ele está na camada 4, mas na TAM que é a camada 7 do OSI a gente falou no começo desse treinamento sobre o OSI a gente comentou ali e eu vou voltar para quem não lembra para quem não lembra, o OSI ele é essa bagacinha aqui, lembrou agora que você viu o desenho? São as camadas de decisão aqui que a gente está falando quando a gente está falando do ALB, ele vai estar na camada 7, na application, ou seja, é diferente de você estar no cabo, não está decidindo ali no físico, não está decidindo no data link, no network ou no transporte, você está decidindo na camada 7, na de aplicação, onde você vai estar falando sobre cada uma entrada do que você está fazendo ali. Então, você vai saber o nível detalhado para a tomada de decisão. Fechou? E aqui no LB, você tem algumas coisas que a gente pode conversar aqui. Primeiro, é o balanceamento de cargo baseado em conteúdo. Ou seja, você pode distribuir o tráfego com base no conteúdo de requisição, ou seja, o que está vindo lá que eu acabei de comentar para vocês, permitindo você rotear para diferentes serviços de back-end, conforme é o real que está vindo, cabeçalho, cookie, assim por diante. Então, você consegue decidir com base no detalhe da aplicação para onde você quer levar essa carga. Você vai ter suporte para o WebSocket e HTTP2 oferece suporte nativo para ambos os protocolos, que são importantes para as aplicações mais modernas e que elas vão precisar de comunicação bidirecional. Isso muda bastante também, porque quando a gente está falando de comunicação bidirecional em tempo real, você precisa de uma alta eficiência para fazer essa carga. Ela tem uma integração com serviços de containers, então a gente vai falar mais de container na sequência ou a mina vai falar com vocês de container também de EKS e de ECS é mas aqui basicamente ele ajuda muito na gestão de serviços onde está baseado em containers como ECS ou EKS assim por diante beleza porqueleza? Porque você pode distribuir a carga para os containers, o que vai te ajudar bastante. Quando a gente está falando de ALB, o que a gente tem que fazer no dia a dia? A gente tem que definir os listeners, que é basicamente os caras que vão estar ali aguardando as conexões de entrada de uma porta. Por exemplo, vou definir ali a porta 80 para HTTP e 443 para HTTPS. Eles vão verificar ali qual conteúdo de requisição que está vindo e decidir como rotear o tráfego. Depois que você receber os listeners, você tem que criar os target groups. A gente já vai falar mais disso. São os grupos de destino. Recebi, para onde eu levo isso? Quais são as instâncias, containers que vão processar essas requisições? Cada grupo pode ser configurado. E aqui é importante a gente lembrar de uma coisa. Quando a gente está falando do ALB, ele precisa ser configurado com health check específico. Ou seja, ele não vai distribuir carga para uma instância que está derrubada, que está dando pau no health check. Ou seja, o health check está falando que ela está zoada. E você não vai jogar para lá. Só ela está zoada e você não vai jogar para lá, só vai jogar para a instância que está com recurso saudável, para você não jogar tráfego no lixo, certo? Se jogar no lugar errado, você não vai ter nada lá para processar. Então, aqui, criar o target groups, ele vai fazer com que você consiga levar essa carga para o lugar correto. Você tem que configurar as regras de roteamento, ou seja, são as regras que você vai usar para a tomada de decisão de para onde você vai rotear diferentes target groups de acordo com o que você está recebendo de URL, cabeçalho, assim por diante. Ou seja, é a estratégia de tomar decisão, os básicos ifs de para onde vai o que. Falando de forma muito simplista, mas é basicamente essa ideia, beleza? Aqui está um desenho do OLB para a gente entender mais ou menos como funciona então só para a gente recapitular o que a gente acabou de falar eu tenho aqui as minhas requisições vindo que pode estar vindo da internet e assim por diante elas estão vindo para o meu ALB aqui, beleza? dentro do meu ALB eu vou poder aqui a gente já colocou algumas coisas que a gente ainda não entrou que são as partes mais baix é baixo nível mais um detalhe de de segurança tá a gente vai entrar nela mais pra frente então vamos mostrar isso aqui por enquanto então o lb vai bater nas partes de segurança entenda como definir segurança assim por diante e daí depois ele vai ter a sua configuração aqui de target que pra onde ele está indo ou seja que ele precisa acionado ali pra frente como ele vai distribuir isso fechou é basicamente essa idéia do alb vamos falar do próximo bom vamos falar agora do nlb tal nlb ele é o network load balancer ele vai ter a mesma estratégia ou seja é para balancear é também a carga, só que de uma forma diferente. Enquanto a gente estava falando do Application Load Balancer, a gente viu que ele era bem no nível de detalhe. O NLB pensa que ele não consegue ir tanto no nível de detalhe assim. Então, o que ele vai fazer não é se orientar, por exemplo, vamos fazer de novo ali o nosso paralelo com os ônibus ele não vai ser o cara que vai olhar o CPF de cada um possivelmente ele pode olhar por exemplo, por hora de chegada pô, quem chegou até as duas vai para tal lugar, as duas e dez para tal lugar as duas e vinte para tal lugar eu coloquei aqui, hora, mas pode ser por exemplo também idade, ou e assim diante. Ele não vai tanto no detalhe, ele vai mais numa ideia mais alto nível aqui. Então, ele vai chegar primeiro numa visão de rede, tá? Então, aqui, como ele está na camada 4, ele não está na camada 7, tá? Ele está trabalhando na camada 4 do OSI. Ele vai ser otimizado para falar de tráfego TCP, UDP e assim por diante. Então, ele vai estar neste nível, ele vai conseguir tomar a decisão nesse nível de abstração. Só qual que é a diferença? Baixa latência. Ele é super rápido para fazer esse tipo de decisão e fazer isso acontecer no dia a dia. E a gente vai dar alguns exemplos de para quando isso faz muito sentido. Na verdade tem várias estratégias que podem fazer bastante sentido para você usar o NLB, inclusive algumas você pode usar ele em conjunto com outras estratégias de Load Balancer, tá bom? Então, voltando lá, aqui o NLB, perdão, ficou escrito A, mas é o NLB, então a gente está falando do NLB e ele está aqui na camada 4 de transporte, ou seja, olha só a diferença, quando a gente falou do ALB, ele está aqui na Application e aqui ele tem muito mais estratégias detalhadas para tomada de decisão de balanceamento. Então a gente saiu da Application, saiu da Presentation, da Session e foi para Transporte. Ou seja, a gente está aqui já numa camada onde a gente fala de TCP, UDP e assim por diante. Por aqui, a nossa decisão é nesse nível de comunicação, tá bom? A nossa decisão é nesse nível de comunicação, tá bom? Já é uma decisão mais rápida e que a gente vai ter menos estratégias para rodar aqui, fechou? Bom, como a gente está na camada 4, ele vai estar trabalhando ali no TCP, o DP, assim por diante. Ou seja, ele vai tomar decisão em cima de IP e número de porta. Então, ele vai estar em uma decisão um pouco menos detalhada. Alta performance, como eu falei, ele é super rápido. Então, ele foi projetado para lidar com muitas requisições por segundo e com uma baixa latência. Com isso, ele é ideal para quem precisa de resposta em tempo real. Outra coisa que ele vai fazer é preservar o endereço do ip do cliente quando a gente precisa de um endereço de ip original ali fechado para a aplicação que ela precisa ter a visibilidade do ip que ela está tendo por exemplo para uma um fim de segurança ou para algum tipo de personalização específica é melhor você usar o nlb porque ele vai permitir que você faça esse tipo de configuração ali, beleza? Bom, pra criar o NLB, você precisa seguir os mesmos passos do NLB, basicamente o que muda é só o nível. Então o NLB você vai lá no console da AWS, cria ele, ok? Vai especificar qual a subrede que ele deve operar, depois você vai decidir também quais são os listeners, quem vai estar escutando as portas ali, tanto de TCP, UDP, TLS, assim por diante, depois você vai decidir os target groups, ou seja, para quais destinos que eles vão, CC2, container, pô, a mesma coisa do que a gente falou do ALB, e depois os health checks também, para ele não jogar nada para uma aplicação que está fora. Agora vamos pensar, quando que faz sentido usar isso? Imagina numa aplicação de jogo pô, o jogo ele tem que estar trafegando informação em tempo real o tempo todo e com isso ele não pode ter nenhum tipo de latência, tem que ser super rápido e pra esse tipo de coisa, esse tipo de estratégia a latência acaba com o jogo então a gente precisa usar algum tipo de estratégia de NLB que faz mais sentido ou Ou então para algum tipo de aplicação bancária, quando a gente não pode falhar um segundo ali, que a gente pode acabar atrapalhando o processamento. Para fechar os NLB da vida, os load balancers que a gente tem, vamos para o Classic Load Balancer. O Classic Load Balancer é basicamente o melhor de ambos. Ou aquele cara que consegue jogar nos dois lados. Ele consegue te ajudar aqui em alguns casos para ambas as especificidades. Por quê? Porque ele é muito bom na camada 4 do SI, beleza? Então ele vai ter ali uma capacidade de balanceamento muito grande na camada de Network, e ele tem algumas coisas ali na camada 7 do SI, então ele consegue fazer algum balanceamento na hora que a gente está falando ali nas partes de HTTP. Então, ele consegue fazer um balanceamento mais ou menos na parte da camada 7 e um balanceamento muito bom na parte da camada 4. Então, com isso, você consegue ter, sei lá, o melhor dos mundos caso você queira usar um cara que consegue mexer em ambas as camadas. Ele é um load balancer que ele tem um pouquinho de cada estratégia, fechou? Então vamos lá, quando a gente está falando da camada 7, de novo, a gente está falando da application, quando a gente está falando da camada 4, da camada de transporte. Então aqui você consegue fazer algumas algumas decisões na camada 7, normalmente as mais estratégicas elas estão funcionando dentro do CLB e aqui na camada 4 você consegue fazer basicamente as mesmas decisões do ENLB ali então você consegue ter um cara bem robusto para lidar ali no dia a dia, fechou? Balançamento na camada 4 ele pode fazer o balançamento de carga ali no TCP e SSL e ele consegue operar diretamente ali nas conexões de rede onde apenas em DDP são considerados patamares de decisão. Ou seja, a mesma coisa que a gente falou do NLB e ali ele consegue fazer essas decisões de roteamento com base em networking. E quando a gente está falando das camadas 7, ele tem algumas regras simples. Então, na camada 7 ali, ele consegue rotear o tráfego de HTTP e HTTPS. Então, basicamente o caminho de URL ali, ele vai conseguir fazer, mas as regras são mais limitadas, ele não vai conseguir ser tão no detalhe ali quanto o ALB. Então, se você precisar ser muito detalhista na decisão, você precisa ir para o ALB, se não, você vai para o CLB, que ele consegue fazer ali um meio termo do que você vai precisar para fazer o seu trabalho acontecer. E com o CLB, a gente vai encerrando o que a gente está falando de load balancers, que é muito importante você saber e é extremamente útil no seu dia a dia. Saiba que você vai usar muito isso e o Amina vai falar várias vezes sobre todos esses load balancers com vocês e no dia a dia vocês vão usar demais, tá bom? Uma outra coisa, beleza, e para usar o CLB, a mesma coisa dos outros que a gente falou. Você vai ter que provisioná-lo, você vai ter que decidir como é que vai ser a utilização dele, você vai ter que decidir ali quais são as camadas de decisão de health check. A mesma coisa dos outros, então não vou ficar chovendo no molhado, falando 10 vezes a mesma coisa. É a mesma coisa que a gente falou, tanto para a LB, quanto para a NLB, beleza? Até a próxima.