ARQUITETURA E DESENVOLVIMENTO MEAN - DevOps, Spring Boot e JAX-RS

Carga horária: 100hs

Objetivo: Preparar o profissional para criar aplicações Web utilizando MEAN (MongoDB, Express JS, Angular4, NodeJS) com uma formação Fullstack. Criação todas as camadas da arquitetura de software: backend  baseado em serviços REST, persistência com o uso do banco de dados MongoDB orientado a documentos , interface do usuário responsiva utilizando Typescript com Orientação a Objetos, Javascript, Design Patterns (MVC, DDD, etc), princípios de programação funcional, programação orientada a eventos, testes unitários, compilação e publicação do projeto na nuvem..

DevOps com utilização de containers Docker e integração contínua com  Jenkins.

Próximas turmas

AngularJS

  •  Princípios de orientação a objeto (OOP)
  • Diferenças da Arquitetura baseada em componentes (Webcomponents architecture) para arquitetura MVC (Model, View, Controller)
  • Visão geral do ECMASCRIPT 6 e novos padrões de projeto
  • Classes
  • Modificadores de acesso: public, private, protected e default
  • Tipos de variáveis: Boolean, String, Number, any, Array, Object, Date
  • Clausura
  • Declaração de métodos e métodos autoinvocados
  • Analogia do Typescript com o JAVA
  • Loops: for, while, do while, continue, break;
  • Objetos globais e locais
  • Diferenças entre declaração de variáveis e métodos: var, let, const, readonly, static, abstract
  • Sintaxe de Construtores
  • Métodos públicos e privados
  • Argumentos opcionais e obrigatórios de métodos
  • Construtores cheios e vazios
  • Getters & Setters
  • Entidades, Enums, Constantes
  • Interfaces e Herança (Implents, Extends)
  • Serviços e injeção de dependência
  • Entendendo Prototype
  • Callbacks
  • Call vs Apply
  • Sort para ordenação de Arrays
  • Entendendo Promises
  • AJAX e chamadas assíncronas
  • Serviços REST (GET, POST, PUT, DELETE) com protocolo HTTP
  • Entendendo formato de dados (JSON, JSONP, XML, etc)
  • Headers de requisição
  • Interceptando requisições
  • Entendendo o Angular4 Components e two-way-data-binding
  • Entendendo o app.module
  • Formulários reativos controlados na Classe
  • Regex, Máscaras e validação de campos
  • Rotas
  • Decorators
  • Entendendo Observables e o subscribe      
  • Criação de componentes e comunicação com @Inputs, @Outputs e Events
  • LocalStorage e SessionStorage
  • Conversão de variáveis (truncamento, arredondamento, etc)
  • Animações
  • Temas, CSS, SCSS
  • Bootstrap para criação de elementos: tables, buttons, inputs, panels, accordions, menu, forms
  • Criação de iframes e mapas
  • Angular generators com angular-cli: component, directive, pipe, service, class, interface, enum, module
  • Geradores de projetos com o Gulp, Grunt e Yeoman
  • Compilando o projeto como ng build
  • Condicionais de view ( ngIf, ngHide, ngClass, ngStyle, ngSwitch)         
  • Inputs File e tratamento de imagens (Base64, binary, FileReader, blob, atob, btoa)
  • Entendendo princípios de programação funcional (filter, map, reduce)
  • Design Patterns
  • Introdução ao Ionic, Phonegap e Cordova para criação de apps

Docker

  • Diferença de máquinas virtuais para containers
  • Configurando docker
  • Criando imagens e containers
  • Comunicação entre containers
  • Acessando portas e containers
  • Deploy na nuvem utilizando docker
  • Rodando um projeto em um container
  • Build com maven para geração de um container em um projeto com Spring Boot
  • Comandos docker (Docker cheat sheet)
  • Como dockerizar o ambiente de desenvolvimento para evitar problemas de "na minha máquina funciona"
  • Docker e microserviços
  • Docker compose
  • Docker e DevOps

Jenkins

  • Arquitetura do Jenkins
  • Jenkins Dashboards e Menus
  • Configurando Jenkins
  • Criando Jobs
  • Integração com Git e Github
  • Garantido a qualidade do código
  • Pipeline da integração contínua
  • Jenkins CLI
  • Controlando plugins
  • Criando projeto com Jenkins, Maven, GIT
  • Integração do Jenkins com Docker
  • Integração do Jenkins com Selenium
  • Notificação e envio de email com Jenkins
  • Métricas e gráficos para análise de desempenho do deploy

NodeJS e ExpressJS 

  • Criando projetos com o NPM como gerenciador de dependências
  • Configurando o package.json
  • Configurando o Express.JS
  • Criando rotas
  • Protegendo rotas
  • Criando módulos
  • Entendendo CORS, JSONP
  • Criando middlewares para tratamento de erros
  • Renderizando HTML com Template Engine Jade e EJS
  • Utilizando Websocket com comunicação bidirecional
  • Socket.io para criação de aplicação de chat
  • Criptografando senhas para persistência em banco
  • Rotas protegidas com o JWT (JSON Web Token) e Express-JWT
  • Integração do Express com o MongoDB utilizando o Mongoose
  • Compreendendo Roles de aplicação e ambientes de desenvolvimento, homologação e produção
  • Criando um módulo para tratamento e persistência de imagens (encode, decode, compress, save, buffer, binary)
  • Criando logs da aplicação
  • Criando scripts Shellscripts para automação de rotinas e deploys
  • Enviando email via SMTP
  • Introdução ao deploy na Amazon AWS

MongoDB 

  • Mongo Shell
  • Diferença de SQL para noSQL
  • Fazendo CRUD com MongoDB (Create, Read, Update, Delete)
  • Inserindo documents em collections
  • Recuperando e atualizando documents
  • Removendo um document
  • Consultas avançadas: find, findOneAndUpdate, getCollection, limit, findById, upsert, etc
  • Atualizando documentos em massa
  • Regex no mongoDB para tratamento de acentuação
  • Queries de similaridade no MongoDB
  • Ordenação de dados
  • Criando Ids dinâmicos baseados no timestamp atual
  • Otimizações e queries performáticas
  • Fazendo backup da base de dados
  • Paginando documentos
  • Operadores lógicos em queries: $or, $and, $not, $nor
  • Operadores de comparação em queries: $lte, $in, $gte, etc
  • Operadores de queries baseadas em arrays: $all, $elemMatch, $size
  • Validações e schemas com Mongoose

Testes  Unitários

  •  Automatize sua aplicação com o KARMA e AVA
  • Criação de testes unitários de integração de API
  • Testando microserviços antes da integração com o backend
  • Garantindo integridade do código

Desenvolvimento de aplicações Java baseadas em REST (JAX-RS)

  • Entendendo o padrão REST
  • Arquitetura REST em Java com Serviços JAX-RS
  • Requisições GET, POST, PUT, DELETE Transferindo dados no formato JSON
  • Separando a camada de Aplicação REST e a camada de interface de Usuário
  • Consumindo serviços REST

 

 Spring Boot Web MVC

  • Spring Boot com padrão MVC
  • Dispatcher Servlet
  • Controllers. ModelAndView
  • Hibernate
  • WebServices

 OutSystems

  • Estruturas, Entidades
  • Queries no backend
  • Camada de interface
  • Microserviços
  • Notify
  • Actions
  • Agregates
  • Data Binding
  • Forms e variáveis de controle
  • List Records
  • Modules e injeção de dependência

Aplicações e Projetos a serem realizados no curso

  • Aplicação de Listagem e busca de produtos
  • Login de usuários com autenticação JWT
  • Aplicação de funcionários com persistência de imagens
  • Carrinho de Compras
  • Autocomplete para Busca em estoques
  • Envio de email com o log da aplicação
  • Deploy da aplicação no Heroku e no Hostinger com registro de domínio
  • Chat em tempo real
  • Criação de gráficos (pizza, barras, linhas) em tempo real com D3.v3, ChartJS para geração

de relatórios