Sistemas Distribuídos: o que se aprende e para que serve? (#1)

Sistemas Distribuídos é uma cadeira do mestrado em Engenharia Informática e de Computadores. Diferentes faculdades dão diferentes nomes à disciplina, podendo também ser chamada de Aplicações Distribuídas na Internet.

A cadeira enquadra-se na área de Engenharia de Software. Tal como o nome indica, esta cadeira foca-se no desenvolvimento de software que se executa em várias máquinas (servidores) espalhadas pelo mundo, que comunicam entre si para alcançar um objetivo comum.

Os alunos são incentivados a estudar sistemas existentes para entender as vantagens e desvantagens de cada abordagem.

Conceitos como arquitetura do sistema, escalabilidade, segurança, desempenho, cliente, servidor, load balancer, bottleneck, server-­client, peer-to-peer, publish­-subscribe, erros, faltas vs falhas, surgirão inúmeras vezes ao estudar este tema.

É tudo muito giro… mas para que serve?

Esta temática é de extrema importância quando se pretende desenvolver um sistema que funciona numa rede de grande escala que deverá suportar grandes quantidades de utilizadores, em simultâneo (ou não). Após estudar o tema referente a esta cadeira deverás ser capaz de responder a perguntas como:

  • Se 1000 utilizadores utilizarem o sistema ao mesmo tempo, este tem capacidade para responder a tantos pedidos? E se forem 100.000, o que acontece?
  • O que preciso fazer para garantir que o tempo de resposta do sistema é sempre inferior a 1 segundo?
  • O que acontece se ocorrer um problema no servidor? Como garantir que o serviço continua a funcionar depois do servidor pegar fogo? E os dados que estavam no disco?
  • Será que o load balancing está bem feito? Ou um dos servidores está a ser desnecessariamente sobrecarregado?
  • O modelo de comunicação utilizado garante a confidencialidade dos dados? Os dados guardados no servidor estão seguros? Como são replicados os dados?

13599986411970

Porque é que isto interessa?

Na minha opinião, todos os assuntos abordados nesta cadeira são de grande importância. Nos dias de hoje, qualquer produto que seja lançado na Internet, quer seja para utilizadores finais ou empresas precisa ter resposta para as perguntas mencionadas acima. O sucesso do produto assenta em não deixar ao acaso questões como essas.

As soluções para os temas da escalabilidade, desempenho e segurança, precisam ser tomadas em conta desde o primeiro momento da criação de um sistema. Caso contrário, é como começar a fazer uma casa em madeira e depois de pronta perceber que será necessário fazer 30 andares. Se as fundações já tivessem sido feitas a pensar nisso…

Penso que é uma das cadeiras mais úteis para quem quiser desempenhar no seu futuro profissional papéis como programador full­-stack ou back­-end, o que representa uma grande fatia do mercado de trabalho.

Luís Rosado

Luís Rosado

Luís Rosado é estudante de Mestrado em Eng. Informática no IST. Gosta de utilizar programação para resolver problemas do dia-a-dia. Atualmente, está focado em terminar a tese de mestrado.