Olá pessoal sejam muito bem vindos ao nosso curso de Edge Computing Aproveitando as características de Edge Computing para criar aplicativos mais eficientes Neste momento aqui nós vamos falar um pouquinho mais voltado a desenvolvimento de software. A ideia aqui é conseguir fazer um link entre tudo o que a gente já falou de Edge Computing, todas as características ali, extrair um pouquinho de visões olhando ali para o modelo de aplicações né nos nossos aplicações tradicionais tá e aí a ideia aqui também abrir a mente de vocês que a gente fala bastante aqui de adcom pure no sentido de criar dispositivos é ter um dispositivo ali, mas também a gente pensar como desenvolvedor, como que a gente melhora nossas aplicações aplicando conceitos e fundamentos de Edge Computing, tudo bem? Então, pessoal, vamos começar aqui falando nos quesitos que a gente falou bastante aqui no nosso treinamento, aqui nos nossos módulos sobre Edge Computing, que é a questão do processamento e armazenamento. Então, aqui só um gancho, a gente vai entender o que eu consigo extrair do Edge Computing, falando de processamento e armazenamento e trazendo para os modelos de desenvolvimento. para os modelos aqui de desenvolvimento tá então acho que a primeira coisa que eu trago né é a gente precisa ter uma mente muito aberta na questão de qual linguagem de programação que eu vou utilizar tá é e o porquê é isso tem a ver com a de compil e tem a ver com aplicações está vou trazer aqui alguns exemplos alguns tempos atrás a gente desenvol ver com aplicações. Vou trazer aqui alguns exemplos. Alguns tempos atrás, a gente desenvolvia as aplicações chamadas Full Stack. O que significava isso? Eram aplicações onde você desenvolvia com uma única linguagem, e eu vou trazer para o Java um exemplo. Então, você desenvolvia o Java, o Backend e o Frontend. Então, era uma linguagem que era processada ali no seu servidor e ela entregava conteúdos ali em JavaScript, onde os seus frameworks, ele conseguia entregar esses front-ends. E aí qual que é o grande problema? Isso foi utilizado há muito tempo, funcionava, é algo muito funcional, enfim, tem algumas empresas que ainda utilizam essas abordagens, só que a gente começa a querer mais um processamento mais rápido na web. Então, antigamente a gente falava de processamentos em segundos, hoje a gente já começa a olhar para milissegundos ali, um processamento web. E aí a gente começa a perceber que esses formatos de linguagens, formatos de arquitetura de linguagem de programação, nessas abordagens, elas começam a nos deixar mais distante ali do nosso processamento, de um processamento mais rápido. distante ali do nosso processamento, de um processamento mais rápido. Então, quando você olha a questão de linguagem de programação aqui, que é o que eu quero trazer nesse primeiro abordagem, você precisa entender se aquela linguagem que você está escolhendo é uma linguagem que você vai ter um melhor aproveitamento. Então, não adianta nada você falar, não, eu vou desenvolver aqui tudo em C, né? E é uma linguagem complexa, sendo que isso é necessidade de uma linguagem mais simplificada, né? Então, você precisa entender quando usar uma linguagem de programação para um propósito, quando usar para outro, né? Então, até o gancho que eu comentei aqui do exemplo, né? Do FullStack usando usar para outro né então até o gancho que eu comentei aqui do exemplo né do full stack hoje em dia a gente usa JavaScript né para rodar ali você desenvolve já em JavaScript para rodar no seu browser ali no seu navegador né então você consegue extrair poderes ali de cada linguagem para cada necessidade né e usar até recursos ali que a gente pode pensar para trazer uma melhor performance. Então, performance em questão de processamento, armazenamento. Então, a linguagem de programação aqui, quando a gente olha para Edge Compute, é muito forte. Quando a gente olha para device, é muito forte. E quando a gente olha também para desenvolvimento de aplicações business, também tem que ser uma boa preocupação para que a gente tira o máximo de proveito ali daquela daquela linguagem outro ponto é quando a gente desenvolve às vezes a gente acha que os recursos né é de uma máquina eles são praticamente infinitos né então quando a gente olha para a Edge Compute e a gente olha para a Edge Compute nas abordagens que a gente vai criar um device, a gente tem que se preocupar muito com a questão de CPU. CPU e memória. Então, a gente tem que entender muito bem ali como nossa aplicação vai usar. A gente reduz a questão ali do desenvolvimento, a gente melhora a performance no desenvolvimento para que a gente tenha um grande aproveitamento de CPU e memória. Então, quando a gente olha também para o desenvolvimento ali que a gente está fazendo de uma aplicação, por que não fazer teste de performance? Entender o quanto que minha aplicação, ela escala em questão de CPU e performance e memória, para que a gente tenha uma performance melhor. A gente também tem que ter um grande apetite, quando a gente desenvolve, para diminuir recursos. Isso vai trazer um benefício grande a longo prazo. Primeiro, se a gente consegue ter um desenvolvimento olhando para recursos, memória e CPU, que sejam eficazes, minha aplicação vai escalar muito, então ela vai precisar de menos recursos, menos servidores ali, para que ela tenha um público maior. Então é um ponto importante quando a gente olha a questão dos conceitos de Edge Computing e traz para o modelo aqui de aplicações. Outra questão também, questão de armazenamento. Então, quanto mais eficaz, menor a gente consegue desenvolver essa aplicação, seja na hora de compilar, sua aplicação ser pequenininha, você vai ter muitos ganhos em questão de armazenamento. Ou até mesmo usar protocolos, coisas que o armazenamento de uma imagem, por exemplo, elas tenham um armazenamento reduzido, uma compressão ali daquela sua imagem, para que você guarde ali dentro de um storage, dentro de um S3, dentro de algum lugar, e isso vai te trazer muitos outros benefícios,, a gente pode pensar em Edge Compute aqui. Então, em Edge Compute você tem algo escasso ali de armazenar. Você não vai ter teras dependendo ali para você poder armazenar. Como que você cria estratégias e melhora ali a questão do armazenamento? Então, se você for armazenar um arquivo de 100 MB, como que você comprime ele para que ele fique talvez 10% do seu tamanho original ou até mesmo muito menor ali. Então, são boas provocações quando você pega de compute e coloca os conceitos aqui para um desenvolvimento tradicional. Outro ponto aqui é um outro gancho, né? Como que a gente pensa em questão de cache? Então, como que eu vou cachear essas coisas, né? Como que eu trago mais eficiência aqui de processamento, diminuir a latência das minhas aplicações, né? Como que eu diminuo a questão ali de que ela precise de outras aplicações ali. Então, eu trago um pouco dos dados barra inteligência para dentro da minha aplicação, utilizando cache, diminuindo acoplamento ali, bufferizando as coisas também. Então, são coisas que são importantes também quando a gente fala no desenvolvimento de uma aplicação. Então, a gente tem que ter um apetite também, quando a gente desenvolve a aplicação tradicional para o business, aonde a gente consiga reduzir, otimizar aquela aplicação. E por fim aqui, hoje a gente vive num cenário distribuído. Então, a gente hoje tem muitos dispositivos. Então, o celular, um exemplo, é um caso interessante. Então, eu posso utilizar na minha aplicação tradicional conceitos de Edge Compute que possam me trazer um melhor aproveitamento em N quesitos, em quesitos de segurança, custo, processamento, eficácia na operação ali, enfim. E aí você pode utilizar também os conceitos de Edge Computing e trazer o processamento para dentro de um dispositivo móvel, trazer o processamento para sua aplicação mobile. Então, você pode estar desenvolvendo business ali, desenvolvendo uma aplicação que é totalmente cloud, totalmente on-premise, e você pegar os conceitos de edcomputer e trazer para dentro desses dispositivos móveis né então hoje em dia é muito comum toda empresa tem pelo menos um aplicativo e aí para que esse aplicativo não seja somente uma casquinha ali e você não tira o proveito do processamento que tem do lado ali do do dos smartphones traga esse processamento para dentro ali você diminui em coisas é que a isa e tais que não precisam ser acessadas todas as vezes traz para dentro desse dispositivo grave um arquivo tá é faça uma compressão em enviar ali para o seu para sua aplicação é de de uma imagem ou de um áudio ou alguma coisa do tipo. Então, você pode usar os conceitos de Edge Computing para que você traga benefícios no seu desenvolvimento. Então, Edge Computing não é só device, não é só você pensar em trazer o processamento próximo do seu cliente final, das suas fontes geradoras. Mas também ele traz toda essa provocação de como que a gente consegue processar e armazenar de formas mais eficientes, de formas que veem os clientes, e aí eu digo as pessoas, necessitando cada vez mais, necessitando daquele real time cada vez, de se abrir um aplicativo tem que estar lá a informação, enfim. que é porque não utilizar de compute é usando ali os device aí o mobile um dos exemplos ali pra gente ganhar essa performance para ganhar essa robustez na nossa nas nossas aplicações está então pessoal vamos falar que um pouquinho de gerenciamento. Então, a gente vai olhar também, novamente, um pouco para os conceitos de Edge Computing, e a gente vai dar algumas pinceladas de como a gente pode pensar nesse quesito de gerenciamento, de toda essa complexidade que Edge Computing traz, que eu acho que é uma complexidade além do software, mas que a gente pode usar as suas abordagens para falar de gerenciamento, trazer um pouco desse conceito de gerenciamento também para dentro do mundo de desenvolvimento. Então, eu acho que o primeiro parte sobre gerenciamento é você conseguir ter visibilidade dos seus Edge Computers, é você conseguir ter visibilidade dos seus Edge Computers, ter visibilidade de onde estão seus devices, ter visibilidade do que ele está fazendo ali no contexto de Edge Computing. E aí a gente traz o primeiro conceito, e é um conceito muito importante que vem ganhando cada vez mais força na área de TI e na área de desenvolvimento, que é a questão de observabilidade. Então, quando a gente olha para a Edge Compute, a Edge Compute precisa ser observável, para que a gente consiga tirar insights antes de acontecer alguma coisa. Então, por que a Edge Compute está muito próximo do seu usuário final ali? É para que a gente tire insights, para que a gente consiga fazer algo muito rápido e aí é a mesma coisa com desenvolvimento aqui de aplicações a gente tem que pensar e rápidos né a gente tem que conseguir entender que a minha aplicação ela vem crescendo e se ela tá crescendo em um formato saudável entender os problemas que essa aplicação tá tendo ali, naquele momento, e antes de ter o problema, até mesmo a gente remediar, falar, opa, essa aplicação aqui está consumindo muita CPU, a gente está tomando muito throttling, legal, a gente vai fazer um tanning ali no nosso servidor, no nosso Kubernetes por algum motivo, mas a gente tem que ter a consciência também que a gente pode melhorar ali nosso código, melhorar nossa performance, ler algum artigo, alguma coisa, ou usar uma biblioteca que isso vai resolver esses problemas. Então, nossa aplicação tem que ser muito observável, ela tem que ter logs, ela tem que ter métricas, traces, né? Então, todo esse conjunto de observabilidade, para a edcomputer é interessante, e quando a gente olha para a aplicação é a mesma coisa, então a gente está falando aqui mais software, então é importante que a gente tenha esses conceitos e que melhore a nossa eficiência ali numa aplicação, isso ajuda muito no nosso dia a dia e para que ela tenha uma evolução constante. Aí a gente traz aqui também uma questão em Edge Computing que é importante e também a gente traz aqui. Quando a gente olha para o desenvolvimento de software, a gente tem que versionar as nossas aplicações. E é super importante a gente também entender, conseguir criar pacotes ali que são compatíveis com aquele SO, compatíveis com aquelas tecnologias, compatíveis com aquela cloud. E a gente precisa ter um gerenciamento ali dos pacotes, de versões, do que ela roda, quais sistemas operacionais que ela funciona, em quais arquiteturas que a gente recomenda aquele pacote, aquela nossa aplicação. Em Edge Compute também é muito similar. Então, quando a gente olha no quesito distribuído ali, quando a gente fala de distribuído aqui em Edge Compute, que você tem um monte de device, quando você olha para o quesito de aplicações, você pode ter múltiplos servidores, múltiplos servidores, múltiplos talvez clientes ali, sua aplicação pode estar dividida logicamente em dois clientes diferentes, e você tem que ter essa gestão. Claro, em Edge Compute é mais complicado, porque a gente fala um pouco de devices ali, e talvez numa granularidadeidade maior mas quando a gente fala de aplicação a gente tem que entender também que a gente tem que ter esse controle né de diversionamento esse controle da dos meus pacotes como eles estão sendo entregues como eles estão sendo distribuídos está outro ponto aqui eu acho que é um pouquinho do nosso carimbador, entre aspas. Então, como que a gente tem governança? Então, quando a gente olha em Edge Computing, a gente precisa ter governança sobre os nossos devices, a gente precisa ter modelos de implantação ali, modelos que nos dão uma garantia que aquilo vai funcionar, que aquilo não vai disponibilizar um edge computing, e até mesmo trazer problemas ali para que a gente precise atuar naquele edge computing. Então, é importante que a gente tenha processos de governança que eles nos testem que nossa aplicação está ok para que a gente possa subir para a produção, para que a gente possa realmente ter uma gestão eficaz, que aquela versão está atingindo o nosso público, que ela não está indisponibilizando os nossos clientes. Então, o processo de governança também é muito importante, tanto em Edge Computing quanto nas aplicações tradicionais então vamos falar aqui de uma outra característica de edcomputing que é utilizado aí no quesito de aplicações mais eficientes né então é a parte de segurança tá então acho que segurança ela é algo inegociável para edcompeer é inegociável para uma aplicação é inegociável para qualquer abordagem hoje em tecnologia segurança é importante a gente não pode abrir mão de segurança isso expõe não somente o nosso cliente né expõe a nossa empresa expõe o nosso desenvolvimento expõe uma série de coisas que é inegociável tá então quando a gente pensa que é de Compute e são é de Compute você tem que pensar talvez em outras seguranças, seguranças de hardware ali, né? Então, você tem que até fugir um pouco dos modelos tradicionais. Só que Edge Computing também traz preocupações que às vezes a gente fala que não são importantes, em Edge Computing você é obrigado a pensar, é obrigado a você ter isso muito consciente. E aí, para que a gente tenha aplicações mais eficientes, aplicações que nos tragam tranquilidade, então, segurança traz esses pontos. O primeiro ponto aqui que eu acho que vale comentar é a questão de criptografia. Então, quando a gente pensa em criptografia, às vezes a gente nem lembra que a gente usa o famoso HTPS, o nosso TLS. Então, basicamente, aqui eu estou falando na comunicação entre duas APIs. Então, quando a gente pensa em duas APIs, não vamos utilizar HTTP. Vamos utilizar a questão do HTPS. Então, utilizar certificados, vamos utilizar MTLS, então ter o certificado nas duas pontas, validações nas duas pontas. E aí é super importante a gente pensar sempre que esse tráfego de informações é seguro e que ninguém está ali interceptando esse tráfego ou até mesmo inserindo informações que não são corretas. Então, tenham sempre isso em mente. É importante a gente pensar nas questões de TLS, nas questões ali de você ter um tráfego seguro. Outro ponto aqui, a criptografia em repouso. Criptografem seus dados em repouso. Cliptografia em repouso. Cliptografem seus dados em repouso. Pode ser que tenha um vírus mal intencionado que pegue seus dados e que você perca esses dados. Então, criem cenários e conceitos que as suas informações estão protegidas, independente do momento que ela está, se ela está em trânsito, se ela está em repouso, se ela está sendo excluída, enfim. Então, criem todo esse contexto aqui de segurança e que você tenha o máximo ali de chaves, o máximo de mecanismos de segurança. o máximo de mecanismos de segurança. Outro ponto aqui que é de compute traz muito à tona também modelos de autenticação, autorização. Galera, às vezes a gente desenvolve a aplicação e a gente fala assim, não, eu tenho um token ali que a empresa me fornece. Tente entender o que esse token faz e quais são os mecanismos que você consegue extrair daquele token para exemplo ali para você se autenticar, um Kerberos e assim por diante. Então, você tem que entender quais são os seus mecanismos que você pode agregar na sua solução e que ela pode trazer o melhor aproveitamento no quesito de autenticação e autorização. Então, não é só em Edge Compute que a gente tem que pensar quem pode acessar seu device, quem pode se comunicar. Então, as aplicações também a gente tem que ter muito esse apelo. E quando a gente olha um pouco para Edge Compute, a gente pensa, às vezes, num desenvolvimento um pouco mais artesanal, um desenvolvimento ali, você está fazendo um hardware, dependendo do cenário ali, da sua empresa, da sua necessidade. E aí você vai passando por essas etapas ali e você vai lapidando tudo que é preciso para aquele seu cenário. E uma outra coisa aqui é a gente pensar nos mecanismos também que a gente consegue se bloquear. Então, a Cloud, um exemplo, a Cloud te dá mecanismos que você consegue blindar a sua aplicação ali da exposição para a internet. Então, você colocar Firoz ali. Então, não é só em Edge Compute que a gente olha Firoz. Talvez sua aplicação não precise estar exposta na internet, então em Edge Compute também é o mesmo conceito. Então, questão de antivírus, também é importante você pensar que nas suas máquinas, na sua aplicação, em Edge Compute tem um antivírus para que te blinde em questão de vírus. em questão de vírus. Então, você tem que olhar todos esses conceitos que existem em Edge Computing, mas também existem no mundo de aplicação, que às vezes a gente esquece por hoje o mundo de aplicação, entre aspas, de até alguns modelos muito bem resolvidos. Mas entendam esses modelos muito bem resolvidos, entendam como eles funcionam, como eles são implementados. E questionem também, por que não utilizar um outro modelo para aquela necessidade que faça talvez mais sentido. Vamos para uma outra característica em Edge Computing que ela pode ser muito bem utilizada na questão de aplicativos mais eficientes. Então vamos falar um pouquinho aqui de custo e ROI. Hoje em dia também tem algumas empresas que não olham muito para a questão de custo e de ROI. Quando a gente olha em uma abordagem de Ad Compute, isso é muito importante. Por quê? Se você fala, eu vou criar uma abordagem de Ad Compute, onde eu vou comprar devices para melhorar, por exemplo, eu quero fazer um CDN da minha empresa, sem utilizar cloud, sem utilizar esses parceiros, e eu quero construir, eu preciso entender quanto que isso custa e quanto que isso vai me trazer de retorno. Então, são pontos importantes em Ad Compute. Quando a gente fala de aplicações no modelo tradicional, a gente tem que se preocupar também com essas questões. Então, a gente comentou, já falou aí sobre processamento. Então, como você melhora o seu processamento? Se você melhorar o seu processamento, você vai diminuir os seus custos. Então, você vai conseguir ter uma aplicação mais enxuta, logo você não precisa de servidores grandes. Quando você olha na questão dos upgrades, um pouco de gerenciamento, você também olha para custo, porque você quer tentar diminuir falha, observabilidade, indisponibilidade. Então, tem todos esses conceitos, eles se linkam com custo. A questão de segurança, segurança nem fala que a exposição dependendo empresa pode perder pode acabar empresa por questões de segurança então questão de do curso ali com a sua segurança eficácia com na questão da segurança ali da sua aplicação né então todos esses quesitos eles são muito importantes e aí a primeira parte aqui que a gente tem que olhar para custo é de arquitetura então quando a gente começa a pensar numa aplicação no negócio a gente tem que olhar para a arquitetura disso né e essa arquitetura ela tem que ser o mais em junta possível tem que ser uma arquitetura que ela possa ser escalável uma arquitetura que você você pense em todos os custos, seja de armazenamento, como que você vai armazenar aquelas informações, aqueles dados, por quanto tempo, como que a gente vai expurgar esses dados, como que a gente vai colocar ali numa base fria, o que eu vou processar, qual que é o negócio que eu estou fazendo. O que eu vou processar? Qual é o negócio que eu estou fazendo? Então, todas as questões de arquitetura, a gente tem que olhar e olhar no quesito de custo. Olhar em qual máquina que a gente vai rodar, qual tipo de máquina vai rodar, se vai ser uma máquina, se vai ser um cluster, se vai ser um contender. Então, a gente tem que olhar por todos os pontos de arquitetura. Seja de integração, quais são os modelos mais leves de integração, isso vai te ajudar a reduzir custo. E quando a gente fala também de arquitetura, a gente tem que sempre, passou um ano, dois anos, vamos olhar novamente se aquela arquitetura faz sentido, se aqueles custos daquela aplicação, daquela arquitetura, ainda estão nos modelos aceitáveis que a gente está olhando ali outro ponto é a gente precisa monitorar o o todo o nosso conjunto aqui de aplicação né entender o que a gente pode filtrar, né? Então, exemplos muito claros aqui em aplicações, né? Se está ocioso, talvez a gente possa fazer um resize, né? Então, igual o Edge Computer, a gente pode, dependendo, pegar um dispositivo e colocar num outro lugar. Ele precisa de mais processamento. E é o mesmo caso aqui. Uma aplicação aqui, um microserviço A, ele pode estar muito mal dimensionado. A gente pode reduzir o custo dele e aumentar, talvez, no nosso microserviço B aqui. Então, filtrem, tentem filtrar sempre esses custos, sempre ficar olhando, monitorando no quesito de custo também. Entender ali, pô, eu fiz assim naquele momento funcional, legal, era o modelo mais eficiente, mas mudou as coisas, então depois de seis meses, um ano, as coisas mudaram, deixa eu ver de novo, deixa eu filtrar, deixa eu colocar aqui um pouquinho mais de segurança, que faz mais sentido, e aí você vai filtrando o que faz sentido para o seu negócio e a questão financeira também. Outro ponto, as suas soluções precisam ser rentáveis, então esse é um grande ponto aqui. Suas soluções e arquiteturas precisam ter um ciclo de vida financeiro muito bem ajustado, para que elas possam ser vendidas e utilizadas no mercado e para que sua operação possa ser uma operação saudável. Busque modelos da sua aplicação que ela se encaixa num pago pelo uso, talvez, uma aplicação serverless ali, então, só quando você realmente receber um acionamento, um evento, ela ser acionada, então, olhe para esse também, seu modelo de negócio, se ele é sustentável ou não, e para que você tenha uma aplicação ali que faça sentido para o seu negócio, uma aplicação que faça sentido ali para a sua necessidade, como é de Compute, Então, a gente tem que ter também essas questões. Eu não quero implementar Edge Computing por implementar legal, porque é mais rápido, porque eu entrego mais rápido. O meu cliente tem a sensação do real time. Às vezes não faz nenhum sentido você implementar Edge Computing. Faz sentido você melhorar a sua aplicação. Então, você vai melhorando ali as questões de custo e uma série de outras coisas. Outra coisa aqui importante também que envolve a questão de custos, né? E barra ROI, é você ter parceiros, né? Então, como em Edge Compute a gente tem que ter parceiros ali, dependendo para nos ajudar a manter aqueles devices, nos ajudar na logística, a gente ter parceiros ali de hardware e tudo mais, aqui também é importante a gente falar, na sua aplicação tenha parceiros, olhe as melhores clouds, o que elas nos oferecem como plataforma, interessem como como é como plataforma né olha a melhor Cláudia ali no quesito de custo também qual que vai ser a melhor Cláudia para mim em questão do custo né então é busque parceiros que também te alavanque também né então parceiros que você tenha talvez um desconto na questão de utilização parceiros que você possa ter uma melhor mão de obra também. Então, isso é muito importante na hora que você desenvolve Edge Computing e também os aplicativos, para que você tenha uma eficiência maior, para que todo mundo possa usufruir das suas aplicações, do seu negócio, de forma eficaz e que você consiga crescer. Então, ter esse retorno do investimento, esse retorno da sua aplicação, porque às vezes você acha que não é só investimento que nem é de compute, de hardware, mas você tem um investimento aqui de infraestrutura, de uma cloud talvez, ou até num data center. Então, é super importante você pensar também na eficiência de custo de uma aplicação.