Prévia do material em texto
PROGRAMAÇÃO BACK-END E-book 4 Ariel da Silva Dias Neste E-Book: INTRODUÇÃO ���������������������������������������������� 3 INTERNET DAS COISAS ����������������������������4 Introdução ao conceito de internet das coisas ������4 O que é uma “coisa”? �����������������������������������������������7 Sensor-usuário ���������������������������������������������������������9 Segurança em Internet das Coisas ���������������������� 12 ARQUITETURA ORIENTADA A SERVIÇO �������������������������������������������������������15 Stand-Alone ����������������������������������������������������������� 16 Cliente-Servidor e web ������������������������������������������ 16 Definição de SOA �������������������������������������������������� 18 O que é serviço? ���������������������������������������������������� 19 Implementações SOA ������������������������������������������� 20 MICROSERVIÇOS �������������������������������������� 22 JAVASCRIPT OBJECT NOTATION ��������24 Diferença entre SOA e microsserviço ������������������ 25 NODE-RED E DESENVOLVIMENTO DE APLICAÇÕES ���������������������������������������28 Primeira aplicação ������������������������������������������������ 30 Serviço de cálculo matemático ���������������������������� 33 CONSIDERAÇÕES FINAIS ���������������������� 35 SÍNTESE �������������������������������������������������������36 2 INTRODUÇÃO Estudaremos os principais conceitos referentes à Internet das Coisas (do inglês Internet of Things — IoT), um conceito disruptivo que está cada vez mais em voga� Diversos outros conceitos surgiram a partir da IoT, como cidades inteligentes, casas inteligentes, fazendas inteligentes, entre outros� Estudaremos, ainda, dois conceitos importantís- simos: Arquitetura Orientada a Serviço (SOA) e Microsserviço� Ambos têm o objetivo de integração e modularidade; entretanto, há diferenças entre eles, que fazem com que o microsserviço seja mais utili- zado do que SOA nos dias de hoje� Na sequência, abordaremos o Node-Red, uma ferra- menta desenvolvida pela IBM cujo foco é a Internet das Coisas. Por fim, teremos a possibilidade de de- senvolver dois serviços e consumi-los� Bons estudos! 3 INTERNET DAS COISAS Introdução ao conceito de internet das coisas O sonho de uma casa inteligente, na qual a geladeira avise quando o leite estiver acabando ou que uma torradeira entregue uma torrada quentinha todos os dias pontualmente às 7 horas da manhã, ocupa a imaginação popular há anos� Filmes e desenhos animados deram vida às casas automatizadas, com robôs fazendo tudo para os humanos em uma vida 100% conectada� Alguns inventores deram vida a essas ideias, que outrora eram apenas ficção científica, e começa- ram a expô-las em feiras ao redor do mundo, como aspiradores de pó inteligentes que limpam a casa automaticamente, móveis autolimpantes que podiam se movimentar para seus ocupantes etc� De um modo geral, o benefício desses aparelhos visa a libertar os ocupantes da casa do trabalho domés- tico� Em 1959 ocorreu uma exposição em Moscou (Rússia), a Whirlpool criou uma feira futurística cha- mada Miracle Kitchen, com o intuito de mostrar aos Soviéticos como era a vida na chamada “América Capitalista”� Dentre os equipamentos do futuro ex- postos na feira, havia uma lavadora de louças que limpava a mesa, e um robô que varria o chão� 4 Teve um diálogo muito interessante entre Richard Nixon e Nikita Khrushchev nessa feira, que ficou co- nhecida como The Kitchen Debate� Durante essa con- versa, Nixon mostrava o lado bom do capitalismo e as facilidades de que os soviéticos estavam privados� Por seu turno, Khrushchev dizia que não esperava ser surpreendido com tais facilidades, e que o conjunto de coisas apresentadas já fazia parte do cotidiano das pessoas na União Soviética� SAIBA MAIS Saiba mais sobre esse diálogo, consultando So- viet Citizens See the Future, disponível em: ht- tps://flashbak.com/soviet-citizens-see-the-future- -photos-from-the-1959-kitchen-debate-381510/� As primeiras invenções tornaram a casa mais inteli- gente e possibilitaram que seus ocupantes ativassem ou desativassem alguma “coisa” sem se levantar e, em alguns casos, sem mexer um dedo� Porém, apesar de serem inteligentes, essas invenções não se conectavam a mais nada; logo, toda a sua funcio- nalidade era limitada� Em 1983, a ARPANET adotou um conjunto de pro- tocolos da Internet: TCP/IP� O protocolo estabelece padrões de como os dados digitais devem ser trans- mitidos, recebidos e roteados� Com isso, iniciaram-se as bases da internet moderna, bem como a possibi- lidade de conectar estas “coisas” e fazerem elas se comunicarem� 5 https://flashbak.com/soviet-citizens-see-the-future-photos-from-the-1959-kitchen-debate-381510/ https://flashbak.com/soviet-citizens-see-the-future-photos-from-the-1959-kitchen-debate-381510/ https://flashbak.com/soviet-citizens-see-the-future-photos-from-the-1959-kitchen-debate-381510/ Em 1990, o engenheiro de software John Romkey construiu uma torradeira para uma feira de compu- tadores da Interop� Não era uma simples torradeira, pois foi a primeira “coisa” a se conectar à internet e a fazer o uso do protocolo TCP/IP� Romkey inseriu algumas fatias de pão na torradeira e, com um co- mando no computador, a ligou� A torradeira mágica de Romkey, que não exigia apertar qualquer botão para ser ligada, mostrou a todos como seria o mundo de “coisas” conectadas à internet� Apesar disso, ainda não existia o termo “internet das coisas”, que foi cunhado em uma apresentação por Kevin Ashton em 1999, da empresa Procter & Gamble� Nessa apresentação, Ashton descreveu um sistema em que os sensores agiam como os olhos e os ouvidos de um computador, uma maneira nova dos computadores verem e sentirem o ambiente em sua volta� Os anos se passaram, tivemos o aumento de residên- cias com internet, acelerado crescimento do Wi-Fi e o custo de sensores e componentes computacionais caindo� Nesse cenário, as empresas começaram a explo- rar a criatividade e os recursos disponíveis� Assim, iniciou-se a produção de invenções que eram ape- nas sonhos ou cenas de filmes de ficção científica: cafeteiras inteligentes que entregava o café pronto e quentinho em um horário predeterminado, fornos com precisão em temperatura que não deixava o bolo queimar, concluindo a operação assim que o 6 bolo estivesse totalmente assado e geladeiras que avisam quando o leite está acabando� SAIBA MAIS Em 2000, a LG lançou um refrigerador que era co- nectado à internet e que, por meio de sensores e câmeras, analisava o conteúdo presente nas pra- teleiras internas� Esta “coisa” custava, na época, US$ 20 mil� O que é uma “coisa”? Para que um sistema seja considerado um sistema Internet das Coisas (IoT), ele precisa de uma combi- nação de três componentes: sensores (e atuadores), conectividade e pessoas/processos� O mais impor- tante é ter a “coisa”, que pode ser qualquer coisa equipada com sensores, desde uma caneta até uma máquina em uma indústria� O objeto, para ser considerado uma “coisa”, precisa possuir um sensor, bem como ser rastreado no tem- po ou no espaço� Por exemplo, ao monitorar uma caneta, além de saber a sua carga de tinta atual, também deve ser possível saber em qual lugar do mundo ela está, bem como quando (tempo) e por quem ela foi utilizada� Nesse exemplo da caneta, só há uma condição para rastreá-la: precisa estar conectada em uma rede� 7 Essa conexão pode ser por Wi-Fi, Bluetooth, satélite, NFC, Zigbee ou qualquer outro meio que possibilite os sensores da caneta de enviarem dados� Outro componente importante são as pessoas ou processos� Quem está interessado nos dados le- vantados sobre a caneta? Pode ser uma pessoa que precisa saber, exatamente, quando está acabando a tinta da caneta, ou pode ser um sistema de uma empresa (processo) que monitora quais são as re- giões do planeta que mais compram e usam suas canetas, bem como qual é a frequência de compra de um cliente, númerode vendas por mês e até rastrear, cliente por cliente, o nível de tinta� Observe outro exemplo, que está ilustrado na Figura 1� Figura 1: Geladeira inteligente. Fonte: SensorWeb (2015). Temos uma pessoa que, ao sair de casa, é avisada pela geladeira: “Não esquecer de comprar leite!”� Esse 8 simples aviso/comando da geladeira pode envolver um processamento muito mais complexo do que imaginamos� Nessa relação, temos um sensor-usuário e um sen- sor-objeto (a geladeira); temos um processo que usa as informações dos sensores para tomar uma de- cisão. Por fim, temos a comunicação, que é a ação de informar ao usuário sobre a decisão tomada pela geladeira� Vamos então analisar cada um dos itens envolvidos nessa relação e possíveis perguntas que podem sur- gir a respeito de cada componente: Podcast 1 Sensor-usuário Qual é o tipo de sensor que verificou se a pessoa estava saindo de casa? Foi um sensor na porta, GPS ou uma triangulação de antenas do celular? É neces- sário definir o tipo de sensor que rastreará as ações e interações do usuário� A pessoa que está saindo é responsável por realizar as compras? Note que essa é uma questão importan- te que o projetista deve considerar� Se a geladeira en- viar uma mensagem para todas as pessoas da casa, talvez esteja gastando processamento desnecessá- rio, pois pode enviar uma informação para alguém 9 https://famonline.instructure.com/files/954641/download?download_frd=1 que não é responsável direto pela compra� Também deve distinguir crianças e adultos, bem como pesso- as capazes ou não de realizar uma compra� Qual é a razão de a pessoa sair de casa? Trata-se de outra questão importante, afinal, a pessoa pode sair de casa para levar o lixo até a lixeira ou para pegar uma correspondência� Não necessariamente, ao sair, a pessoa vai ao mercado ou padaria� Note que uma simples ação de sair de casa leva a geladeira a processar uma série de informações, todas com base em um contexto� Somente conhe- cendo o contexto geral da família e da casa, por meio de cruzamento de informações, é que será possível enviar uma notificação. Geladeira avisa que não há leite Qual é o tipo de sensor que está na geladeira? Precisamos definir que tipo de sensor usar. Na pra- teleira da geladeira, por exemplo, pode haver um lugar para colocar o leite e, nesse lugar, ter uma célula de carga� Logo, supondo que uma caixa de leite pese 1kg, se a célula de carga informar o peso de 500g, isso significa que o leite está pela metade. O leite é necessário? Pode ser que 500g ainda su- pram a necessidade da família� Porém, pode ser que 900g seja um sinal de alerta de que o leite está aca- bando� Tudo depende de um histórico de consumo, por isso chamamos a atenção novamente para o contexto� 10 Por fim, vale analisar: tem pouco leite ou não tem lei- te? Aqui entra a questão de prever� Em quanto tempo não teremos mais leite, com base nos dados atuais medidos? Isso é possível através de algoritmos de rede neural ou machine learning, por exemplo� Informação dos sensores para tomar uma decisão Quais são as regras? Aqui, entra o uso do tão falado contexto. As regras podem ser fixas, por exemplo, sempre envie a notificação quando a quantidade de leite estiver em 50% ou envie uma notificação às segundas-feiras, independentemente da quantidade de leite� As regras podem ser dinâmicas e, nesse caso, utilizaríamos machine learning� Por exemplo, mediante o consumo de leite dos últimos três meses, qual é a ação a ser tomada agora? Note que, neste ponto, entra a previsão associada ao contexto� Informar o usuário sobre a decisão Como será realizada a comunicação? É necessário definir o “como”, por exemplo, será uma mensagem SMS ou por WhatsApp, um e-mail ou uma notificação em aplicativo no celular? Quando será realizada a comunicação? Refere-se à frequência do envio de notificação. Por exemplo, se enviar uma mensagem de madrugada, certamente não adiantará muito, a não ser que a pessoa esteja na rua e próximo a um mercado� Mais uma vez o contexto é importante� 11 Nessa simples comunicação entre a geladeira e o usuário, repare quantas análises são possíveis� Podcast 2 Segurança em Internet das Coisas Todas as facilidades e possibilidades de utilizar os dispositivos conectados à internet eventualmente nos faz pagar um alto custo� Podemos controlar a luminosidade de lâmpadas e regular os termostatos através de smartphones, com comandos de voz ou piscar de olho� Tudo isso graças aos dispositivos estarem conectados à internet� Conseguimos entrar em casa abrindo a fechadura digital com nossa bio- metria; é possível monitorar o quarto do bebê a quilô- metros de distância de casa, entre outros exemplos� Considere os caprichos da conectividade com a in- ternet: quando o Wi-Fi cai, seus dispositivos também caem� Problemas com o roteador ou provedor de internet, que resolveu fazer uma parada técnica� Isso significa que você não pode regular o calor com o termostato inteligente ou desbloquear a fechadura da porta inteligente� As coisas que costumavam ser fáceis tornam-se po- tencialmente defeituosas, ou impraticáveis, quando exigem um comando por smartphone em vez de um botão físico� Muitos desses dispositivos também 12 https://famonline.instructure.com/files/954642/download?download_frd=1 são executados em software proprietário, ou seja, se o serviço com o seu prestador de software da fechadura eletrônica for interrompido, você não entra nem sai de casa� Acrescenta-se ainda o risco de conectar estas coisas à internet, uma vez que tudo o mais que estiver no seu Wi-Fi estará vulnerável a hackers� O risco não é de mudar o horário da entrega de sua torrada de 7 horas da manhã para as 10 horas� O risco é um hacker, acessando a fechadura inteligente, abrir a porta da frente de sua casa ou, no caso da torradeira, enviar uma série de comandos gerando um possível superaquecimento e, consequentemente, um incên- dio na sua cozinha� Ao desenvolver dispositivos para a internet das coi- sas, devemos pensar prioritariamente na segurança� Nesse sentido, podemos perceber que as empresas desenvolvedoras não estão preocupadas em colocar uma faixa de proteção ou um “antivírus” no dispo- sitivo, afinal, a desenvolvedora da máquina de lavar roupa não detém conhecimentos e técnicas espe- cíficos para gerar sistemas seguros em ambientes cibernéticos� É precisamente neste ponto que entra o desenvolve- dor de aplicações web� Cada “coisa” é uma aplicação web, desse modo, deve-se preocupar em primeiro lugar com a segurança� Outra questão importante é a da privacidade� Câmeras e microfones de notebooks, celulares, bem como as câmeras de segurança espalhadas pela 13 sua casa estão assistindo e ouvindo você de modo intermitente, ou seja, estão coletando dados a todo momento e, de um modo ou de outro, esses dados têm valor� Google e Apple admitiram recentemente que as gravações capturadas por seus alto-falantes inteligentes são revisadas pelos contratados, incluin- do trechos de áudio estranhos e íntimos� A internet das coisas está em constante expansão, e isso não traz consequências apenas para a pri- vacidade pessoal� Pode criar uma rede de olhos e ouvidos em computadores onde quer que estejamos� E qual é o impacto de esses dados caírem em mãos indevidas? Fica aqui uma questão para se refletir. 14 ARQUITETURA ORIENTADA A SERVIÇO Os sistemas web cresceram em importância nos últimos anos, devido à integração dos dados e à pos- sibilidade de acessar dados e recursos em qualquer lugar e a qualquer momento� Se o número de siste- mas aumenta, aumentam igualmente os paradigmas para desenvolvimento de sistemas, de modo a aten- der as necessidades de mudanças� Com o passar dos anos, desde o advento dos com- putadores até os tempos atuais com o surgimento das “coisas”, saímos dos sistemas monolíticos, pas- samos pela arquitetura cliente/servidor, arquitetura três camadas e chegamos ao chamado sistemasbaseados em serviços� A Figura 2 representa essa evolução� Em seguida, analisamos cada etapa� Standalone ClienteServidor Web SOA Futuro��� Figura 2: Evolução dos sistemas. Fonte: Autoria própria. 15 Stand-Alone ● Definição: Nesta arquitetura, o sistema de software funciona em apenas um único hardware local, sem compartilhar informações pela rede� ● Característica: A característica principal é a arqui- tetura monolítica� ● Exemplo: Atualmente, são raros os sistemas stand -alone, são encontrados nos chamados “softwares de caixinha”, como o controle de estoque, controle financeiro, entre outros. Cliente-Servidor e web ● Definição: É a presença de um computador tido como o centralizador ou servidor que, através da rede, compartilha informações com os computado- res clientes� ● Característica: Pode ser de duas, três camadas ou multicamadas� ● Exemplo: Aplicações web, servidor de banco de dados, servidor de arquivos� O modelo de aplicativo web vai depender do número total de servidores e bancos de dados usados, podendo ser um dos três seguintes: ○ Com um servidor e um banco de dados: modelo de componente de aplicativo web mais simples e menos confiável. Esse modelo usa um único servidor e um único banco de dados� Um aplicativo da web baseado 16 nesse modelo será desativado caso o servidor seja desativado. Portanto, não é muito confiável. Esse modelo de componente de aplicativo normalmen- te não é usado para aplicativos reais, sendo usado principalmente para executar testes� ○ Com dois ou mais servidores e um banco de dados: o objetivo desse tipo de modelo de componente de aplicativo web é que o servidor não armazena ne- nhum dado� Quando o servidor obtém as informações de um cliente, ele as processa e as grava no banco de dados, que é gerenciado fora do servidor� Às vezes, isso também é chamado de arquitetura sem estado� São necessários pelo menos dois servidores da web para esse modelo, pois são suficientes para evitar falhas� Mesmo quando um dos servidores da web fica inoperante, o outro assume o controle. Todas as solicitações feitas são redirecionadas automa- ticamente para o novo servidor e o aplicativo web continua a execução. Portanto, a confiabilidade é maior em comparação ao servidor único com modelo de banco de dados inerente� No entanto, se o banco de dados travar, o aplicativo web também trava� ○ Com múltiplos servidores e múltiplos banco de dados: modelo de componente de aplicativo web mais eficiente, porque nem os servidores da web nem os bancos de dados têm um único ponto de falha� Existem duas opções para esse tipo de modelo, que armazenam os dados idênticos em todos os bancos de dados empregados ou distribuí-los igualmente entre eles� No geral, não são necessários mais do que dois bancos de dados no primeiro caso, enquanto 17 no segundo caso alguns dados podem ficar indispo- níveis no cenário de uma falha no banco de dados� Quando a escala é grande, ou seja, tem mais de cinco servidores da web ou bancos de dados ou ambos, é recomendável instalar balanceadores de carga� Definição de SOA A Arquitetura Orientada a Serviço (SOA) é um fra- mework que permite que os serviços se comuniquem entre si em diferentes plataformas e idiomas, im- plementando o que é conhecido como “sistema de acoplamento flexível”. Embora o conceito de SOA exista há muitos anos, foi somente na última década que ele teve destaque nas tecnologias relacionadas a software� Os sistemas de acoplamento flexível permitem que um cliente — “coisa” ou computador cliente que por si só pode ser um serviço — possa se comunicar com outro serviço, mesmo que não haja uma relação direta ou que eles não estejam intimamente relacio- nados� Essa comunicação facilitada é alcançada através da implementação de uma interface espe- cífica, capaz de executar as ações necessárias para permitir a transmissão de dados� Considere o seguinte exemplo: três pessoas estão em uma sala para conversarem, um brasileiro, um alemão e um japonês� Eles não sabem falar a língua um do outro� Entretanto, os três sabem falar uma 18 língua em comum, o inglês� Nesse exemplo, não é necessário que o brasileiro aprenda japonês ou que o alemão aprenda o português, basta que falem aquela língua em comum� Em linhas gerais, é assim que o SOA trabalha� A comunicação sem as restrições dos serviços en- volve conversa entre um serviço e outros� Há uma variedade de linguagens de programação a partir das quais os sistemas web são criados, sendo que nem todas essas linguagens podem interagir fluen- temente, sem problemas de comunicação� Ao usar o framework SOA, não é necessário que o cliente entenda a linguagem que está sendo usada pelo ser- viço, mas sim uma interface estruturada capaz de processar a transmissão entre o serviço e o cliente� O que é serviço? Um serviço é uma funcionalidade que pode ser aces- sada remotamente, com atuação e atualização inde- pendentes, como recuperar um extrato do cartão de crédito online� Um serviço possui quatro proprieda- des, segundo uma das definições de SOA: ● Representa logicamente uma atividade de negócios com um resultado especificado. ● É independente� ● É uma caixa preta para seus consumidores� ● Pode consistir em outros serviços subjacentes� 19 Um serviço é reutilizável, fácil de programar e inde- pendente da linguagem ou plataforma de programa- ção� Pode ser pensado como uma função de apli- cativo reutilizável, usada como um componente em um processo de negócios� Um serviço é, portanto, capaz de fornecer essa função repetidamente a vá- rios solicitantes de serviço� É essa capacidade de reutilizar o serviço e a prática de dividir cada proces- so de negócios em uma série de serviços que geram os benefícios de eficiência de SOA. Implementações SOA SOA é independente de fornecedores e tecnologias� Isso significa que uma grande variedade de produ- tos pode ser usada para implementar a arquitetura� A decisão do que usar ou de qual plataforma usar depende do objetivo final do sistema. Normalmente, SOA é implementada com serviços da web, como Simple Object Access Protocol (Soap) e Web Services Description Language (WSDL)� Outras opções de implementação disponíveis incluem: ● Windows Communication Foundation (WCF)� ● gRPC� ● Sistema de mensagens (Java Message Service, JMS; ActiveMQ e RabbitMQ)� As implementações de SOA podem usar um ou mais protocolos e uma ferramenta de sistema de arquivos 20 para comunicar dados� Os protocolos são indepen- dentes da plataforma e da linguagem de programa- ção subjacentes� A chave para uma implementação bem-sucedida é o uso de serviços independentes que executam tarefas de maneira padronizada, sem preci- sar de informações sobre o aplicativo de chamada e sem que o aplicativo de chamada exija conhecimento das tarefas que o serviço executa� 21 MICROSERVIÇOS A arquitetura de microsserviços é mais comumente chamada de Microsserviços� Em contraste com o ambiente monolítico tradicional, os microsserviços abrangem qualquer maneira de projetar aplicativos como um conjunto de serviços, que podem ser im- plantados independentemente� A arquitetura microsserviço permite o desenvolvi- mento de uma única aplicação (web, desktop, mobile etc�) com um conjunto de pequenos serviços, cada um sendo executado em seu próprio tempo e se co- municando com mecanismos leves, explorando os recursos HTTP� Por exemplo, vamos supor que você deseja criar uma nova aplicação web� Nela você terá que apresentar a temperatura atual do local onde o usuário está� Se não tivéssemos o conceito de microsserviços, você teria que colocar sensores em todas as cidades do mundo e capturar a informação� Complexo, não é? Porém, existem muitas empresas que já fazem essa aferição, então, você não precisa se preocupar com isso� E essas empresas compartilham (algumas me- diante pagamento) os dados do clima, como tempe- ratura, velocidade do vento, humidade, entre outros, no formatode microsserviços� O seu aplicativo rea- liza uma solicitação e o serviço web de clima retorna as informações� Bem mais simples, não é? 22 Agora, considere outro exemplo� Você está desenvol- vendo um sistema web e possui uma ideia de algorit- mo: em um formulário de cadastro, quando o usuário digitar o CEP, automaticamente será carregado o nome da rua, cidade, estado e bairro� Desse modo, você precisa ter o CEP do Brasil todo cadastrado no banco de dados da sua aplicação web� Não parece ser a maneira mais prática� Existem alguns sites, como o ViaCep, que, se você enviar o CEP, eles retornam para o seu sistema os dados completos referentes ao CEP informado� Com isso, você não precisa ter uma base de dados com todos os CEP do Brasil, basta apenas consumir esse microsserviço� 23 JAVASCRIPT OBJECT NOTATION O JavaScript Object Notation (JSON) é um formato legível e mínimo para a estruturação de dados� É usado principalmente para transmitir dados entre um servidor e um aplicativo da web, como uma al- ternativa ao Extensible Markup Language (XML)� Essa é uma possibilidade na comunicação entre a aplicação web e um microsserviço� O JSON, como o nome indica, é um objeto JavaScript que segue o formato da Figura 3: Figura 3: Arquivo JSON.Fonte: Autoria própria. 24 A figura mostra um arquivo JSON gerado no ViaCep. As duas partes principais que compõem o JSON são chaves e valores� Juntos, formam um par de chave / valor� ● Chave: uma chave é sempre uma cadeia de carac- teres entre aspas à esquerda do sinal de dois pontos� Na Figura 3, “cep”, “logradouro”, “complemento” e “bairro” são exemplos de chaves� ● Valor: um valor pode ser uma sequência, número, expressão booleana, matriz ou objeto� Na Figura 3, temos como valores “010001-000”, “Praça da Sé” e “São Paulo” como exemplos� ● Par chave : valor: um par de chave valor segue uma sintaxe específica, com a chave seguida de dois pontos seguida pelo valor� Os pares chave / valor são separados por vírgula, conforme consta na Figura 3� Em geral, com o JSON a comunicação entre aplicati- vo web e microsserviços fica mais prática. O uso do JSON tem sido a grande opção dos desenvolvedores e das empresas� Diferença entre SOA e microsserviço Nas duas arquiteturas, cada serviço tem uma certa responsabilidade, diferentemente de uma arquitetura monolítica. Assim, os desenvolvedores têm a flexi- bilidade para desenvolver os serviços em diferentes tecnologias, o que permite à equipe escolher o caso 25 de uso mais relevante para um serviço� No entanto, as duas arquiteturas diferem nos seguintes aspectos: ● Implantação e escalabilidade de serviços: A implan- tação do serviço pode ser atribuída e gerenciada em várias equipes� No entanto, cada membro da equipe precisa conhecer o mecanismo de comunicação co- mum em SOA, que não é uma dependência ao criar um aplicativo com arquitetura de microsserviços� No caso de microsserviços, os serviços podem ser operados e implantados independentemente, o que difere da SOA� Portanto, é mais fácil implantar uma nova versão de serviços com frequência e, assim, dimensionar o aplicativo de acordo� ● Tolerância a falhas: Em SOA, um Enterprise Service Bus (ESB) pode ser um ponto único de falha, o que afeta o funcionamento de todo o aplicativo� Um ESB implementa a comunicação entre aplicativos que interagem mutuamente no SOA� Os microsserviços são tolerantes a falhas, pois todos os serviços e sua implantação são independentes um do outro� ● Compartilhando armazenamento de dados: Em SOA, os serviços compartilham o armazenamento de dados, ao passo que nos microsserviços cada serviço pode ter um armazenamento de dados in- dependente� O armazenamento de dados traz seu próprio conjunto de vantagens e desvantagens� Por exemplo, embora os dados possam ser reutilizados entre todos os serviços, podem trazer dependência entre os serviços devido ao acoplamento rígido� 26 ● Tamanho e escopo do serviço: Uma das principais diferenças entre microsserviços e SOA é o tamanho e o escopo dos serviços� Os microsserviços são significativamente menores em tamanho. Por outro lado, uma SOA pode ser monolítica ou ter vários microsserviços� 27 NODE-RED E DESENVOLVIMENTO DE APLICAÇÕES O Node-Red é uma ferramenta de desenvolvimento visual, baseada em um navegador desenvolvido ori- ginalmente pela IBM para projetos da Internet das Coisas� Entretanto, com o tempo, tem sido utilizado para desenvolver outros tipos de aplicativos� O Node-Red permite que os desenvolvedores cons- truam serviços e os disponibilizem na web� Isso pode ser feito com uma interface visual de arrastar e soltar� Vários componentes no Node-Red são conectados juntos para criar um fluxo. A maior parte do código necessário é criada automaticamente� Para começar a instalar o Node-Red, é necessário, primeiramente, instalar o NodeJS e o NPM� Depois de terem sido instalados e configurados, podemos prosseguir e instalar o Node-Red� Para instalá-lo, faça o seguinte comando no prompt de comandos: sudo npm install -g --unsafe-perm node-red Em seguida, você pode executar o Node-Red digitan- do o comando node-red no prompt de comandos� A Figura 4 apresenta a tela principal do Node-Red, onde você pode interagir e desenvolver suas aplicações� 28 Figura 4: Tela principal do Node-Red. Fonte: Autoria própria. Observe a descrição de cada um dos componentes enumerados: 1. Palheta com os nós: neste campo, você encontra os nós necessários para o desenvolvimento de suas aplicações� Os principais são input, output e function� 2. Fluxo: é o espaço de fluxo, onde realizamos o de- senvolvimento de um aplicativo web� Vamos arrastar os nós da palheta de nós para cá� 3. Aba de fluxos: podemos criar mais de um fluxo, por isso, são listadas as abas. Nesse caso, a fluxo Flow 1 está ativo� 4. Guia Info: esta guia mostra as informações sobre o fluxo e sobre o nó. 5. Guia debug: quando executamos o aplica- tivo, na guia debug apresentamos a saída dos processamentos� 6. Deploy: sempre que desejamos implantar (exe- cutar) um aplicativo, ou quando fazemos alguma alteração, clicamos nesse botão. O botão só fica 29 vermelho se forem realizadas alterações; caso con- trário, fica desativado. Primeira aplicação Vamos desenvolver a primeira aplicação, para isso, utilizaremos o nó http (de input) e o nó debug (em output). Arraste-os para a área de fluxo. Vamos edi- tar o nó http conforme a Figura 5, para isso, dê dois cliques sobre o nó� Figura 5: Nó HTTP. Fonte: Autoria própria. Após aplicar essas configurações, clique em DONE. Em seguida, ligue os nós HTTP e DEBUG (agora está escrito msg�payload)� Depois disso, clique no botão deploy para implantar o serviço� Desse modo, temos um serviço web que recebe dados por HTTP utilizando o método GET� Para testarmos, 30 abra o navegador web e digite: localhost:1880/meu- -servico?mensagem=”Olá Mundo”� Vamos separar cada um dos valores presentes neste comando URL: ● localhost:1880: é o endereço web do seu servidor� ● /meu-servico: é o nome do serviço web que está sendo consumido� ● ?: separa o endereço web do conteúdo que está sendo passado como GET� ● mensagem=”Olá Mundo”: mensagem é a variável que recebe o conteúdo “Olá Mundo”� Já estudamos o método GET, aquele que passa o conteúdo pela URL� Faça o teste digitando esse en- dereço completo no navegador e pressionando Enter� Você perceberá que, na página web, nada ocorrerá� Entretanto, volte para o Node-Red e encontre a guia Debug� Lá você terá o conteúdo da Figura 6� Figura 6: Saída debug. Fonte: Autoria própria. 31 Temos, assim, um objeto JSON� A chave é “mensa- gem” e o valor é “Olá Mundo”� Para que possamos apresentar apenas a mensagem “Olá Mundo” no de- bug, precisamos modificar o nó verde debug (MSG. PAYLOAD)� Ao receber a mensagem, a variável msg�payload re- cebe o objeto JSON� Para que possamos apresen- tar somente o valor “Olá Mundo”, precisamos deixar como msg�payload�mensagem�Analise a Figura 7 com a configuração do nó debug: Figura 7: Nó debug.Fonte: Autoria própria. Depois dessa alteração, pressione DONE e, em se- guida, pressione o botão deploy� Repita o processo anterior de digitar a URL no navegador e, em seguida, pressione ENTER� Retorne ao Node-Red e observe, na guia de debug, a mensagem “Olá Mundo”� 32 Serviço de cálculo matemático Neste tópico, prestaremos um serviço que, ao receber dois valores pela URL, fará o seu cálculo matemático� Para isso, utilizaremos um nó a mais, é o nó function� Façamos a seguinte ligação da Figura 8� Note, po- rém, que temos três nós: (i) HTTP, que agora tem o endereço URL como /segundo-servico, (ii) function, que vamos editar logo mais e (iii) DEBUG que estará como MSG�PAYLOAD� Figura 8: Fluxo do novo serviço. Fonte: Autoria própria. Vamos editar o nó function� Utilizaremos nele o códi- go JavaScript para realizar as operações (Figura 9): Figura 9: Nó Function. Fonte: Autoria própria. Vamos analisar linha a linha: ● Linha 1: uma variável n1 vai receber o resultado que virá da URL� Observe que estamos pegando o valor inserido na barra de endereços, o que é retornado em msg�payload�valor1� Esse valor, apesar de ser um nú- mero, o que vem é um caractere do tipo texto� Logo, é necessário converter o conteúdo de msg�payload� valor1 para inteiro, utilizando o comando parseInt� 33 ● Linha 2: realiza-se a mesma operação da linha anterior, porém, nesta vamos capturar o valor da URL referente ao valor2 pelo comando msg�payload� valor2� ● Linha 3: nesta linha, o conteúdo msg�payload, mos- trado no debug, vai receber a soma de n1 + n2� ● Linha 4: por fim, vamos retornar o objeto msg. Ao realizar essa configuração, clique em DONE e, em seguida, em DEPLOY� Acesse o navegador novamente e digite o seguinte endereço URL: localhost:1880/segundo-servico?valor1=44&valor2=55 Neste comando, temos duas coisas diferentes: a presença do símbolo e-comercial e uma segunda variável� O e-comercial (&) é utilizado quando deseja- mos passar mais de um parâmetro pela URL� Nesse caso, o & separa a variável valor1 e seu conteúdo, da variável valor 2 e seu conteúdo� Ao retornar ao Node-Red, teremos na guia de debug o resultado da operação� SAIBA MAIS Saiba mais sobre essa ferramenta tão utilizada em IoT e também para criar microsserviços que agilizem seu trabalho, acessando https://node- red.org/docs/getting-started/local� 34 https://nodered.org/docs/getting-started/local https://nodered.org/docs/getting-started/local CONSIDERAÇÕES FINAIS Iniciamos com a apresentação de conceitos sobre Internet das Coisas, o qual cresce dia após dia graças ao número massivo de dispositivos que, diariamen- te, estão conectados à web� A internet das coisas possibilita diversas oportunidades para empresas, desenvolvedores e usuários, uma vez que integra os sistemas e coisas em um canal único� Em seguida, estudamos o padrão arquitetural SOA, um framework utilizado para integrar sistemas e que foi muito utilizado no início dos anos 2010, porém, com o surgimento do conceito de microsserviços, tem sido pouco utilizada, pois possui grande poder por trás de seu conceito� Por fim, conhecemos o Node-Red, um ambiente de- senvolvido pela IBM para o desenvolvimento no estilo “Puxe e solte”� São diversos nós que, ao serem liga- dos, possibilitam o desenvolvimento de aplicações diversas� É utilizada principalmente no desenvolvi- mento de serviços web e massivamente utilizado em Internet das Coisas� 35 SÍNTESE Microsserviços • JSON; • Diferença entre SOA e Microsserviço. Node-Red e desenvolvimento de aplicações • Primeira aplicação; • Serviço de cálculo matemático. INTERNET DAS COISAS Introdução ao conceito de IoT • O que é uma “coisa”?; • Segurança em IoT. • Definição de SOA; • O que é serviço?; • Implementações SOA. Arquitetura orientada a serviço (SOA) PROGRAMAÇÃO BACK-END Neste e-book, estudamos os conceitos de Internet das coisas e aprendemos a aplicá-los em desenvolvimento. Para isso, abordamos os seguintes tópicos: Referências Bibliográficas & Consultadas AGUILAR, L� J� Fundamentos de programação: algoritmos, estruturas de dados e objetos� 3� ed� Porto Alegre: AMGH, 2011 [Biblioteca Virtual]� ALVES, W� P� Linguagem e lógica de programação� São Paulo: Erica, 2014� [Biblioteca Virtual]� BARRETO, J� S�; ZANIN, A�; MORAIS, I� S�; VETTORAZZO, A� S� Fundamentos de segurança da informação� Porto Alegre: SAGAH, 2018� ELDER, J� O primeiro aparelho da Internet das Coisas: a torradeira “inteligente” de John Romkey� Disponível em: https://blog.avast.com/pt-br/the- -internets-first-smart-device� Acesso em: 18 abr� 2020� ELMASRI, R�; NAVATHE, S� B� Sistema de banco de dados. 6� ed� São Paulo: Pearson Addison-Wesley, 2011 [Biblioteca Virtual]� FLANAGAN, D� JavaScript: o guia definitivo� 6� ed� Porto Alegre: Bookman, 2013 [Biblioteca Virtual]� FLASHBAK� Soviet Citizens See The Future: Photos From The 1959 Kitchen Debate� Disponível em: https://flashbak.com/soviet-citizens-see-the-future- https://blog.avast.com/pt-br/the-internets-first-smart-device https://blog.avast.com/pt-br/the-internets-first-smart-device -photos-from-the-1959-kitchen-debate-381510/� Acesso em: 18 abr� 2020� HEUSER, C� A� Projeto de banco de dados. 6� ed� Porto Alegre: Bookman, 2009 [Biblioteca Virtual]� MEDEIROS, L� F� Banco de dados: princípios e prática� Curitiba: InterSaberes, 2013 [Biblioteca Virtual]� NIEDERAUER, J� Desenvolvendo websites com PHP� São Paulo: Novatec� 2004� PARDES, A� The WIRED Guide to the Internet of Things� Disponivel em: https://www.wired.com/ story/wired-guide-internet-of-things/� Acesso em: 18/04/2020� PRESSMAN, R�; MAXIM, B� Engenharia de Software: uma abordagem profissional� 8� ed� Porto Alegre: AMGH, 2016� PUGA, S�; FRANÇA, E�; GOYA, M� Banco de dados: implementação em SQL, PL/SQL e Oracle 11g� São Paulo: Pearson Education do Brasil, 2013 [Biblioteca Virtual]� SENSORWEB� IoT: A tecnologia e o Monitoramento Contínuo� 22 jul� 2015� Disponível em: https://sensorweb.com.br/tecnologia-monitora- mento-continuo-iot-1/� Acesso em: 18 abr� 2020� https://www.wired.com/story/wired-guide-internet-of-things/ https://www.wired.com/story/wired-guide-internet-of-things/ SOARES, W� PHP 5: Conceitos, Programação e Integração com Banco de Dados� 7� ed� São Paulo: Erica, 2013 [Minha Biblioteca]� W3SCHOOL� Métodos de solicitação HTTP� Disponível em: https://www.w3schools.com/tags/ ref_httpmethods.asp� Acesso em: 15 abr� 2020� INTRODUÇÃO INTERNET DAS COISAS Introdução ao conceito de internet das coisas O que é uma “coisa”? Sensor-usuário Segurança em Internet das Coisas ARQUITETURA ORIENTADA A SERVIÇO Stand-Alone Cliente-Servidor e web Definição de SOA O que é serviço? Implementações SOA MICROSERVIÇOS JAVASCRIPT OBJECT NOTATION Diferença entre SOA e microsserviço NODE-RED E DESENVOLVIMENTO DE APLICAÇÕES Primeira aplicação Serviço de cálculo matemático CONSIDERAÇÕES FINAIS Síntese