Olá pessoal, sejam muito bem-vindos ao nosso curso de Edge Computing. Ferramentas e linguagens utilizadas para desenvolver aplicativos em Edge Computing. Nesta parte aqui, iremos comentar um pouquinho das ferramentas, linguagens, frameworks, SDKs, todo um ecossistema olhando aqui para o desenvolvimento de Edge Computing. Então vamos começar aqui falando um pouquinho sobre as linguagens de programação que são muito utilizadas ali no contexto de Edge Computing. que são muito utilizadas ali no contexto de Edge Computing. Então, vamos começar aqui a falar, eu acho que uma das linguagens aí que deu origem a outras, outras linguagens, muito famosa aí no nosso dia a dia, a gente escuta bastante ainda falar sobre essa linguagem, quando a gente pensa em questão de performance, que é o C++, né? Então, é uma variação do C, então uma melhora ali no C, quando a gente olha em questão de desenvolvimento orientado a objeto. E aí, por que o C é muito utilizado em Edge Computing? Como o C é uma linguagem muito robusta, ela te dá muitos poderes ali de você conseguir otimizar a questão de memória, questão de processamento, ela te dá um baixo nível que algumas outras linguagens não conseguem te dar, e você consegue com ela ter ótimas performances. Então, quando a gente olha para o C aqui no cenário de Edge Computing, às vezes ele é uma boa e uma ótima opção para você ter uma otimização no seu processamento, armazenamento, eficiência também de custo energético, porque você vai conseguir otimizar ele. Porém, ele é um pouco mais complexo pensando em algumas outras linguagens, tudo bem? Então, ele é muito utilizado no cenário de Edge Edge Computing, quando a gente pensa ali em baixas plataformas, em a gente desenvolver um Edge Computing, um hardware, ele é muito bom para a gente ter essas eficiências e ganhos ali, para uma tomada de decisão muito rápida, tá? A gente tem aqui um pouquinho também, é uma linguagem já um pouco mais nova, mas ela também tem algumas características aqui muito fortes em questão de performance, que é o Rust. Então, o Rust também ele é um cenário que Edge Computing também utiliza. Então, o Rust ele vem bem inserido e muito forte ali em questões de segurança também. Então, dependendo se você necessitar fazer um hardware ali, um é de Compute que você precisa questões de segurança o resto é uma boa pedida tá então ele também tem uma performance grande ali uma performance de processamento e gerenciamento ali de memória muito bom né então você consegue também desenvolver aplicações rápidas em Edge Compute utilizando o Rust. Uma outra linguagem aqui que vem ganhando bastante mercado, e aí também não somente no Edge Compute, mas em aplicações também tradicionais, em aplicações de negócio, é o Golang. O Golang também tem a mesma abordagem ali do do do rest né então é uma linguagem que ele é muito leve muito simples de entender muito fácil de fazer tá então ele também empresa muito para performance tá então quando a gente olha aqui pelo menos essas três primeiras linguagens a gente percebe que elas são são linguagens que têm um apetite grande por performance, um apetite que a gente quer otimizar a questão da performance ali, então, conseguir compilar, são linguagens que são compiladas também, isso é um ponto importante, então, ela vira ali um binário mesmo, onde o seu dispositivo vai conseguir executar no final do dia. Então, ela está muito próxima ali no seu sistema operacional. Então, logo eles ganham uma performance extraordinária. Aqui já é uma linguagem um pouquinho diferente, é o Python. O Python, na verdade, é uma linguagem interpretada. Significa o quê? Você precisa de um binário ali, o binário que seria o Python mesmo, a linguagem, e ele interpreta as suas execuções, interpreta todos os seus códigos ali. Existem estratégias de sim ter Python também compilado. Então, também existem essas estratégias. Mas o Python é muito utilizado também no cenário de edcomputing e o porquê também é quando você olha o cenário de edcomputing olhando para machine learning e inteligência artificial a comunidade utiliza bastante a questão do python então logo ele é uma boa pedida também para usar em Edge Compute. Então, apesar dele ter essa, entre aspas, desvantagem de não ser compilado, mas você consegue trabalhar ali em outros sentidos para que isso seja minimizado, então o Python também é muito utilizado em questões de Edge Compute. A gente tem aqui o nosso JavaScript, né? Hoje também, antigamente a gente olhava o JavaScript muito ali no nosso front-end, nas nossas páginas web, e aí trouxe o poder do JavaScript para dentro também aqui do nosso back-end, né? dos nossos processamentos. E o porquê que também ele é muito utilizado. Apesar também dele ser uma linguagem interpretada e não compilada, ele tem um poder de ser o processamento assíncrono. Isso é uma das grandes chaves aqui do JavaScript. E quando você olha a Edge Computing, que você precisa às vezes processar muito rápido e dependendo fazer estratégias ali para que você possa ter um processamento assíncrono ou um processamento de muitos dados, o JavaScript também é uma boa pedida ali quando a gente olha em questão de linguagem de programação para Edge Computing. para a edcomputing. E por fim aqui eu trouxe uma outra linguagem também, é uma linguagem que vem sendo utilizada há muitos anos, ela desbravou muitos outros pontos de desenvolvimento, então ela vem com a nossa evolução também, olhando no quesito aí de Edge Computing, tá? É o Java, ela é uma linguagem também que ela não é compilada, né? Ela tem lá sua compilação, mas ainda assim ela precisa rodar, ela não roda diretamente ali no seu SEO, porém também existem estratégias e formatos que você consegue compilar o Java para você rodar ali dentro do seu sistema operacional. E é também uma linguagem muito utilizada quando a gente olha o quesito de Edge Computing, tá? Talvez ela não é tão performática que nem algumas outras linguagens, se eu for comparar com C, né? Mas ela é uma linguagem muito utilizada também no cenário de Edge Computing, tá? muito utilizado também no cenário de Edge Computing. Eu trouxe aqui essas seis linguagens, elas são, eu acho que as mais utilizadas no conceito aqui de Edge Computing. Então, quando a gente olha para construir um device, para tentar otimizar o processamento desse device, e cada uma tem sua característica. Vale lembrar que existem outras linguagens, por exemplo, o C Sharp da Microsoft, que também é uma linguagem que é inserida em Edge Computing. Então, o grande ponto aqui, você pode utilizar qualquer linguagem dentro de Edge Computing. O único ponto é você entender se seu dispositivo, a sua necessidade, ela atende àquela necessidade daquela linguagem. Um exemplo, se eu fosse pensar num dispositivo ali com pouco poder de processamento, um dispositivo que ele tem um single core, um exemplo, tem uma capacidade muito reduzida de processamento, tem uma capacidade muito reduzida de processamento, será que eu iria pensar em utilizar um Java naquele dispositivo? Um dispositivo que tenha, sei lá, 32 megas de memória. Então, são coisas que devem ser ponderadas na hora que você vai desenvolver o Pride Computing. Então, você precisa entender esse contexto. Talvez um CL se aplique muito melhor, talvez um Rust, um Golang. Então, você precisa entender esses contextos para você falar, essa sim é a linguagem adequada para o meu Edge Computing. Ou então, não, essa linguagem aqui é necessária para o meu tipo de processamento. Então, também se eu for olhar aqui num cenário de machine learning, onde eu tenho N bibliotecas, N coisas ali, facilidades, será que eu vou escolher um C ou eu vou escolher um Python? Então, eu acho que nesse conjunto de Edge Computing, como todas as abordagens, quando a gente olha no sentido de desenvolvimento, a gente tem que entender as linguagens, entender também aqui no nosso ponto de Edge Compute, a questão de devices, se ele vai estar realmente rodando um device, se ele vai ser algo mais voltado a Fog Compute, então você tem que olhar todo esse contexto aqui na questão de linguagem de programação. contexto aqui na questão de linguagem de programação. Agora, pessoal, vamos comentar aqui sobre um pouquinho de bibliotecas, STKs, ferramentas e plataformas. Aqui eu trouxe todo um ecossistema de N coisas que a gente usa no quesito aqui de desenvolvimento de Edge Computing, né? Então, quando a gente olha para Edge Computing, é muito ampla essa questão de linguagens, ferramentas, bibliotecas, SDKs, que são utilizadas, tá? E aí, aqui eu trouxe algumas para que a gente entenda que essas empresas barra ferramentas, né? Elas também estão sendo pensadas para Edge Computing, elas estão sendo otimizadas para Edge Compute. Então, eu vou começar aqui com uma das primeiras ferramentas barra plataforma aqui, então, o AWS CloudFront, CloudFront é o CDN, então ele está lá mais próximo da Cloud, Então, ele está lá mais próximo da cloud, ele está mais para um conceito de fog compute ali, onde ele pega um site e ele melhora esse site. Então, ele traz uma performance melhor, trazendo esse site, esse conteúdo web, próximo dos seus usuários finais. A gente também tem o Azure Front Door, similar ao CloudFront, então ele também é um CDN que tem os conceitos de Edge Computing, então é uma plataforma onde você consegue instalar o Greengrass ali no seu device, você tem uma série de coisas de gerenciamento, você trazer o processamento de algumas coisas que ficam na cloud para dentro do seu Greengrass. Então, ele te ajuda muito aí na questão de você desenvolver IoT iot né que você desenvolver é devices é de compute e a gente tem aqui também o é jorge é o ti é de ele é muito similar ao ingresso então também ele traz essa questão essas questões né de cloud para que você possa processar muito ali próximo do seu cliente você colocar dentro de um device, você ter todo esse gerenciamento, tá bom? E aqui a gente tem o Balena. O Balena também é uma plataforma de IoT, né? E onde ele também traz as questões de Edge Computing, tá? Então, o Balena também tem todo um ferramental ali para que quando a gente olha em plataforma de Edge Computing, a gente consiga fazer gestão, olhar dashboards, olhar a saúde dos nossos dispositivos, enfim. Então, é um pouquinho aqui, talvez um pouquinho de camada aqui de plataforma barra ferramentas. barra ferramentas, tá? Então, só para vocês entenderem o que a gente tem aqui numa gama de... olhando quando a gente olha o desenvolvimento de Edge Computing. Seguindo aqui, a gente tem a NVIDIA Jetson. Basicamente, também, ele traz vários SDKs para que você possa usar a questão ali de IA no seu device, né? Então, extraindo um device que tem essa necessidade, você conseguir ter um processamento ali de IA, enfim, muito próximo ali do seu cliente. Então, ele traz muito como um SDK, ele tem também um pouquinho de plataforma ali, tá? Então, é um pouco do que a NVIDIA traz aí, falando aí um pouquinho de Edge Computing, e é talvez para sua necessidade possa resolver alguns pontos. A gente tem aqui o protobuf, né? Então, alguns conhecem como gRPC, né? Mas no final do dia, o protobuf, ele é uma boa pedida quando a gente olha em questão de Edge Computing. Quando a gente fala de Edge Computing, a gente pensa sempre em otimização, em melhorar as coisas. Então, tirar camadas que não são necessárias. E o protobuf tem uma eficácia em questão de serialização das suas estruturas. Então, ele é muito bom para trafegar dados. Então, você diminui também a questão de latência usando o protobuf. A gente tem aqui o EdgeX Foundry, esse daqui ele é uma plataforma também, pensando aqui, uma plataforma que ajuda você a implementar Edge Computing, então ele te dá ferramentas SDKs onde você consegue colocar dentro dos seus devices e você tem um gerenciamento utilizando essa plataforma. A gente tem Onyx Runtime. Ele é um runtime que você coloca dentro do seu dispositivo Edge. E ele vai te ajudar na questão, olhar ali, questão de IA, questão de Machine Learning, e ele te dá uma eficácia. Então, ele é como se fosse um runtime, onde você consegue utilizar as bibliotecas dele para otimizar a questão de treinar o modelo, de utilizar o modelo, olhando para Machine Learning. treinar o modelo, de utilizar o modelo, olhando para a Machine Learning. A gente tem um MQTT, normalmente utilizado em comunicação machine to machine, mas ele é um protocolo onde ele tem uma grande eficácia na questão da sua comunicação entre duas pontas. Ele é um protocolo muito utilizado na hora que você olha em Edge Compute e IoT, tá ele é um protocolo muito utilizado na hora que você olha em edcompeer e iot porque ele é leve né então ele traz uma robustez por ser um protocolo novo em si roubos cada né mas também ele te traz essa leveza né a questão de ser leve ali então tentar diminuir a latência numa comunicação de mensageria. A gente tem o K3S, então na verdade o que é o K3S? Ele é um Kubernetes, então a gente escuta muito falar sobre o Kubernetes, ele é um Kubernetes pensado em Edge Computing, então o K3S tem uma grande lapidação de melhorar a performance do Kubernetes, olhar todo o seu conceito, todo o seu ec CDN, você criar seu device e o seu device necessita rodar as suas páginas, entre aspas, próximo do seu cliente, está dentro de um Kubernetes, você poderia utilizar o K3S. A gente tem o KubeEdge. O KubeEdge, na verdade, já é um pouquinho diferente do K3S. O CubeEdge, na verdade, é como se você fosse um Node dentro do Kubernetes. Ele também tem uma parte de gerenciamento parecido com o Kubernetes, enfim. Mas a grande ideia dele é que os seus dispositivos Edge sejam um nó de processamento do seu parque. Então, ele ajuda na questão de você distribuir suas aplicações, um exemplo, em vários outros ADD Computers. Então, se você estiver em uma rede, você consegue gerenciar aquele seu Kubernetes, entre aspas, mais light, olhando o Cube Edge. OpenCV, então, muito utilizado ali para você fazer análise de imagens. O OpenCV, dependendo, está num dispositivo Edge, olhando ali e identificando, por exemplo, uma pessoa, um carro, uma placa. uma pessoa, um carro, uma placa. Então, ele é muito utilizado também nesse quesito de Edge Computing quando você quer fazer processamentos de imagem. Então, numa câmera. Então, é muito usado em Edge Computing. Esse OpenCV. E aí, aqui a gente traz também o TensorFlow Lite, né? Então é uma versão do TensorFlow, porém repaginada, melhorada e customizada pensando em dispositivos Zed. Então em dispositivos que precisam ter esse processamento reduzido, né? Então poder de processamento reduzido. E aí você tem todo o poder ali do machine learning do tensor flow né então você consegue usar o tensor flow no dispositivo é de com grandes otimizações então aqui nessa parte aqui é eu trouxe uma série de sopa de letrinhas aqui uma série de bibliotecas ferramentas sdk as plataformas para vocês entenderem a gama do que é o Edge Computing e para vocês entenderem que as empresas, elas vêm otimizando o Edge Computing. O que eu quero dizer com isso? Elas criam, às vezes, ferramentas que são muito poderosas, mas necessitam de um poder de processamento gigantesco e aí elas começam a extrair dessas ferramentas coisas que poderiam ser rodadas ali executadas muito mais próximas dos seus clientes isso qual que são os ganhos né de novo você consegue ter uma resposta rápida tá então é aqui eu trago um pouquinho da nossa, um pouquinho da gama de Edge Computing, olhando em outros contextos, olhando em questão de ferramenta, você vai ter que entender quais são as ferramentas ideais para o seu negócio, quais são suas bibliotecas, seus SDKs, plataformas e uma série de outras coisas que vão te ajudar ali no desenvolvimento de edcompoer no desenvolvimento da sua aplicação tá então é se eu for olhar um pouco aqui né é como se fosse uma coxa de retalho né é como se eu conseguisse pegar várias peças do lego aqui eu vou colocando essas peças pra mim desenvolver meu edcompoer tá então vou pegando coisas queças para mim desenvolver meu Edge Compute. Então, eu vou pegando coisas que são boas ali de uma plataforma, utilizo ela, vou pegar uma outra biblioteca que é boa, e aí eu vou montando aqui meu cenário de Edge Compute como um todo. E agora, pessoal, também falando ainda um pouquinho do gancho ali na questão de desenvolvimento, né? Então, quais são as IDEs que a Edcomputing necessita ali ou que você pode utilizar para desenvolver a Edcomputing, né? Para o seu negócio, para a sua aplicação ali, tá? Então, vamos começar aqui um pouquinho. sua aplicação ali tá então vamos começar aqui um pouquinho uma das idéias que é utilizada ali no quesito de edcomputing é uma idéia simplificada é bem leve ela é uma idéia que ganhou foi ganhando também um pouco de espaço aí no desenvolvimento de iot né de devices, e ela pode ser utilizada também ali pra gente usar, pra construir alguma aplicação, né, de Edge Computing, tá, que é a ideia do Arduino, né, então, Arduino, só pra vocês lembrarem, né, eu acho que é uma coisa que dá uma desmistificada na questão do hardware e uma simplificada, né, então a galera começa a conseguir utilizar hardware ali para desenvolver coisas simples, enfim, né? Com módulos, enfim. E aí o Arduino traz um pouco dessa questão aí de desenvolvimento. E você pode utilizar o Arduino para desenvolver seu Edge Compute, para colocar suas lógicas ali. Então, ele tem um pouquinho ali de C, um C que eles deram uma customizada, entre aspas, mas ele tem uma abordagem de um processamento muito mais próximo ali do seu cliente, muito nas suas fontes geradoras. Então, o Arduino te ajuda também um pouquinho no desenvolvimento de Edge Compute. Então o Arduino te ajuda também um pouquinho no desenvolvimento de Edge Compute. E aí trago uma outra IDE muito conhecida, e é uma IDE que tem uma robustez e vem ganhando cada vez mais espaço no desenvolvimento de aplicações. E ela também é utilizada em Edge Compute tá então quando a gente olha o Edge Compute as bibliotecas as IDS que são utilizadas no contexto de desenvolvimento de aplicação elas também podem ser utilizados aqui dentro de Edge Compute é o caso aqui do Visual Code né então é muito utilizada ela tá até mesmo um exemplo ela consegue fazer as mesmas funcionalidades barra debugues de uma plataforma como o Arduino. Então, você consegue plugar um device ali, fazer debug, testar, fazer uma série de coisas dentro da biblioteca e utilizar N plugins. Então, o que é grande e rico aqui também, além da plataforma, da simplicidade do Visual Studio Code é a questão dos plugins. Então você tem muitos plugins para você poder desenvolver a questão de Edge Computing e da sua aplicação para ganhar uma eficácia. A gente já traz aqui uma outra IDE que também tem um grande apelo. É uma IDE muito robusta quando a gente olha no desenvolvimento dos nossos softwares tradicionais. É a plataforma da IntelliJ, a IntelliJ tem uma gama de IDS para cada linguagem de programação, então a IntelliJ tem uma biblioteca específica para ser um exemplo. Então, o C não é muito simples. Então, logo, quando a linguagem não é muito simples, às vezes você tem uma ideia que tem uma robustez, uma característica que traga uma leveza, uma simplicidade, é interessante. Então, a IntelliJ tem plugins também, um pouco mais reduzido comparado ao Visual Studio Code, mas tem plugins que também te ajudam. Intelij tem uma plataforma de Golang, então você consegue também desenvolver para Golang, para o seu Edge Computing, para Python e uma série de outras linguagens. Então ela é muito robusta, é uma plataforma que algumas vezes são pagas, que a IntelliJ você consegue também, não que as outras também você não tenha, mas a IntelliJ tem algumas ferramentas interessantes para você melhorar a performance da sua aplicação. Então, é bem interessante também olhar para a IntelliJ quando a gente fala de Edge Computing. E uma outra aqui que a gente usa bastante no nosso mundo Linux, que é o nosso Vim. O Vim é um pouquinho melhor do que o VI, mas também eu acho que vale comentar aqui que as plataformas, não é uma IDE em si, mas os nossos editores de texto, nossos editores ali e outras plataformas que são mais leves na hora de desenvolvimento, elas também podem ser utilizadas em Edge Computing, tá? Apesar delas não trazerem tanta robustez, tantos ganhos no seu desenvolvimento, mas elas podem sim ser cogitadas para fazer algum script, um exemplo, para que elas possam também você desenvolver funcionalidades básicas. Talvez, por que eu preciso comprar uma plataforma paga, onde eu posso desenvolver aqui de uma forma simples e rápida, no meu próprio editor de texto aqui. Então, o Vim é um exemplo, o VI é outro exemplo disso, nosso bloco de notas no Windows, então tem todo esse contexto aqui. Então quando a gente olha para a questão de ideias, na verdade eu trouxe algumas que talvez a gente escute um pouquinho mais, a gente usa mais no mercado, no dia a dia, mas a gente não pode se prender somente a isso, somente a essas ideias. O mercado hoje existe uma gama de ideias, uma gama de formas de desenvolver, desenvolvimento ali, e você tem que também entender quais são as melhores ali para o seu dia a dia quais que você se adapta melhor tá então é contexto de ideia é de Compute ele é muito variado tá e ela também usa boas práticas né as boas práticas ali quando a gente olha a questão do desenvolvimento né de aplicações tradicionais tá e as ideias vão te ajudar nesse desenvolvimento, barra, discover das suas necessidades, enfim, dentro de Edge Computing.