Tecnologia para não tecnologistas — parte 3

Olá!

Nos artigos anteriores, iniciei essa série que visa explicar alguns termos técnicos que são usados pelos profissionais de tecnologia e que podem soar desconhecidos para quem não é da área. Comentei aqui sobre o que é hardware, software e programação e aqui sobre engenharia e arquitetura de sistemas.

Nesse artigo, vamos dar uma espiada em como os computadores trocam informações e as formas possíveis de se fazer isso.

Já sabemos o que é um código e como ele funciona e quais as disciplinas usadas para criar, cuidar e crescer sistemas. Mas, como fazer isso tudo funcionar e atender bilhões de requisições por dia?

Em computação, alguns números que podem soar extremamente abstratos para nós humanos são relativamente triviais para as máquinas. Alguns exemplos: a escala de tempo que pensamos é em dias, horas e minutos. Em computadores, falamos de segundos, milissegundos e em alguns casos, nanosegundos.

Para dar um exemplo: 1 segundo são 1000 milissegundos. Um piscar de olhos leva 1/10 de segundo, ou seja, 100 milissegundos. Atualmente temos requisições que saem do seu computador, passam por toda a rede de telefonia através de cabos (que é a internet), chegam a um servidor destino, são processados (ou seja, regras de negócio são executadas e decisões tomadas) e fazem o caminho de volta até a sua tela em por volta de 300 milissegundos — que é uma métrica de mercado relativamente padronizada de um tempo de resposta bom, não necessariamente excelente (sim, existem tecnologias que são mais rápidas que isso).

É como se seu computador no interior de Goiás fizesse uma pergunta para um computador em São Paulo e recebesse a resposta em três piscadas de olhos — sem pausas entre elas, vale salientar.

(Eu sei que você piscou três vezes rápido agora para ter uma ideia de quanto tempo demora).

Isso só é possível porque todos os dados trafegados são sinais de luz que são enviados dentro de cabos de fibra ótica, algo mais ou menos assim:

Exemplo de como os sinais trafegam dentro dos cabos de fibra ótica

Pensa que o sinal de ida é o azul e a resposta vem através do sinal vermelho.

E porque eu disse tudo isso?

Porque é assim que computadores se comunicam, através de troca de sinais elétricos por meio de cabos que são transformados em sinais digitais. Ou seja, a diferença de digital para analógico está no tipo de sinal:

Diferença entre sinais analógicos e digitais

Dado a natureza de um sinal analógico, ele é um conjunto de valores contínuos captados dentro de uma janela de tempo. Ou seja, se dividirmos algum valor pelo tempo, temos a famosa representação hertz, megahertz e gigahertz.

Porque o sinal analógico tem ruído? Porque o sinal é bastante variável e tem faixas onde ele é captado melhor. Por exemplo: ele pode variar de -150Mhz até 150Mhz, sendo o ponto ótimo de captação do sinal por volta de -50Mhz e 50Mhz. Qualquer sinal fora dessa faixa captada por um receptor gerará ruídos.

No digital, ou tá desligado (0) ou tá ligado (1), portanto, binário. Ou seja, não há chiados no sinal da sua TV digital, ele simplesmente está funcionando (1) ou está fora do ar (0).

Isso é uma explicação simplista de processamento de sinais, mas, acredito que você tenha entendido a ideia.

Processadores tem como unidade fundamental de processamento instruções binárias (literalmente, zeros e uns). Isso é a base de todos os computadores não-quânticos que existem.

Ou seja, seus computadores se conversam através de troca de luzinhas apagando e acendendo dentro de um cabo, que, após algumas transformações feitas pelo hardware e por software viram texto na tela de algum dispositivo.

E para ajudar a entender melhor a comunicação entre máquinas, vamos falar mais um pouco sobre isso.

Você já deve ter ouvido falar sobre os termos síncrono e assíncrono, certo?

Esses termos se referem basicamente a como a comunicação é feita entre duas partes. Usando uma imagem para ilustrar:

Imagine que cada forma laranja é um computador, o triangulo vermelho é o emissor e o losango amarelo o receptor. As flechas indicam o sentido da mensagem.

Ou seja, na comunicação síncrona, o receptor recebe a mensagem e a responde na hora, mais ou menos como uma ligação telefônica.

Na assíncrona, a mensagem é enviada e não há necessidade de resposta imediata. Ou seja, aquela sua mensagem do whatsapp que foi entregue e visualizada mas não respondida. Não fique bravo com a pessoa, ela simplesmente está se comunicando de forma assíncrona com você :)

Essa mesma ideia se aplica ao desenvolvimento de sistemas, inclusive. Sistemas que se comunicam de forma síncrona tendem a ser mais "desejados", dado que obtém a resposta do receptor ao vivo. Porém, o grande problema é que eles são mais frágeis que um mesmo processo rodando de forma assíncrona, devido ao seguinte motivo: no síncrono, o processo é interrompido caso o receptor tenha alguma indisponibilidade e não haja tratamento de erros por parte do emissor (um exemplo de como resolver esse problema é usar um mecanismo de retentativas, por exemplo).

No assíncrono, dado a natureza "envio sem espera de resposta" (o jargão técnico usado aqui é fire-and-forget), é possível construir alguns processos mais robustos e resilientes. Ou seja, você troca o fator "resposta na hora" pelo fator "caso algum sistema caia no meio o processo se vira sozinho". Nesse caso, a técnica consiste em adicionar entre dois sistemas se comunicando de forma assíncrona um mecanismo de passagem de mensagens (ou também conhecido como filas). O que ficaria algo mais ou menos assim:

exemplo de uma fila de mensagens

O mecanismo no meio de dois sistemas é o uso prático de uma técnica que em computação chamamos de indireção. Esse assunto é muito extenso (e interessante), mas foge do escopo desse artigo.

Para finalizar, espero que tenha ficado mais claro o tópico comunicação entre computadores e que você consiga entender melhor profissionais de tecnologia conversando sobre comunicação de sistemas a partir de agora :D

Até!

--

--

Escritor-Desenvolvedor

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store