System Design — Projetando Arquitetura de Soluções robustas e confiáveis

José Roberto Araújo
2 min readDec 3, 2020

--

Faz algum tempo que eu venho conversando com colegas de trabalho e amigos da área de T.I sobre como lidar com cenários complexos e situações que demandam conhecimento mais DEEP DIVE sobre áreas do conhecimento da computação e sistemas distribuídos.

Ao procurarmos por System Design no wikipedia, encontramos a seguinte definição:

System Design é o processo de definição de arquitetura, módulos, interfaces e dados para um systema computacional, afim de satisfazer requisitos de negócio.

Quando nos solicitam o desenvolvimento de um produto, precisamos tomar algumas ações no início desse processo, tais como:

  1. Ler os requisitos
  2. Conversar com os responsáveis pelo produto
  3. Entender as necessidades e expectativas sobre o que será construído.

Todo entendimento adquirido, nessa fase de levantamento de necessidades e requisitos, é insumo para criarmos um MAPA ou DIAGRAMA ilustrando como as estruturas e componentes computacionais (hardware ou software) vão se comunicar, a fim de construir uma solução que permita que um produto funcione com base em uma Arquitetura bem projetada, usando boas práticas de Engenharia de Software.

Entender sobre System Design e como aplicar as várias técnicas dentro desse tema, nos permite:

  1. Aprender como gerir as mudanças de requisitos
  2. Lidar com mudanças no design da arquitetura e implementação de um software.
  3. Contruir soluções e arquiteturas evolutivas

Tudo isso facilita antecipar algums cenários como, por exemplo: Aumento de considerável de requests dos usuários em uma aplicação, por exemplo; o que levaria a catastrófico pra um sistema, caso ele não tenha sido desehado e projetado considerando as várias abordagens sobre System Design.

Conhecer as ferramentas e técnicas que melhor se adequam aos mais variados cenários, nos leva a saber o que será preciso fazer para lidar com Alta Escalabilidade.

Veja a imagens abaixo:

Um sistema de redes sociais, mostrando uma rede de conexões.
Uma rede social, mostrando o compartilhamento de informações entre essas duas conexões de pessosa.

Mas o que essas duas imagens tem a ver com System Design?

Quer saber mais sobre esse tema, com uma riqueza maior de detalhe?

Te convido a assistir aos videos da Playlist do Canal da Emerging Code.

System Design | Uma introdução ao DESIGN de Arquitetura de Software — YouTube

--

--

José Roberto Araújo

I'm a Software Developer focusing on supporting people and companies to build robust, reliable, and complex software. I've been doing this moreover 2 decades.