Olá pessoal, sejam muito bem-vindos ao nosso curso de Edge Computing. Discussão sobre a importância do desenvolvimento em Edge Computing utilizando padrões de aplicação. Então, agora vamos falar um pouquinho aqui e discutir também sobre as questões de práticas que nós temos na área de desenvolvimento de software tradicional, eles podem ser aplicados também em Edge Computing? A gente pode usar práticas de desenvolvimento e transpor para Edge Computing? Eu acho que essa é a primeira pergunta que a gente fica, né? Podemos utilizar? Será que podemos? Será que Edge Computing é uma outra coisa? Será que desenvolvimento de software é uma outra abordagem, uma outra tecnologia? Será que Edge Computing é só voltado a dispositivos ali, devices? A resposta é que podemos utilizar todas as abordagens de aplicações para Edge Compute. Edge Compute existe junto com as abordagens de aplicações. Edge Compute compartilha também das boas práticas de aplicações. de aplicações e eu digo mais é de compute necessita muito mais de uma boa prática padrões e otimizações que as boas práticas né os padrões ali eles nos ajudam para que a gente tem uma grande eficiência no nosso processamento né no nosso final do dia ali é entregar a resposta em tempo real. Então, sim, Edge Computing utiliza os padrões de desenvolvimento. E a gente pode também utilizar os padrões de Edge Computing nos padrões de desenvolvimento, como a gente já comentou um pouquinho. Tudo bem? Então, agora aqui, nós vamos abordar alguns padrões está só para vocês entenderem e está na sua mente é de alguns padrões que eles podem ser utilizados aqui é de compute e aí eu vou dar um uma leve introdução né de que eles poderiam nos ajudar ali no final do dia ali quando a gente olha para edcom piure tá é um ponto importante é existem n outros padrões entre n outras estratégias tá aqui na verdade é só para abrir a mente de vocês e vocês entenderem que dá para vocês usarem qualquer tipo de padrão qualquer tipo de implementação formato ali para edcom pi e vai te ajudar. Então, às vezes, um padrão possa ajudar na sua implementação de Edge Compute, com uma melhor eficiência no seu Edge Compute. Então, vamos começar aqui com os padrões de projeto, alguns padrões de desenvolvimento, os nossos design patterns. Então, a primeira abordagem que eu sim um tom tá então o sim não tom ele traz uma grande eficiência aqui pensando no modelo de adcom Pure né e o por quê exemplo eu preciso abrir uma conexão com a internet ou abrir uma conexão com 3g vocês concordam que eu preciso fazer isso uma única vez então preciso criar essa conexão uma única vez e posteriormente eu vou reutilizando essa conexão então padrão sim então ele não vai nos ajudar aqui no conceito de edcompeery para que eu não fique criando várias conexões, abrindo várias conexões com a internet ali de forma desnecessária. Então, o singleton é um dos padrões que podem ser utilizados em Edge Computing. Factory. Aqui também é um outro modelo, um design pattern utilizado para a gente instanciar vários tipos, né, vários tipos de alguma coisa, né, quase um, o nome já diz, né, uma fábrica ali, né, então ela vai conseguir criando vários tipos, várias coisas ali naquele modelo, né. E o Factor, ele pode ser usado em Edge Computing para quê? Para exemplo, para vocês instanciarem os seus dispositivos né os seus sensores ali então a partir do momento que você fala eu quero por exemplo utilizar o sensor de temperatura então é um factor eu quero utilizar o sensor de umidade um outro factor eu quero utilizar um sensor de distância então é você pode estar utilizando dentro da sua implementação dentro do seu código padrão de sector o adapter né então também é um padrão talvez é o que bem utilizado em é de Compute quando a gente pensa ali que você tem um dispositivo é de não é de novo de ali gerando a informação para você. E esse Edge Node pensa que você tem variações desse dispositivo. Então, exemplo, um sensor de temperatura, pode ser que você tenha o sensor de temperatura na versão 1, que ele tenha uma leitura, exemplo, em binário, e o sensor na temperatura 2 ali, ele tem algo mais voltado a ao mundo analógico ali né e aí se você faz um um design pattern de adapter então você consegue tirar os seus sensores né então você lugar os seus sensores ali no num quesito na no seu código onde você consegue é intercambiar entre as versões. E sua implementação continua praticamente a mesma. Então, você usa um módulo, ele vai sempre te retornar naquele formato. Se você usar outro módulo, ele também vai te retornar naquele módulo. Então, é uma adaptação. Então, ele faz como se fosse uma camada ali, para que você possa ter dois tipos diferentes de módulos. E aqui o strategy é um outro design pattern que a gente pode criar algoritmos, então formas de leitura onde a gente pode, por exemplo, identificar se aquele dado está corrompido através de alguns padrões, através de algumas estratégias. E a gente pode utilizar nos nossos dispositivos ADs, nos nossos AD nodes, para identificar esses comportamentos, independente do sensor, independente de onde ele está vindo esses dados, independente do cliente ali, de sensores, ele conseguir fazer com que esse dado seja filtrado, enfim, com que ele tenha esse algoritmo único e você possa usar esse algoritmo em vários clientes, em várias estratégias ali. Então, você meio que ter várias estratégias ali para fazer uma leitura. Então, percebam, quando a gente fala aqui de padrões, de projetos, design patterns, a gente pode utilizá-los em Edge Computing e a gente pode utilizar tanto na questão do software, então é uma boa prática a gente pensar em design patterns quando a gente desenvolve nosso software para Edge Computing, quanto a gente pode também pensar no nosso mundo físico, como que a gente usa essas abordagens de design patterns para o nosso mundo físico, então eu trouxe aqui um pouco das abordagens de como vocês podem pensar para que você tenha essas abstrações e esses padrões para alavancar o seu desenvolvimento de um dispositivo Edge. Quando a gente também tem outras abordagens de Edge, que elas não são tão físicas, a gente também deve utilizar os design patterns. Então, é sempre uma boa pedida, é sempre uma boa prática utilizar design patterns quando a gente fala de Edge Computing. Agora vamos em outra abordagem aqui para a gente ver que também é muito utilizado e de verdade devemos sempre olhar para essas boas práticas quando a gente olha em padrões de arquitetura. Então aqui eu estou falando um pouco mais de arquitetura de software. Então, como que eu deveria construir os meus serviços? Eu preciso sempre construir um monolítro? Talvez sim, talvez faça sentido. Mas, talvez você possa utilizar os padrões de arquitetura de microserviços, que pode te ajudar muito no seu dia a dia de Edge Computing. Então, você pode ter microserviços dentro do seu Edge Computing, onde cada microserviço tem uma responsabilidade, cada microserviço tem uma feature que te entrega ali, uma funcionalidade, alguma coisa do tipo. Você pode pivotar essa ideia também de microserviço para micro Edge Computing. O que eu quero dizer com isso talvez você tem é de compute pequenos aonde eles são especializados em uma determinada função uma determinada feature tá a gente já sabe dos problemas que isso pode ter mas também é uma boa abordagem tá E aí você pode então pegar esses conceitos que você tem de aplicação e pivotar, mudar um pouco eles, dar uma lapidada, para que a gente também tenha uma abordagem muito parecida com o software. Mas padrões de microserviços é uma boa pedida para Edge Computing também. Não precisa ficar só no monolítro. Pode também fazer padrões de microservice. Outro ponto também, event drive, então um edge computing não precisa ser um long run, ele não precisa sempre estar processando, sempre estar executando, e toda vez ali ele está disponibilizando uma API, não, eles podem ser um Event Drive, né, então eles podem receber eventos que ele é acionado ali naquele momento, ele executa naquele momento ali, pode pensar em padrões de mensageria também para o Edge Computing, então o Edge Computing no final do dia ele lê mensagens ali e está processando ali, mas de forma tempestiva, de forma mais próxima ali da fonte geradora, mas também a gente pode aplicar o Event Drive dentro de Edge Computing. Questão de serverless, também podemos utilizar serverless dentro dos nossos Edge Computers. Podemos usar padrões ali, exemplo, mesclar. Então, você vai ter microserviços ou functions ali, que elas são acionadas a partir do momento que chega um evento. Então, vejam, a gente está misturando aqui todos os padrões de arquitetura dentro de serverless aqui. Então, usando esses conceitos de arquitetura para Edge Computing. Então, a gente pode sim utilizar todos os benefícios de serverless para dentro de Edge Computing. Vamos falar aqui também de um outro padrão também utilizado muito forte na questão de aplicação e que devemos também utilizar aqui dentro de Edge Compute. Então, a gente vai falar aqui um pouquinho dos padrões de integração. Então, os padrões de integração e todos os conceitos que temos de integração no mundo de aplicações, eles podem ser transpostos também para Edge Compute. E vale lembrar que isso também traz um grande benefício para a Edge Computing. Então, traz um grande benefício quando a gente tem dispositivos ou formatos de Edge Computing muito diferentes ali. Então, todos os padrões de RESTful API, eles devem ser implementados em Edge Computing. Então, todas as boas práticas que você tem dentro do pad de RESTful API, eles devem ser implementados em Edge Computing, tá? Então, todas as boas práticas que você tem dentro do padrão RESTful, os métodos HTTP, os padrões de PF, o que deve ser usado, o que não deve ser usado, o modelo de autenticação, você pode sim utilizar em Edge Computing. E é uma boa prática você utilizar, tá? Então, isso ajuda muito na sua implementação. E, de novo, a gente vai estar pensando aqui em não reinventar as coisas. Cara, vamos usar o que já tem. Então, vamos trazer o que já tem, otimizar o que já tem, para que a gente possa tirar proveito disso. Padrões de mensageria. Podemos utilizar também a de computing. A gente não precisa ser tudo síncrono. A gente pode receber ações ali, receber mensagens com um padrão assíncrono por fila. Então, o seu Edge Computing pode estar olhando para uma fila, um Revit, um MQ-Series ou qualquer outro tipo de mensageria, SQS, e ele está executando alguma função, algum acionamento. Então, isso também ajuda na questão do seu Edge Computing. Então, de você poder ter padrões de mensagerias, padrões assíncronos, onde ele receba esses eventos de um ou outro formato. A gente também pode utilizar os modelos de PubSub, né? Então, basicamente, eu posso mandar, entre aspas, um broadcast de uma atualização de um novo framework para todos os meus dispositivos, né? Então, minha aplicação, ela recebe essa informação no meu Edge Computing e eu começo a fazer um upgrade aqui no meu device. Posso também mandar uma mensagem, acionar uma sirene, e eu ter várias sirenes aqui, várias alertas. Então, podem ser utilizados em Edge Computing. Então, todos os padrões de integração também são aplicados em Edge Computing. Então, todos os padrões de integração também são aplicados em Edge Computing. Então, é uma boa prática a gente sempre olhar por esses padrões. Então, vamos comentar aqui também de outra boa prática, de outro padrão que a gente pode estar utilizando. Então, são as boas práticas de implementação. Então, a gente também pode utilizar e deve utilizar em Edge Computing. Então, vou trazer algumas aqui. Modularidade. Então, quando eu penso em Edge Computing, é muito importante a gente pensar que ele pode ser modular. de Edge Compute né e é muito importante a gente pensar que ele pode ser modular né então que eu posso colocar features novas ali dentro daquele meu Edge Compute ou até sensores novos ali e eu lhe continue funcionando né então essa questão de ser modular também ajuda bastante nas implementações de Edge Compute né então imagina um dispositivo Edge onde você pode plugar diferentes sensores ali dentro dele e aí com uma série de boas práticas que nem a gente já comentou ali de design patterns, eu consegui ligar e desligar ou até ter mais dispositivos em um único Edge ali então as práticas de modularização são interessantes no conceito de hardware e também na questão de software, então também você dentro do seu software ele ser modular, então a hora que eu preciso, por exemplo, ligar o módulo para leitura de temperatura, eu vou lá no meu software, simplesmente eu consigo ligar, ou no outro lado, no mundo físico, eu colocar um sensor de proximidade ali, eu consegui também ligar esse sensor ali na minha parte do hardware. Então, a parte de modularidade funciona para os dois mundos, tanto software quanto hardware. Desacoplamento, isso também é um ponto super importante quanto mais acoplado são as coisas quanto mais soltas elas são vamos dizer assim melhor né e o porquê é se você consegue desacoplar alguma coisa você consegue desacoplar por exemplo esses dois sensores que nem eu comentei aqui é quando um falhar o outro vai continuar funcionando. Quando você não precisar, por exemplo, depender de uma informação que está na cloud, pois quando seu dispositivo Edge estiver fora, como que ele vai trabalhar com isso? Então, quanto mais você vai desacoplando as coisas e vai tornando elas mais enxutas, mais resilientes, você vai ganhando também outros poderes, vai ganhando resiliência, você vai ganhando ali, talvez, diminuindo a complexidade daquelas coisas, então você vai, talvez, olhar para um olhar mais crítico, fala assim, ah, eu sempre precisava ir na cloud, agora eu não preciso mais, porque eu consegui desacoplar ali, então você pode trazer simplicidade na hora que você olha para o desacoplamento. Segurança. Segurança é o inegociável. Segurança tem que ter, as boas práticas de segurança devem ser implementadas em Edge Computing, porém, tem algumas vírgulas que é o seguinte, segurança é custoso em questão de processamento às vezes nem todos é de compil eles conseguem utilizar todas as boas práticas de segurança dentro de um é de compil e só que um ponto importante é você ter claro é desses gaps de segurança e você tentar mitigá-los né então talvez se o seu dispositivo recolhe um dado muito sensível ali de uma pessoa, né? Ou de algum device, alguma coisa do tipo ali, como que você mitiga isso? Talvez você tirando as informações que são sensíveis, né? Elas poderiam ser capturadas por um outro device que é mais inteligente, que tem práticas ali de segurança. Então, é importante você pensar nas boas práticas ali de implementação de segurança tá dentro do seu dispositivo tanto físico quanto o software tá o teste automatizado isso também é uma boa uma boa pedida quando a gente olha para de Comp Tanto a questão de você conseguir ter testes onde você consegue validar o seu software, um exemplo, se vier uma leitura de uma temperatura negativa muito extrema em um local que não existe temperatura negativa, você tem que ter testes automatizados para entender que aquela questão ali não é factível. Então, é uma informação que vai te trazer problemas, um erro ali. E também fazer os testes na questão dos dispositivos. Então, qual é a tolerância de falha daqueles seus sensores, para que você consiga se blindar e para que você tenha uma certividade ali na no seu na sua implementação de adcompyure tá então é super importante né a gente olhar por um quesito aqui de implementação como um todo né boas práticas é de tudo que você está fazendo ali você pode utilizar em adcompyure e aí basta, de tudo que você está fazendo ali, você pode utilizar em Edge Compute. E aí basta você entender o que você precisa para você colocar aqui dentro do seu Edge Compute. Então, um pouquinho aí das boas práticas de implementação que você pode transpor de aplicações para dentro do mundo de Edge Compute. para dentro do mundo de Edge Compute. Então, aqui, na verdade, é só para a gente fazer um fechamento sobre a nossa discussão sobre a importância do desenvolvimento em Edge Compute e utilizar os padrões de aplicação, os padrões de desenvolvimento que nós já temos. Então, só para vocês lembrarem, a gente falou em alguns padrões, em algumas abordagens, existem diversos padrões, em algumas abordagens, existem diversos padrões, diversas abordagens que a gente pode utilizar e a gente pode só talvez pensar um pouco diferente de como que a gente faz aquilo, aquele padrão ali, se encaixar para o nosso cenário de edcomputing, se encaixar na nossa necessidade. para o nosso cenário de edcomputing, se encaixar na nossa necessidade. Então, é muito importante a gente cada vez mais se aperfeiçoar na questão dos padrões, nas boas práticas, isso pode trazer muitos benefícios, isso pode trazer benefícios que podem ser na questão do nosso processamento, armazenamento, e a gente ganhar eficiência no nosso modelo de edcom píure na nossa implementação de adcom píure tá então pessoal quando a gente pensa em padrões em qualquer padrão nem seja de conectividade padrão de rede protocolo comunicação desenvolvimento segurança e assim por diante a gente precisa usá-los né então use os padrões então entenda se você não tá reinventando aquele padrão né entenda se já não existe algo que resolve seu problema e aí você precisa entender e talvez transpor para sua abordagem de Edge Computing. Não é achar que você está tentando encaixar um padrão em uma coisa que não encaixa. Não, é algo que já pensaram, já estruturaram e resolveram problemas com aqueles padrões. Então, utilizem, podem utilizar.