System Design para Desenvolvedores: o que pensar antes de codar

Antes de escrever código, precisamos entender o problema. Nesta palestra, vamos aprender uma abordagem prática para pensar em System Design, passando por requisitos, APIs, bancos de dados, autenticação, filas, escalabilidade e decisões arquiteturais. A ideia é mostrar como transformar um problema de negócio em uma arquitetura de software antes de começar a implementar.

Muitos desenvolvedores começam um projeto pensando diretamente em código: qual framework usar, quais endpoints criar ou quais tabelas montar. Mas antes dessas decisões existe uma etapa fundamental: entender o problema e projetar uma solução.

A partir de um problema prático, vamos construir a solução passo a passo, discutindo:

•⁠ ⁠Processo de desenvolvimento de Software: •⁠ ⁠Como entender e decompor um problema de negócio •⁠ ⁠Como identificar requisitos funcionais e não funcionais •⁠ ⁠Como definir os principais componentes de um sistema •⁠ ⁠Como pensar no design das APIs •⁠ ⁠Como escolher e modelar o banco de dados •⁠ ⁠Como estruturar autenticação e autorização •⁠ ⁠Quando utilizar cache, filas e processamento assíncrono •⁠ ⁠Como pensar em escalabilidade e performance •⁠ ⁠Como considerar segurança, observabilidade e confiabilidade •⁠ ⁠Como avaliar trade-offs entre diferentes soluções

O objetivo não é apresentar uma arquitetura perfeita ou uma receita pronta. É mostrar um processo de raciocínio que pode ser aplicado a diferentes tipos de sistemas.

Ao final, os participantes terão uma visão mais clara sobre como sair de um problema de negócio e chegar a uma arquitetura técnica antes de escrever a primeira linha de código.