Curso Arquitetura e Design de Projetos Java

FD9E034F-C706-472D-ABA4-310433A703E5 Created with sketchtool. 40 horas/curso
Veja as próximas turmas

O que você vai fazer

Para quem é esse curso?

Para desenvolvedores que já têm uma boa experiência com desenvolvimento de aplicações utilizando Java e que tenham interesse em se tornar arquitetos de software. Embora os exemplos do curso sejam em Java, boa parte dos assuntos e discussões pode ser aproveitada e aplicada em outras linguagens e plataformas.

Conteúdo detalhado do curso FJ-91

    Arquitetura de Software e o papel do Arquiteto de Software

  1. O que é arquitetura de software?
  2. O papel e as responsabilidades de um arquiteto de software
  3. Lidando com arquitetura em um projeto de software

    Java: Oracle, JCP, JavaEE e o futuro do Java

  1. Um pouco da história do Java
  2. A Oracle e o Java
  3. Conhecendo o JCP - Java Community Process
  4. Conhecendo sobre as especifições do Java
  5. O futuro do Java e do JavaEE
  6. Exercício: A organização do Java, JCP, JSRs e Expert Groups
  7. Exercício: Especificações

    JVM: Conhecendo os detalhes internos da máquina virtual Java

  1. O funcionamento da JVM
  2. Conhecendo como funciona o Garbage Collector do Java
  3. Classloaders e como evitar suas armadilhas
  4. Outros tópicos: JIT Compiler e compiladores para bytecode
  5. Exercício: Garbage Collector e tuning de memória
  6. Exercício: Como funcionam os Classloaders e o Classloader Hell

    Lidando com Requisitos Não Funcionais

  1. O que são requisitos funcionais e não funcionais
  2. Como saber quais requisitos não funcionais são importantes para uma aplicação?
  3. Definindo métricas e como testar os requisitos não funcionais
  4. Técnicas, práticas e ferramentas para se alcançar os requisitos não funcionais
  5. Avaliando os tradeoffs entre os requisitos não funcionais

    Performance

  1. Principais pontos de gargalo em uma aplicação
  2. Otimizações no front-end da aplicação
  3. Otimizações no acesso ao banco de dados
  4. Cache e requisições assíncronas
  5. Coletando métricas com ferramentas
  6. Exercício: Performance e otimizações

    Escalabilidade, Disponibilidade e Confiança

  1. Escalando um aplicação
  2. Escalabilidade horizontal vs. vertical
  3. Cluster e balanceamento de carga
  4. Redundância e Single Point of Failure
  5. Stateless vs. Stateful e session replication
  6. Exercício: Balanceamento de carga e o tradeoff entre escalabilidade, disponibilidade e confiabilidade - Parte 1
  7. Exercício: Balanceamento de carga e o tradeoff entre escalabilidade, disponibilidade e confiabilidade - Parte 2
  8. Exercício: Balanceamento de carga e o tradeoff entre escalabilidade, disponibilidade e confiabilidade - Parte 3

    Segurança

  1. Princípios de segurança em aplicações Web e Pentesting
  2. Vulnerabilidades e OWASP Top 10
  3. Ferramentas para automatização de segurança
  4. Exercício: Segurança

    Gerenciabilidade

  1. Como monitorar a execução de uma aplicação Web?
  2. Ferramentas, gráficos e análises
  3. Exercício: Gerenciabilidade com Glowroot

    Manutenibilidade/Extensibilidade

  1. Boas práticas de programação e Orientação a Objetos
  2. Design Patterns
  3. Clean Code e princípios SOLID
  4. IoC e injeção de dependências
  5. Testes automatizados e TDD
  6. Exercício: Manutenibilidade e Extensibilidade

    Decisões Arquiteturais e seus Tradeoffs

  1. Como escolher as tecnologias de um projeto?
  2. Lidando com restrições técnicas e não técnicas
  3. Arquitetura em camadas
  4. Java EE e/ou Spring
  5. Web: Action-based ou Component-based
  6. Web: JSF ainda vale a pena?
  7. Web: Frameworks e bibliotecas MVC JavaScript
  8. JDBC vs. JPA
  9. Boas práticas com JPA
  10. NoSQL e CAP Theorem
  11. Integração de sistemas e seus problemas
  12. Integração assíncrona, desacoplada e escalável com mensageria
  13. Simplificando integrações com Apache Camel
  14. REST e GraphQL
  15. Arquitetura de Micro Serviços e seus desafios
  16. Separação de responsabilidades e IoC
  17. Domain-Driven Design e Clean Architecture
  18. Virtualização, containers e Docker
  19. Exercício: Decisões Arquiteturais
  20. Exercício: Boas práticas com JSF 2
  21. Exercício: Clean Architecture e Domain-Driven Design
  22. Exercício: Micro Services com Spring Cloud, Netflix OSS e Docker

    Documentação Arquitetural

  1. Como documentar a arquitetura de um software?
  2. Desenhos, diagramas e UML
  3. Modelos para documentação arquitetural
  4. Diagramas de arquitetura com C4 Model
  5. Decisões arquiteturais e o Architecture Decision Record
  6. Exercício: Documentação de Arquitetura com C4 Model
  7. Exercício opcional: Documentação de Decisões Arquiteturais com ADR (Architecture Decision Record)

* Apêndices são conteúdos adicionais que não fazem parte da carga horária regular do curso. São conteúdos extras para direcionar seus estudos após o curso.

O que os alunos falam

Rafael Santana Oliveira

Poder ouvir dos instrutores sobre suas experiências; todos trouxeram pra sala de aula muita informação que só conseguiriamos visitando outra empresa, ...

William Salerno

Curso incrível! Abriu minha mente para diversas possibilidades de criação de código eficiente e legível.

Sergio Lima Morais

Ponto alto é que a instrutora sabe o assunto aplicando com competência e segurança.

Próximas turmas

Selecione a cidade e os períodos de sua preferência

Qual cidade você pode ir?
Quais períodos você prefere?
Ver turmas encontradas

Nós encontramos essas turmas:

Não achou a turma ideal pra você? Consulte outras turmas e horários.

Entre em contato

Não encontrou o curso que procura? Conheça a Alura, a plataforma online da Caelum

Conheça a Alura