O que é JSON?

O JSON é um formato leve de intercâmbio de dados baseado em texto, projetado para facilitar tanto a leitura e escrita por humanos quanto o parsing e geração de código por máquinas. JSON significa JavaScript Object Notation (em tradução livre, Notação de Objeto JavaScript), pois, esse formato de dados utiliza uma sintaxe derivada de um subconjunto da linguagem JavaScript.

Porém, apesar de ser baseado em JavaScript, ele funciona de forma independente de qualquer linguagem de programação. Isso quer dizer que, na prática, você pode usar JSON para trocar dados entre sistemas escritos em diferentes linguagens, como Python, Java, C#, PHP, Ruby, e, claro, o próprio JavaScript, entre muitas outras opções.

A popularidade do JSON advém, em grande parte, de sua simplicidade e clareza. Ao contrário de formatos mais verbosos como XML, ele evita a necessidade de tags de fechamento complexas e estruturas hierárquicas que podem tornar a leitura e o processamento mais lentos e suscetíveis a erros.

1 – Estrutura e tipos de dados fundamentais

Os documentos JSON possuem uma estrutura composta por dois tipos principais: os objetos e os arrays.

  • Objetos ({ }): um objeto é uma coleção de dados não ordenada de pares de nome/valor. Cada par consiste em um nome (uma string) seguido por dois pontos (:) e um valor. Os pares são separados por vírgulas. Pense em um objeto como um dicionário ou mapa, onde cada nome é uma chave única que aponta para um valor. Exemplo:
{
  "nome": "João Silva",
  "idade": 30,
  "cidade": "São Paulo"
}
  • Arrays ([ ]): um array, por sua vez, é uma coleção ordenada de valores. Os valores são separados por vírgulas. Arrays são ideais para representar listas de itens. Exemplo:
[
  "maçã",
  "banana",
  "laranja"
]

Dentro de objetos e arrays, os valores podem ser de diversos tipos:

  • String: uma sequência de caracteres, envolta em aspas duplas. Ex: "texto"
  • Number: um número inteiro ou de ponto flutuante. Ex: 10, 3.14
  • Boolean: true ou false.
  • null: representa a ausência de valor.
  • Object: um objeto JSON aninhado.
  • Array: um array JSON aninhado.

A combinação de objetos e arrays, junto com os tipos de dados básicos, permite que os desenvolvedores criem estruturas de dados complexas e flexíveis, capazes de representar praticamente qualquer tipo de informação.

2 – Aplicações comuns

O JSON não é apenas mais um formato de dados; ele se tornou um padrão para a comunicação e o armazenamento de informações. Algumas das suas aplicações mais comuns são:

  • APIs REST: o JSON é o formato de intercâmbios de dados mais utilizado em APIs modernas, especialmente as APIs que possuem arquitetura REST.
  • Configurações de Aplicações: muitos softwares utilizam arquivos JSON para armazenar configurações. São exemplos dessas ferramentas o ESLint, Prettier, Babel, entre outros.
  • Bancos de Dados NoSQL: bancos de dados como MongoDB, Couchbase e Firebase utilizam JSON ou formatos baseados nele para armazenar seus documentos.
  • Webhooks: ferramentas que enviam dados de um aplicativo para outro frequentemente usam JSON para enviar seus payloads. Serviços como Stripe, GitHub e Zapier são bons exemplos disso.
  • Integração de Sistemas: desenvolvedores utilizam o JSON para facilitar a troca de informações entre microsserviços e sistemas distribuídos, além de manipulá-lo diretamente no front-end com frameworks JavaScript como React e Angular por exemplo, para fazer requisições e receber dados do back-end.

3 – Vantagens do JSON

  • Leveza: os arquivos JSON tendem a ser menores do que os seus equivalentes em XML.
  • Facilidade de leitura e escrita: tanto por humanos quanto por máquinas.
  • Suporte nativo: quase todas as linguagens modernas possuem bibliotecas integradas para trabalhar com esse formato.
  • Interoperabilidade: como é baseado em texto e padronizado, pode ser usado em qualquer ambiente.

4 – Limitações e Cuidados

  • Não suporta comentários: diferente de arquivos .js ou .yaml, por exemplo, que possuem operadores específicos para comentários.
    • Sem suporte a tipos de dados complexos: tipos de dados como Date, Function, ou undefined não são suportados diretamente, o que pode exigir tratamentos mais específicos desses dados nos sistemas que os manipulam.
  • Case-sensitive: "Nome" e "nome" são chaves diferentes, o que exige atenção por parte dos desenvolvedores.
  • Validação pode ser rígida: estruturas mal formadas causam erro no parsing. Por isso, os desenvolvedores costumam aplicar validações via JSON Schema, principalmente em APIs, para garantir que os dados estejam no formato correto antes de processá-los.

5 – Ferramentas Úteis para Trabalhar com JSON

  • JSON Formatter & Validator (https://jsonformatter.org/): site útil para formatar, validar e visualizar JSON de forma agradável.
  • Postman & Insomnia: ambas são ferramentas populares para testar e documentar APIs que trabalham com JSON.
  • jq: utilitário de linha de comando leve e simples para processar e manipular arquivos JSON.
  • VS Code + Extensões: o editor já vem com suporte embutido para JSON, incluindo validação e autocompletar.

Gostou do conteúdo? Compartilhe com seus amigos e aproveite para conhecer mais termos da área de TI aqui!

O que é API?

API, é a sigla para Application Programming Interface, que em português significa Interface de Programação de Aplicações. APIs podem ser entendidas como pontes digitais, pois, elas são recursos que servem para conectar (ou integrar) diferentes sistemas e aplicações, independentemente, das tecnologias utilizadas em seu desenvolvimento.

As APIs permitem que diferentes sistemas e aplicações “conversem” entre si de forma padronizada, ao estabelecer padrões de comunicação chamados de contratos. Nesses contratos, estão definidos quais dados podem ser transacionados, sua obrigatoriedade ou não, e suas respectivas estruturas, tanto de requisições quanto de respostas da API.

As APIs são parte da rotina de trabalho de desenvolvedores e um importante recurso de integração de sistemas. Imagine a seguinte situação: um desenvolvedor recebe a tarefa de criar um sistema de e-commerce. Entre suas responsabilidades, uma delas é implementar o sistema de processamento de pagamentos, a qual é uma funcionalidade crítica para o sistema.

Nesse cenário, sem o auxílio das APIs, certamente, desenvolver essa funcionalidade do zero demandaria muito tempo e um enorme esforço, pois seria necessário:

  • Criar todo o sistema de segurança
  • Integrar com bancos e operadoras
  • Lidar com regulamentações financeiras
  • Garantir conformidade com PCI DSS

Com as APIs? O desenvolvedor pode simplesmente se conectar ao sistema de pagamentos de uma empresa como a Stripe, PayPal ou PagSeguro e pronto! Com apenas algumas linhas de código, é possível implementar um sistema de pagamentos robusto e seguro, sendo necessário apenas encaminhar os dados solicitados por esse serviço e processar a resposta recebida. Tudo isso sem precisar construir a funcionalidade do zero.

E essa é uma das grandes vatangens das APIs: permitir a integração de diferentes serviços, reaproveitando soluções já prontas e otimizadas. Os ganhos estão na aceleração do processo de desenvolvimento, na redução de custos e na maior qualidade das entregas.

1 – APIs e a arquitetura cliente-servidor

As APIs funcionam baseadas na arquitetura cliente-servidor, onde:

  1. O cliente realiza solicitações (geralmente requisições HTTP) para um servidor;
  2. O servidor recebe as solicitações e é responsável por processar cada uma delas e retornar uma resposta para o cliente.

Para compreender melhor essa relação entre a arquitetura cliente-servidor e as APIs imagine que um usuário acessa o aplicativo ou site de um e-commerce e faz uma compra. Para que esse pedido seja gerado com sucesso, o pagamento precisa ser processado e aprovado. Na arquitetura cliente-servidor, um processo semelhante a esse acontecerá:

  1. Cliente faz a requisição: o sistema de e-commerce realiza uma requisição de pagamento para a API do fornecedor.
  2. Servidor recebe e processa: o servidor do fornecedor do sistema de pagamento, irá validar os dados recebidos, consultar bases de dados, executar regras de negócio, entre outros.
  3. Servidor responde: por fim, o servidor irá retornar uma resposta de sucesso ou falha para essa requisição.

No final desse processo o usuário receberá um retorno, positivo ou negativo, conforme o resultado da requisição realizada entre cliente (no caso, o sistema de e-commerce) e servidor (o fornecedor do sistema de pagamentos).

2 – Tipos de APIs 

Podemos classificar as APIs pelo seu tipo de acesso e tipo de arqtuitetura, da seguinte forma:

2.1 – Por tipo de acesso

  • API Pública: são APIs abertas ao público em geral, podendo ser acessadas e usadas por qualquer pessoa ou organização.  São exemplos as APIs do Twitter, GitHub ou Google Maps. Elas democratizam o acesso a dados e funcionalidades.
  • API Privada: são APIs restritas ao uso interno de uma organização ou instituição.  Podemos imaginar como exemplo, uma API que conecta o sistema de vendas com o sistema de logística da empresa.
  • API de Parceiros: são APIs usadas entre organizações parceiras, conforme contratos comerciais e interesses mútuos.

2.2 – Por tipo de arquitetura

  • API SOAP (Simple Object Access Protocol – Protocolo de Acesso a Objetos Simples):  é um protocolo de construção de APIs mais tradicional, onde cliente e servidor trocam mensagens usando XML. É um protocolo altamente estruturado sendo, geralmente, utilizado em APIs legadas e privadas. As APIs SOAP transmitem mensagens maiores em comparação com as outras arquiteturas, o que torna a comunicação mais lenta e dificulta a escalabilidade.
  • API RPC (Remote Procedure Call – Chamada de Procedimento Remoto):  são APIs baseadas na chamada de funções em servidores remotos. Algumas informações são transmitidas para o servidor e a função é executada, remotamente, retornando ao cliente o resultado, como se a função tivesse sido executada localmente. O RPC se mostra muito útil quando é necessário executar uma função complexa sem comprometer os recursos locais, usando os recursos de um servidor remoto. 
  • API REST (Representational State Transfer – Transferência Representacional de Estado): é a arquitetura de design de APIs mais utilizada na atualidade. Caracterizada pela simplicidade e flexibilidade, utiliza o protocolo HTTP para comunicação e transfere os dados, geralmente, em formato JSON. As requisições das APIs REST são baseadas nos verbos HTTP, os quais formam o chamado CRUD (Create (GET), Read (POST), Update (PUT), Delete (DELETE)). 
  • GraphQL: trata-se de uma linguagem de consulta desenvolvida especificamente para APIs. As APIs desenvolvidas em GraphQL tem como principal diferencial fornecer exatamente os dados solicitados pelo cliente e nada além disso. Essa característica evita o tráfego desnecessário de dados e aumenta a eficiência e performance dos sistemas. APIs baseadas em GraphQL podem ser alternativas para as APIs REST, ou podem ser usadas em conjunto com esta arquitetura, dependendo das necessidades de cada projeto.

3 – Documentação de APIs 

A documentação de uma API é crucial para o seu sucesso e nunca deve ser negligenciada. Ela fornece aos desenvolvedores as informações necessárias para interagir corretamente com a API, compreendendo suas funcionalidades, requisitos de autenticação, limitações e padrões de erro.

Para ser eficaz, a documentação deve ser:

  • Clara e Concisa: procure utilizar textos diretos e detalhados o suficiente para que qualquer desenvolvedor possa entender.
  • Atualizada: sempre que houverem atualizações na API, atualize a documentação.
  • Estruturada: siga uma lógica clara, incluindo endpoints, métodos, exemplos de requisições e respostas, e parâmetros.
  • Interativa: utilize diagramas, exemplos de código e sandboxes para facilitar a compreensão.
  • Acessível: facilite o acesso à documentação, mantendo-a disponível online e incorporando recursos de pesquisa e navegação.

Para facilitar seu trabalho não deixe de utilizar ferramentas específicas para documentação de APIs, como o Swagger e o Postman. Essas ferreamentas são essenciais no processo de documentação e permitem realizar entregas de maior qualidade:

  • Swagger: baseado no OpenAPI, permite criar, descrever e visualizar APIs RESTful. Seu editor interativo e o Swagger UI facilitam o teste de endpoints diretamente no navegador.
  • Postman: mais do que uma ferramenta de teste, oferece funcionalidades robustas de documentação. Permite criar documentações interativas, compartilhar coleções de requisições e integrar testes automatizados para manter a documentação alinhada ao comportamento da API.

Por fim, lembre-se que além das ferramentas, a equipe deve adotar uma abordagem contínua e colaborativa na criação e manutenção dos documentos. Uma cultura de documentação contínua permite manter o conteúdo relevante e útil ao longo do tempo..


Gostou do conteúdo? Compartilhe com seus amigos e aproveite para conhecer mais termos da área de TI aqui!

O que é Cloud Computing?

A computação em nuvem (do inglês, cloud computing) transformou a maneira como empresas e usuários acessam e utilizam recursos tecnológicos. Seja para armazenar arquivos, rodar sistemas complexos ou escalar aplicações web, a nuvem se tornou um pilar da transformação digital.

Mais do que uma tendência, a computação em nuvem é uma realidade que otimiza custos, escala recursos e impulsiona a inovação. Mas o que exatamente é a nuvem, e como ela se diferencia de outras tecnologias?

Neste artigo, vamos explorar o conceito de cloud computing, suas origens, tipos, modelos de serviço, vantagens e em que momento a migração para a nuvem faz sentido. Vamos começar?

1 – O que é Cloud Computing?

Cloud computing, ou computação em nuvem, é um modelo de entrega de recursos computacionais sob demanda — como servidores, armazenamento, redes, bancos de dados e software — por meio da internet.

A premissa básica da computação em nuvem é que, ao invés de adquirir e manter uma infraestrutura física local, como um data center por exemplo, os usuários podem acessar esses recursos de forma remota (através de internet) e escalável, pagando apenas pelo que utilizam.

A nuvem permite que aplicações sejam executadas de forma distribuída, facilitando a colaboração, aumentando a disponibilidade e otimizando custos operacionais. É um modelo que traz agilidade e flexibilidade tanto para empresas quanto para usuários individuais.

1.1 – Como a Cloud Computing surgiu?

A ideia de computação em nuvem surgiu nas décadas de 1960 e 1970, quando pesquisadores introduziram o conceito de “computação utilitária” (ou computação em tempo compartilhado), propondo que os recursos de computação funcionassem como serviços públicos, acessíveis e compartilhados entre os usuários.

No entanto, foi apenas nos anos 2000 que o conceito de Cloud Computing como o conhecemos hoje começou a tomar forma com o avanço da virtualização e da internet de banda larga.

Nesse período, empresas como Amazon, Google e Microsoft passaram a oferecer infraestrutura como serviço (IaaS), abrindo caminho para o modelo de consumo sob demanda, como conhecemos hoje. O lançamento do Amazon Web Services (AWS) em 2006 marcou um divisor de águas na adoção da computação em nuvem, permitindo que empresas alugassem servidores e armazenamento sob demanda.

Essa inovação abriu as portas para o crescimento exponencial da computação em nuvem, transformando a maneira como as organizações operam e escalam suas operações de TI.

2. Quais as diferenças entre Cloud Computing e Virtualização?

Embora a virtualização seja uma tecnologia essencial para a Cloud Computing, elas não são a mesma coisa:

  • Virtualização é a técnica que permite criar versões virtuais de recursos de hardware, como servidores, sistemas operacionais e dispositivos de armazenamento. Assim, um único servidor físico pode hospedar várias máquinas virtuais (VMs) independentes, cada uma com seu próprio sistema operacional e aplicativos. O principal objetivo da virtualização é otimizar o uso do hardware físico.
  • Cloud computing é um modelo de entrega de serviços que, utiliza a virtualização como uma das tecnologias-base, mas vai além. A nuvem leva a virtualização a um passo adiante e envolve o provisionamento automatizado de recursos, escalabilidade, acesso via internet, cobrança baseada no uso e alta disponibilidade.

Dessa forma, podemos entender que, toda cloud usa virtualização, mas nem toda virtualização é cloud.

3. Quais são os tipos de nuvem?

Quando falamos em “tipos de nuvem”, geralmente nos referimos aos modelos de implantação da infraestrutura. Ao todo, temos 5 tipos de nuvem, as quais são classificadas conforme a maneira como disponibilizam e gerenciam os seus recursos:

  1. Nuvem Pública (Public Cloud): a infraestrutura é de propriedade e operada por um provedor de nuvem terceirizado (como AWS, Azure, Google Cloud). Os recursos são compartilhados entre múltiplos clientes (multitenancy) e acessados pela internet. É ideal para empresas que buscam escalabilidade, baixo custo inicial e gerenciamento simplificado.
  2. Nuvem Privada (Private Cloud): uma única organização utiliza exclusivamente a infraestrutura. Pode ser hospedada internamente (on-premises) ou por um provedor de serviços terceirizado. Oferece maior controle, segurança e personalização, sendo ideal para empresas com requisitos de conformidade rigorosos ou cargas de trabalho muito específicas.
  3. Nuvem Híbrida (Hybrid Cloud): combina nuvens públicas e privadas, permitindo que dados e aplicativos se movam entre elas. As organizações podem aproveitar os benefícios da nuvem pública para cargas de trabalho não confidenciais e manter dados sensíveis na nuvem privada. Oferece flexibilidade e otimização de custos.
  4. Nuvem Comunitária (Community Cloud): a infraestrutura é compartilhada entre várias organizações com interesses e requisitos de segurança semelhantes. Um provedor terceirizado ou os próprios membros da comunidade são responsávei por operar esse ambiente. Um exemplo seriam órgãos governamentais ou instituições de pesquisa que compartilham uma nuvem para projetos colaborativos.
  5. Nuvem Multicloud (Multicloud): refere-se ao uso de múltiplos serviços de nuvem de diferentes provedores de nuvem pública. Por exemplo, uma empresa pode usar o AWS para desenvolvimento e teste e o Azure para seus sistemas de produção. O objetivo é evitar a dependência de um único fornecedor, otimizar custos e tirar proveito dos melhores recursos de cada provedor.

4. Quais os principais modelos de serviços da Cloud Computing?

Os modelos de serviços definem o nível de gerenciamento que o provedor de nuvem oferece e o nível de controle que o cliente tem, sendo três modelos principais:

  1. IaaS (Infrastructure as a Service – Infraestrutura como Serviço): o provedor fornece a infraestrutura básica (servidores, armazenamento, redes, virtualização), enquanto o cliente é responsável por instalar e gerenciar sistema operacional, aplicativos e dados. É o modelo mais flexível, sendo ideal para quem precisa de controle total sobre o ambiente. Exemplos: Amazon EC2, Microsoft Azure VM, Google Compute Engine.
  2. PaaS (Platform as a Service – Plataforma como Serviço): o provedor oferece um ambiente pronto para desenvolvimento e implantação de aplicações com sistema operacional, banco de dados, middleware e demais recursos necessários. Assim, o cliente se concentra apenas no desenvolvimento e implantação de seus aplicativos, sem se preocupar com infraestrutura. É ideal para desenvolvedores que querem agilidade. Exemplos: Google App Engine, Heroku, Azure App Services.
  3. SaaS (Software as a Service – Software como Serviço): o provedor entrega aplicações completas ao usuário, englobando infraestrutura, plataforma e o próprio aplicativo. O cliente usa o software pela internet, geralmente via navegador web ou app específico, sem necessidade de instalação local, na maioria das vezes. É o modelo mais fácil de usar e com menos controle para o cliente. Exemplos: Google Workspace, Microsoft 365, Salesforce.

5. Quais são os principais serviços de armazenamento em nuvem?

Os serviços de armazenamento em nuvem são cruciais para a maioria das aplicações e cargas de trabalho. Os principais tipos incluem:

  • Armazenamento de Objetos (Object Storage): ideal para dados não estruturados, como imagens, vídeos, backups e arquivos de log. É altamente escalável e durável, com acesso via APIs HTTP (ex: Amazon S3, Azure Blob Storage, Google Cloud Storage).
  • Armazenamento em Bloco (Block Storage): simula um disco rígido tradicional e é usado principalmente com máquinas virtuais para armazenar sistemas operacionais, bancos de dados e aplicativos que exigem baixa latência (ex: Amazon EBS, Azure Disk Storage, Google Compute Engine Persistent Disk).
  • Armazenamento de Arquivos (File Storage): oferece um sistema de arquivos hierárquico, permitindo que múltiplas instâncias de computação acessem e compartilhem dados através de protocolos de rede padrão como NFS e SMB (ex: Amazon EFS, Azure Files, Google Cloud Filestore).
  • Armazenamento de Backup e Arquivamento (Backup & Archive Storage): soluções otimizadas para backup de longo prazo e arquivamento de dados, geralmente com custos mais baixos e tempos de recuperação mais longos (ex: Amazon Glacier, Azure Archive Storage).

6. Vantagens e Desvantagens da Cloud Computing

A Cloud Computing, assim como qualquer outra tecnologia, possui suas vantagens e desvantagens, as quais devemos conhecer e considerar antes de optar por sua utilização em nosso dia a dia. Como vantagens temos:

  • Redução de custos: a adoção da cloud computing gera a redução de despesas com aquisição de hardware, manutenção técnica, consumo de energia elétrica, entre outros.
  • Escalabilidade: capacidade de aumentar ou diminuir recursos rapidamente conforme a demanda atual.
  • Agilidade no provisionamento: a ativação de novos recursos e serviços pode ser feita rapidamente, com alguns cliques e em poucos minutos.
  • Alta Disponibilidade e Resiliência: provedores de nuvem oferecem infraestruturas robustas com redundância de dados, mecanismos de proteção e recuperação contra desastres e acessibilidade aos dados de qualquer lugar com conexão à internet.
  • Segurança: provedores investem pesadamente em segurança física e cibernética.
  • Atualizações automáticas: muitas tarefas de manutenção são gerenciadas pelo próprio provedor.
  • Foco no Negócio Principal: equipes de TI podem se concentrar em inovação, e não em gerenciamento de infraestrutura.

Mas, como nenhuma tecnologia é perfeita, a computação em nuvem também apresenta algumas desvantagens:

  • Dependência da conectividade: a internet é essencial, pois, sem uma conexão não é possível acessar os recursos.
  • Dependência do Provedor (Vendor Lock-in): dificuldade em migrar dados e aplicativos para outro provedor.
  • Controle Limitado: menos controle sobre a infraestrutura subjacente em comparação com ambientes on-premises.
  • Segurança dos Dados: embora os provedores invistam em segurança, a responsabilidade compartilhada exige atenção do cliente, especialmente, em relação às políticas de proteção de dados.
  • Custos Imprevisíveis: se não for bem gerenciada, a utilização da nuvem pode gerar custos inesperados.
  • Conformidade Regulatória: alguns setores possuem regulamentações estritas que podem dificultar a adoção da nuvem pública.

7. Quando migrar para a nuvem é vantajoso?

A migração para a Cloud Computing vale a pena em diversas situações, especialmente quando as organizações buscam:

  • Redução de Custos Operacionais (OpEx): transformar despesas de capital (CapEx) em despesas operacionais.
  • Escalabilidade Rápida: para negócios com demandas variáveis ou crescimento acelerado, sem precisar realizar altos investimentos.
  • Inovação e Agilidade: para desenvolver e implantar novos produtos e serviços mais rapidamente.
  • Melhoria da Segurança e Resiliência: aproveitando a infraestrutura robusta e os recursos de segurança dos provedores.
  • Acesso a Tecnologias Avançadas: como Machine Learning, Inteligência Artificial e Big Data, sem a necessidade de grandes investimentos iniciais.
  • Otimização de Recursos de TI: liberando equipes para focar em iniciativas estratégicas em vez de manutenção de infraestrutura.
  • Recuperação de Desastres: implementar planos de continuidade de negócios de forma mais eficaz e econômica.

Em resumo, cada organização deve avaliar estrategicamente a migração para a nuvem com base em suas necessidades específicas, objetivos de negócio e maturidade tecnológica. Por isso, uma análise criteriosa é essencial e aumenta as chances de sucesso na migração.

Conclusão

A cloud computing já é uma realidade consolidada na área de TI e continua evoluindo com rapidez. Entender seus conceitos, tipos, modelos e implicações ajuda profissionais e estudantes da área de TI, a tomarem decisões mais assertivas, seja na hora de implementar soluções, propor melhorias ou planejar carreiras. Ao dominar os fundamentos da nuvem, você estará mais preparado para enfrentar os desafios da era digital.

Espero que este conteúdo seja útil em sua trajetória! Se você gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre tecnologia da informação aqui!