O curso "Arquitetura de Software & Design de Sistemas Modernos" é uma jornada abrangente projetada para capacitar profissionais da tecnologia a dominar os princípios e padrões que sustentam sistemas de software robustos, escaláveis e de alta disponibilidade. Ideal para arquitetos de software, engenheiros de sistemas e desenvolvedores, este curso oferece uma sólida base sobre os patterns, cobrindo desde os fundamentos até técnicas avançadas de design e implementação.Módulos e ConteúdoIntrodução / Vamos aquecer:O curso começa com uma introdução ao treinamento, estabelecendo as expectativas e objetivos. Aborda os princípios de sucesso em arquiteturas de software e a importância do planejamento alinhado aos objetivos de negócio (OKRs).Fundamentos de System Design e System Architecture:Este módulo explora os fundamentos do design de sistemas, incluindo diversos tipos de arquitetura e a evolução das mesmas. Aborda tópicos como arquitetura em três camadas, sistemas stateless e stateful, monolitos versus microsserviços, e muito mais.Padrões de Comunicação e Transações:Foca em padrões essenciais para comunicação eficiente e transações, como Queues, PubSub, Event Driven Architectures (EDA), e diversos padrões de orquestração e coreografia.Padrões de Armazenamento de Dados:Explora técnicas de persistência de dados, incluindo Polyglot Persistence, Change Data Capture (CDC), e padrões de sharding e particionamento de banco de dados.Padrões de Resiliência, Escalabilidade e Infraestrutura:Aborda como projetar sistemas resilientes e escaláveis, utilizando patterns como Circuit Breaker, Retry, Service Mesh, e técnicas avançadas como Chaos Engineering.Padrões de Design e Evolução de Aplicaçõe
What you'll learn
understand system design fundamentals
recognize different types of software architecture
implement patterns for data storage and resilience
apply communication patterns in systems design
align software architecture with business objectives
Course objectives
equip professionals with essential software architecture principles
provide advanced design techniques for modern systems
enhance skills in building scalable and high-availability systems