System Design — Projetando Arquitetura de Soluções robustas e confiáveis
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:
- Ler os requisitos
- Conversar com os responsáveis pelo produto
- 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:
- Aprender como gerir as mudanças de requisitos
- Lidar com mudanças no design da arquitetura e implementação de um software.
- 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:
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