API
Conceito
O conceito de API nada mais é do que uma forma de comunicação entre sistemas.
Elas permitem a integração entre dois sistemas, em que um deles fornece informações e serviços que podem ser utilizados pelo outro, sem a necessidade de o sistema que consome a API conhecer detalhes de implementação do software.
Tipos de API e suas aplicações
Simple object access protocol (SOAP)
SOAP é um protocolo padrão projetado originalmente para possibilitar a comunicação entre aplicações desenvolvidas em diferentes linguagens e plataformas.
Como se trata de um protocolo, ele impõe regras integradas que aumentam sua complexidade e sobrecarga, desacelerando o tempo de carregamento das páginas.
Exemplo de uso: Comunicação entre um sistema de emissão de notas e a Sefaz (autorizadora de notas).
Representational State Transfer (REST)
REST é um protocolo de comunicação é “sem estado”, em outras palavras: as interações não dependem de requisições prévias.
Foi criada para ser usada em aplicações interligadas por rede, usando prioritariamente o HTTP.
As APIs REST trabalham levando as informações de uma ferramenta para outra e são bastante eficientes nesse processo. Além disso, elas são mais rápidas de criar, porque dispensam um processamento longo.
Exemplo de uso: WhatsApp Web e ferramentas de chat terceirizadas.
Resumo
Simplificando, o REST acessa os dados enquanto o SOAP executa operações por meio de um conjunto mais padronizado de mensagens. Ainda assim, na maioria dos casos, tanto REST como o SOAP podem ser usados para obter o mesmo resultado (e ambos são infinitamente escaláveis).
Entenda mais no vídeo: https://www.youtube.com/watch?v=3LHSyha0xN0
Dúvidas - 21/05
Dúvidas API
- 01. Luiz Cláudio Theodoro: Pode dizer exatamente o que essa API do SEFAZ, faz?
- Essa API carimba a nota fazendo validação e autorização da NF
- 02. Luiz Cláudio Theodoro: Pode explicar melhor o StateLess, com exemplos?
- Uma aplicação ou processo stateless são recursos isolados. Nenhuma referência ou informação sobre transações antigas são armazenadas, e cada uma delas é feita do zero. Exemplo de uma transação stateless pode ser uma pesquisa online . Você digita sua consulta no mecanismo de pesquisa e pressiona enter e, se a transação for interrompida ou encerrada sem querer, você precisará começar outra.
- 03. Ricky Willian Ferraz: O Postman funciona da mesma forma que o SOAP?
- O Postman é um "padronizador" de API, permitindo um desenvolvimento sobre APIs SOAP, REST e Graphql.
- 04. Rafael Ribeiro de Sousa: Graphql seria uma alternativa a REST?
- Sim Rafael, o Graphql é uma alternativa a APIs do tipo REST, criada pela Facebook, que pela discussão presente nos fóruns, facilita as consultas de informação, segue citação:
"o GraphQL lhe permite realizar buscas declarativas onde um cliente especifica exatamente os dados de que ele precisa da API. Então agora ao invés de termos vários e vários endpoints o GraphQL expõe apenas um e responde com eficiência e precisão os dados solicitados."
Dúvidas Algoritmos/Compiladores
Sugestão de vídeo: https://www.youtube.com/watch?v=nj22l1gIll8
- 01. Matheus Faria: Qual a diferença entre algoritmo e linguagem de programação, tipo C/C++?
- 02. Igor Augusto: Os algoritmos influenciam na propagação das fake news? principalmente em redes sociais, nas quais há muita informação, mas pouco conhecimento
Microserviços
Sugestão de vídeo 1: https://www.youtube.com/watch?v=CKL3fV5UR8w
Sugestão de vídeo 2: https://www.youtube.com/watch?v=j3XufmvEMiM
Sugestão de vídeo 3 (esse é muito bom): https://www.youtube.com/watch?v=pZjTBTpieOA
Dúvidas
- 01. Matheus Faria: O que é uma comunicação assincrona?
- A definição geral de comunicação assíncrona é: "Comunicação assíncrona é quando 2 ou mais pessoas podem se comunicar sem que estejam presentes no mesmo exato momento". Trazendo para a computação, mais especificamente para a arquitetura de microsserviços, a comunicação entre dois serviços não acontece de forma síncrona, que seria um serviço "chamar" o outro, e esse outro responder naquele exato momento. Os serviços geralmente se comunicam de certa forma assinalando tarefas para os outros serviços, e em outro momento essa tarefa pronta é "consumida", pelo serviço que fez a requisição ou algum outro serviço. Uma analogia que poderiamos fazer é em um restaurante onde possuem comandas que são deixadas na cozinha. Um volume de comandas são deixados na cozinha em ordem, para que o prato seja feito. Porém, o Chef da cozinha, não conseguiria fazer os pratos instantaneamente quando chegam as comandas. Então ele pega as comandas que estão na fila, e vai dando saída nos pratos de acordo com as comandas que chegaram primeiro. Quando um prato fica pronto, a pessoa que deixou a comanda na cozinha pode pegar o prato solicitado anteriormente. Essa é uma analogia (provavelmente ruim) que eu consegui pensar para explicar como funciona a comunicação assíncrona.
- 02. Ricky Willian Ferraz: Você citou que os microsserviços tem a vantagem de serem fáceis de testar, poderia explicar melhor pq é fácil?
- Por que cada microsserviço é responsável por uma "parte" específica do sistema apenas. Em comparação com um projeto baseado na arquitetura monolítica, você tem um volume menor de testes, e a capacidade de desenvolver os testes de forma mais isolada, o que "facilita" os testes do projeto. Projetos que utilizam a arquitetura monolítica podem ter dezenas ou centenas de testes, que quando são necessários serem executados, pode demorar um tempo considerável.
- 03. Paulo Giovany: Vale à pena utilizar microsserviços em sistemas pequenos?
- A resposta é depende do quão pequeno. Porém serviços de muito pequeno porte, geralmente não tem uma necessidade da utilização da arquitetura de microsserviços, pois não seriam capazes de aproveitar as vantagens dos microsseviços, como por exeplo a capacidade de trabalhar melhor com alto tráfego de usuários entre outras vantagens. Além de que os microsserviços geralmente são implementados em projetos maiores onde há uma necessidade de fragmentar o código em serviços, para obter alguma vantagem nessa utilização, que pode ser melhor performance, melhor organização dos times de desenvolvimento, entre outras.
- 04. Matheus Faria: Quando devo escolher um microsserviço e quando não usar?
- Geralmente as empresas optam por utilizar a arquitetura de microsserviços, quando já possuem uma aplicação de porte razoável, e vem a possibilidade de fragmentar essa aplicação em microsseviços,, para aproveitar as vantagens de utilização desse modelo. Ou seja, você deve usar quando você conseguir extrair vantagens de utilizar a arquitetura de microsserviços.
- 05. Otavio Malta: Microserviço é o mesmo que web service?
- Não. A arquitetura de microsserviços, é um modelo de desenvolvimento de aplicações. Um microsserviço em uma aplicação, pode ser qualquer parte do sistema que trabalhe de maneira independente, idealmente possui sua própria base de dados, e recebe e/ou faz requisições a outras partes do sistema.