Skip to content

Latest commit

 

History

History
 
 

orange-talent-5

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Cronograma e plano de estudos e treinos

O nosso bootcamp tem duração de até 13 semanas. Preparamos toda uma sequência de estudos e treinos que visam te deixar preparado(a) para construir API's utilizando Java/Kotlin como linguagem e Spring/Micronaut + Hibernate como frameworks principais. Fazendo com que você possa focar no que mais importa, que é entregar valor para o cliente final usando tecnologia como meio.

O que vamos estudar e treinar?

Para que você se sinta e realmente seja capaz de construir API's, durante o bootcamp, você vai estudar e treinar em cima dos seguinte tópicos:

  • Design de código orientado a objetos com a linguagem Java;
  • Design de código orientado a objetos com a linguagem Kotlin;
  • Testes automatizados de unidade para aumentar a confiabilidade de execução do software;
  • JUnit para facilitar a escrita de testes automatizados;
  • Mockito para ajudar na simulação de invocação a sistemas externos;
  • SQL básico para realizar as operações de leitura e escrita necessárias;
  • Spring Boot para facilitar a utilização de tecnologias do ecossistemas Spring;
  • Spring MVC para facilitar na criação da camada web da aplicação;
  • Spring Validation para facilitar no processo de validação da entrada dos dados;
  • Spring Actuator para expor informações sobre a saúde da aplicação;
  • Spring Scheduling para criar agendamentos;
  • Spring Security para criar mecanismos de autenticação;
  • Módulo de integração com o Feign do Spring;
  • Hibernate para fazer o mapeamento entre o mundo orientado a objetos e relacional;
  • Kafka para ser usado meio de integração assíncrona via mensageria;
  • Open Tracing para conseguir seguir o fluxo de uma requisição em um sistema distribuído;
  • Docker e Kubernetes para auxiliar no processo de criação de ambientes simulando a produção e deploy;
  • Micronaut para construção API's ainda mais preparadas para o mundo Cloud Native.
  • Stack de CI/CD da Amazon para que consiga fazer com que seu código seja um bom cliente da operação. Vamos de cultura DevOps.

Sua sequência de atividades considerando todas as 13 semanas

Primeiro começamos entendendo a estrutura do bootcamp e como ficar melhor preparado(a) para consumir tudo que preparamos. Essa aqui é uma fase curta, porém fundamental. Esta é a fase um do nosso bootcamp.

Agora você vai fazer uma imersão de teoria sobre desenvolvimento web utilizando o paradigma de programação orientado a objetos com Java, Spring e Hibernate. Aqui é uma fase com muita teoria e alguns exercícios de fixação. Não se preocupe se sentir a cabeça ficar pesada, é uma sensação normal. Toda essa fase de teoria está centrada em cursos prontos da plataforma Alura. Você deve ter acesso para conseguir fazê-los. Esta é a fase dois do nosso bootcamp.

Sugerimos fortemente que você assista os videos entre 1.5 e 2x de velocidade. Lembre que a ideia é que você tenha contato e que tenha um primeiro conhecimento sobre isso tudo. Depois vai chegar a parte do treino em cima dessas teorias e aí esperamos que você fique ainda mais capaz de utilizar as teorias de maneira mais fluida.

Java Servlet: Fundamentos da programação Web Java
Clique aqui para responder o questionário no início do curso
Curso - Java Servlet: Fundamentos da programação web Java
Clique aqui para responder o questionário no final do curso
Clique aqui para fazer o exercício de resolução de problema
HTTP: Entendendo a web por baixo dos panos
Clique aqui para responder o questionário no início do curso
Curso - HTTP: Entendendo a web por baixo dos panos
Clique aqui para responder o questionário no final do curso
Clique aqui para fazer o exercício de resolução de problema
Introdução ao SQL com MySQL: Manipule e consulte dados
Clique aqui para responder o questionário no ínicio do curso
Curso - Introdução ao SQL com MySQL: Manipule e consulte dados 1° curso
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Consultas SQL: Avançando no SQL com MySQL
Clique aqui para responder o questionário no ínicio do curso
Curso - Consultas SQL: Avançando no SQL com MySQL 2° curso
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Java e JPA: Persista seus objetos com a JPA2 e Hibernate
Clique aqui para responder o questionário no início do curso
Curso - Java e JPA: Persista seus objetos com a JPA2 e Hibernate
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Spring Boot API REST: Construa uma API
Clique aqui para responder o questionário no início do curso
Curso - Spring Boot API REST: Construa uma API
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Spring Boot API Rest: Segurança da API, Cache e Monitoramento
Clique aqui para responder o questionário no início do curso
Curso - Spring Boot API Rest: Segurança da API, Cache e Monitoramento
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Spring Boot e Teste: Profiles, Testes e Deploy
Clique aqui para responder o questionário no início do curso
Curso - Spring Boot e Teste: Profiles, Testes e Deploy
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Spring Data JPA: Repositórios, Consultas, Projeções e Specifications
Clique aqui para responder o questionário no início do curso
Curso - Spring Data JPA: Repositórios, Consultas, Projeções e Specifcations
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
SOLID com Java: Orientação a Objetos com Java
Clique aqui para responder o questionário no início do curso
Curso - SOLID com Java: Orientação a Objetos com Java
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema

Agora que você passou por uma fase intensa de teoria, chegou a hora de treinar muito. Você vai construir dois projetos do zero. Nessa fase é importante que você vá se analisando e prestando muita atenção em relação ao nível de facilidade de cada funcionalidade construída. Tem que ir ficando mais fácil. Se não estiver ficando fácil, fique alerta, talvez você precise de ajuda. Agora você entra na fase três do nosso bootcamp.

O desafio de implementação da Casa do Código foi muito importante para que você treinasse sua habilidade em desenvolver API's web. O próximo desafio exige habilidades bem similares, o que é bom. Lembre que a repetição em cenários variados eleva seu nível. Só que agora, além de ser um desafio mais complexo, também vai exigir de você a criação de testes automatizados.

Para te deixar ainda mais preparado(a), temos alguns conteúdos sobre testes.

Introdução a testes automatizados
Clique aqui para responder o questionário no início do curso
Java e Testes: Test Driven Development com Junit
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema
Testes de integração
Clique aqui para responder o questionário no início do curso
Teste de Integração: Testes SQL e DAOs automatizados em Java
Clique aqui para responder o questionário no final do curso
Clique aqui fazer o exercício de resolução de problema

Agora, com um pouco mais de teoria sobre como os testes podem ajudar no aumento de confiabilidade de execução do código, mergulhe no desafio de criar uma API que simula parte do Mercado Livre.

Neste ponto da jornada, você deve estar se sentindo mais confiante e mais capaz de construir API's com as tecnologias e práticas até aqui trabalhadas. Vamos para o desafio final. Que é construir uma API que simule o funcionamento do credicard zero, um produto do Itaú. Esta é a fase quatro do nosso bootcamp.

Vamos começar pela teoria que vai ser praticada no primeiro microservice, o de criação de propostas.

Importante lembrar que não é esperado que você acabe essa fase da leitura já conseguindo aplicar tais conceitos facilmente. A ideia é ter o primeiro contato e deixar a semente plantada na sua cabeça para que, no momento da prática, tudo seja mais facilmente acessível.

Introdução a Docker
Clique aqui para responder o questionário no início do curso
Introdução a Docker
Clique aqui para responder o questionário no final do curso
Clique aqui para o exercício de resolução de problema

Cursos | Zup Edu

Agora que você fez mais imersão teórica, vamos treinar! Neste treino você vai utilizar tudo que você estudou e até um pouco mais!

Com o microservice de propostas implementado, chegou a hora de implementar um novo serviço, o que cuida das transações do cartão de crédito. Como é de praxe, antes de começar, vamos primeiro estudar a teoria necessária.

Introdução a Apache Kafka
Clique aqui para responder o questionário no início do curso
Introdução a Apache Kafka
Clique aqui para responder o questionário no final do curso

Chegou a hora de programar o serviço de transação. Ele é um serviço pequeno, mas vai te desafiar a utilizar o Kafka integrado com o Spring e te deixar ainda mais preparado(a) para utilizar essa forma de integração.

Nesse momento do nosso bootcamp, você já deve estar se sentindo mais apto(a) a criar API's REST que possam ser deployadas em ambientes Cloud Native. Agora vamos para a fase final, onde vamos nos desafiar a transferir todo esse conhecimento para uma nova stack de tecnologias, a Orange Foundation! Antes de mais nada, deixe a gente te contar um pouco sobre essa nova stack.

A Zup + Itaú decidiram apostar em um novo conjunto de tecnologias que são ainda mais aderentes a este mundo onde tudo executa no cloud. A Orange Foundation vai atuar em diversas vertentes do desenvolvimento, tais como:

  • Backend;
  • Frontend;
  • Pipeline de Continuos Integration(CI) e Continuos Deployment(CD);
  • Múltiplas áreas relativas a Data Science;

Aqui no nosso programa, vamos focar nas tecnologias associadas com a vertente de backend. Entre essas tecnologias temos:

  • Kotlin;
  • Micronaut;
  • GRPC;
  • Kafka;
  • JUnit;
  • Pitest;
  • Prometheus;
  • Jaeger;
  • Gradle;
  • Redis;
  • Amazon EKS;
  • AWS Secret Manager;
  • Gitlab;
  • AWS Code Pipeline;
  • AWS Code Build;
  • AWS Code Deploy;

Algumas delas, como JUnit, Prometheus e Jaeger já trabalhamos. Vamos continuar fazendo uso delas e estudar e praticar em cima de mais algumas agora:

  • Kotlin;
  • Micronaut;
  • GRPC;
  • Gradle;
  • AWS EKS;
  • AWS Secret Manager;
  • Gitlab;
  • AWS Code Pipeline;
  • AWS Code Build;
  • AWS Code Deploy;

Está pronto(a)? Vamos para a fase cinco do nosso programa.

ESTAMOS NESSE MOMENTO CONSTRUINDO O MATERIAL DA FASE 5 PARA QUE VOCÊ POSSA SE DESAFIAR AINDA MAIS, AGUARDE POR ATUALIZAÇÕES AQUI :).

Só que não é porque estamos construindo, que não podemos já ir liberando as partes que estão prontos, Release early, Release often :).

Para começar, precisamos cair de cabeça no Kotlin, que é a linguagem base para a stack de backend da Orange Foundation. A teoria e atividades iniciais para a linguagem podem ser consumidas na Alura.

Uma coisa muito importante aqui: Você já estudou e treinou sobre a linguagem Java, tente fazer transferência de conhecimento. O que mudou foi a linguagem, mas vários dos conceitos permanecem os mesmos.

Kotlin: primeiros passos e Orientação a Objetos
Clique aqui para responder o questionário no início do curso
Kotlin: primeiros passos e Orientação a Objetos
Clique aqui para responder o questionário no final do curso
Kotlin: herança, polimorfismo e interface
Clique aqui para responder o questionário no início do curso
Kotlin: herança, polimorfismo e Interface
Clique aqui para responder o questionário no final do curso
Kotlin: recursos da linguagem com pacotes e composição
Clique aqui para responder o questionário no início do curso
Kotlin: recursos da linguagem com pacotes e composição
Clique aqui para responder o questionário no final do curso
Kotlin: lidando com exceptions e referências nulas
Clique aqui para responder o questionário no início do curso
Kotlin: lidando com exceptions e referências nulas
Clique aqui para responder o questionário no final do curso
Kotlin: Desenvolva com coleções, arrays e listas
Clique aqui para responder o questionário no início do curso
Kotlin:Desenvolva com coleções arrays e listas
Clique aqui para responder o questionário no final do curso
Kotlin Collections: Set e Map
Clique aqui para responder o questionário no início do curso
Kotlin Collections: Set e Map
Clique aqui para responder o questionário no final do curso
Kotlin: recursos do paradigma funcional
Clique aqui para responder o questionário no início do curso
Kotlin: recursos do paradigma funcional
Clique aqui para responder o questionário no final do curso

Com o Kotlin um pouco mais presente na sua mente, vamos agora consumir toda a teoria relativa ao Micronaut. Do mesmo jeito que era possível transferir conhecimento do Java para o Kotlin, agora você pode transferir conhecimento do mundo Spring para o mundo Micronaut :).

Um detalhe importante sobre a didática neste ponto. Dividimos cada explicação prática em dois vídeos semelhantes. O primeiro vídeo apresenta o assunto em cima de um exemplo já pronto, enquanto que o segundo apresenta o mesmo assunto construindo o exemplo junto. Nossa intenção é facilitar seu entendimento, fornecendo duas explicacões sobre o mesmo assunto em formatos diferentes.

O que é Micronaut ?
Clique aqui para responder o questionário no início do curso
O que é Micronaut ?
Clique aqui para responder o questionário no final do curso
Setup de um projeto utilizando Micronaut
Clique aqui para responder o questionário no início do curso
Setup de um projeto utilizando Micronaut
Clique aqui para responder o questionário no final do curso
Configuração do IntelliJ para o Micronaut
Clique aqui para responder o questionário no início do curso
Configuração do IntelliJ para o Micronaut
Clique aqui para responder o questionário no final do curso
Recebendo dados via JSON
Clique aqui para responder o questionário no início do curso
Recebendo dados via JSON: explicação sobre código pronto
Recebendo dados via JSON: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Validando os dados de entrada de uma requisição
Clique aqui para responder o questionário no início do curso
Validando os dados de entrada de uma requisição: explicação em cima do código pronto
Validando os dados de entrada de uma requisição: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Conversão de um objeto de entrada para um objeto de domínio
Clique aqui para responder o questionário no início do curso
Conversão de um objeto de entrada para um objeto de domínio: explicação sobre o código pronto
Conversão de um objeto de entrada para um objeto de domínio: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Gravando os dados com Micronaut Data
Clique aqui para responder o questionário no início do curso
Gravando os dados com Micronaut Data: explicação em cima do código pronto
Gravando os dados com Micronaut Data: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Fluxo completo para salvar um objeto no banco de dados
Clique aqui para responder o questionário no início do curso
Fluxo completo para salvar um objeto no banco de dados
Clique aqui para responder o questionário no final do curso
Retornando dados em JSON
Clique aqui para responder o questionário no início do curso
Retornando dados em JSON: explicação sobre o código pronto
Retornando dados em JSON: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Definindo headers e status customizados
Clique aqui para responder o questionário no início do curso
Definindo headers e status customizados: explicação sobre o código pronto
Definindo headers e status customizados: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Recebendo dados via PUT
Clique aqui para responder o questionário no início do curso
Recebendo dados via PUT: explicação sobre o código pronto
Recebendo dados via PUT: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Recebendo dados via DELETE
Clique aqui para responder o questionário no início do curso
Recebendo dados via DELETE: explicação sobre o código pronto
Recebendo dados via DELETE: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Métodos que geram queries no Micronaut Data
Clique aqui para responder o questionário no início do curso
Métodos que geram queries no Micronaut Data: explicação sobre o código pronto
Métodos que geram queries no Micronaut Data: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Mapeando queries explicitamente no Micronaut Data
Clique aqui para responder o questionário no início do curso
Mapeando queries explicitamente no Micronaut Data: explicação sobre o código pronto
Mapeando queries explicitamente no Micronaut Data: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Demarcação de transação
Clique aqui para responder o questionário no início do curso
Demarcação de transação: explicação sobre o código pronto
Demarcação de transação: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Consumindo um endpoint REST com Micronaut de forma declarativa
Clique aqui para responder o questionário no início do curso
Consumindo um endpoint REST com Micronaut de forma declarativa: explicação sobre o código pronto
Consumindo um endpoint REST com Micronaut de forma declarativa: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Configurando seu HTTP client com Micronaut para trabalhar com XML em vez de JSON
Clique aqui para responder o questionário no início do curso
Configurando seu HTTP client com Micronaut para trabalhar com XML em vez de JSON: explicação sobre o código pronto
Configurando seu HTTP client com Micronaut para trabalhar com XML em vez de JSON: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Implementando Validação customizada com Micronaut Validation
Clique aqui para responder o questionário no início do curso
Implementando Validação customizada com Micronaut Validation: explicação sobre o código pronto
Implementando Validação customizada com Micronaut Validation: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Micronaut Testing - como testar uma API REST
Clique aqui para responder o questionário no início do curso
Micronaut Testing - como testar uma API REST: explicação sobre o código pronto
Micronaut Testing - como testar uma API REST: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Micronaut Testing - como criar mocks com Micronaut
Clique aqui para responder o questionário no início do curso
Micronaut Testing - como criar mocks com Micronaut: explicação sobre o código pronto
Micronaut Testing - como criar mocks com Micronaut: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Micronaut Testing - controle transacional e banco em memória
Clique aqui para responder o questionário no início do curso
Micronaut Testing - controle transacional e banco em memória: explicação sobre o código pronto
Micronaut Testing - controle transacional e banco em memória: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso

O conteúdo que você acabou de consumir foi bem focado no módulo HTTP do Micronaut. Basicamente o que você precisa para construir uma aplicação com Micronaut que vai se comunicar primordialmente via tal protocolo. Agora vamos direcionar nossa atenção para o módulo de GRPC do Micronaut :).

O GRPC é a tentativa de aumentar a performance na comunicação entre os serviços numa arquitetura distribuída, por exemplo com Microsserviços. Nos próximos vídeos você ter acesso a bastante conhecimento sobre essa forma de comunicação e como o Micronaut facilita isso para você.

O que é GRPC e a motivação do seu uso
Clique aqui para responder o questionário no início do curso
O que é GRPC e a motivação do seu uso
Clique aqui para responder o questionário no final do curso
Introdução a protobuf
Clique aqui para responder o questionário no início do curso
Introdução a protobuf: explicação sobre o código pronto
Introdução a protobuf: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Expondo dados via GRPC
Clique aqui para responder o questionário no início do curso
Expondo dados via GRPC: explicação sobre o código pronto
Expondo dados via GRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Consumindo um endpoint via GRPC
Clique aqui para responder o questionário no início do curso
Consumindo um endpoint via GRPC: explicação sobre o código pronto
Consumindo um endpoint via GRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Retornando códigos de erro em uma API gRPC
Clique aqui para responder o questionário no início do curso
Retornando códigos de erro em uma API gRPC: explicação sobre o código pronto
Retornando códigos de erro em uma API gRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Lidando com erros retornados pela API gRPC
Clique aqui para responder o questionário no início do curso
Lidando com erros retornados pela API gRPC: explicação sobre o código pronto
Lidando com erros retornados pela API gRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Healthcheck sobre HTTP
Clique aqui para responder o questionário no início do curso
Healthcheck sobre HTTP: explicação sobre o código pronto
Healthcheck sobre HTTP: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Healthcheck sobre GRPC
Clique aqui para responder o questionário no início do curso
Healthcheck sobre GRPC: explicação sobre o código pronto
Healthcheck sobre GRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso
Micronaut Testing - como testar uma API gRPC
Clique aqui para responder o questionário no início do curso
Micronaut Testing - como testar uma API gRPC: explicação sobre o código pronto
Micronaut Testing - como testar uma API gRPC: explicação enquanto constrói o código
Clique aqui para responder o questionário no final do curso

Agora que você fez mais essa imersão teórica em boa parte do conteúdo da Orange Stack, é hora de treinar! Neste treino você vai utilizar tudo que você estudou até esse momento e um pouco mais:

Construa um sistema distribuído que simule o funcionamento do PIX

Nesse momento você já deve estar sentindo apto a construir microsserviços utilizando as principais tecnologias da Orange Stack como Kotlin, Micronaut, API REST e gRPC.

Deploy

E o deploy? Como você vai levar sua aplicação da sua máquina para ficar exposta para ser consumida pelo mundo? Vamos agora mergulhar na teoria de deploy utilizando a nuvem da AWS.

Você também deve consumir os conteúdos sobre Gitlab, que é uma ferramenta também utilizada dentro da Zup.

Cronograma para executar todas as atividades

Nosso programa está estimado em 13 semanas e abaixo temos o cronograma. Lembre também que temos toda uma equipe pronta para te dar suporte, tirar dúvidas e te direcionar.

  1. Estimamos que você conclua a fase 1 + fase 2 até a segunda semana. Essa é uma fase muito focada em teoria e atividades de fixação
  2. Estimamos que você conclua a fase 3 até a quarta semana.
  3. Estimamos que você conclua a fase 4 até a oitava semana.
  4. Agora você tem até 5 semanas para fechar a fase cinco !

O nosso programa é intenso e exige muito esforço da sua parte. Esperamos contar com toda sua energia!

Lembrete final

Assim como um jogo de video game, aqui você também precisa passar fase por fase. Se uma fase parecer fácil para você, não tem problema, passa por ela mais rápido :).