diegoep / PWEB2

Programação para a Web 2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Programação para a Web 2

CST em Análise e Desenvolvimento de Sistemas, IFPB - Campus Cajazeiras

Professor

Horários / Local

  • Horários: Quintas (13:00-15:15), Sala07/Lab.Inf.3 e Sextas (15:30-17:45), Sala10A/Lab.Inf.5
  • Canal de comunicação oficial no Slack: pweb2-2018-1.slack.com

Ementa

Arquitetura, ciclo de vida, conceitos e ferramentas para a construção de Aplicações Web avançadas. Novos padrões arquiteturais e paradigmas de desenvolvimento. Tópicos avançados e tendências.

Objetivo Geral

Exposição prática a conceitos, ferramentas e princípios do desenvolvimento de aplicações Web baseadas na arquitetura de microsserviços, juntamente com as boas práticas e técnicas de implantação utilizando-se dos princípios de DevOps.

Objetivos Específicos

  • Tornar o aluno capacitado a entender os fundamentos, desenvolver e gerenciar uma aplicação Web avançada baseada em microsserviços.
  • Aplicar e gerenciar os principais frameworks utilizados no desenvolvimento de aplicações Web
  • Apresentar todo o fluxo de desenvolvimento de uma aplicação Web avançada, da concepção, desenvolvimento, configuração, implantação e disponibilização para o usuário final.

Cronograma de aulas

# Aula Tópicos Homeworks
01 10-Mai Apresentação da disciplina e Introdução a Aplicações Web baseadas em Microsserviços HW1
02 11-Mai Prática no Desenvolvimento de Aplicação Web utilizando em Spring Boot
03 17-Mai Decompondo Aplicações em Microsserviços HW2
04 18-Mai Prática no Desenvolvimento de Microsserviços (Parte 1)
05 07-Jun Prática no Desenvolvimento de um Microsserviços (Parte 2)
06 08-Jun Prática no Desenvolvimento de Microsserviços (Parte 3)
07 12-Jul Padrões e conceitos para comunicação entre microsserviços HW3
08 13-Jul Prática com ferramentas para implementação de padrões de comunicação: Hystrix, Eureka, Zuul e Ribbon
09 19-Jul Padrões para comunicação assíncrona
10 20-Jul Introdução ao Apache Kafka e Exemplo Prático
11 27-Jul Gerenciando Transações Distribuídas com Sagas
12 28-Jul Prática com o framework Eventuate para comunicação assíncrona e transações distribuídas HW4
13 02-Ago Prática com troca de comandos assíncronos usando o eventuate tram
14 03-Ago Prática com recebimento de resposta de comandos e geração/tratamento de eventos com eventuate tram HW5
15 09-Ago Projetando Lógica de Negócio numa Arquitetura de Microsserviços
16 10-Ago Prática na definição da lógica de negócios do projeto da disciplina seguindo Domain Driven Design (DDD)
17 16-Ago Desenvolvendo lógica de negócios com Event-Sourcing
18 17-Ago Exemplo de aplicação baseada em Event-Sourcing e Exemplo de implementação de saga
19 23-Ago implementando consultas numa arquitetura de microsserviços
20 30-Ago Prática na construção de CQRS com Spring Cloud Stream
21 31-Ago Padrões para Consumo de API externas
22 06-Set Desenvolvendo serviços prontos para produção
23 14-Set Prática com Desenvolvimento de serviços para produção e ferramentas RAD - Criando aplicação com o JHipster
24 27-Set Implantando microsserviços
25 28-Set Prática com implantação de microsserviços como containers e Kubernetes
26 04-Out Testando Microsserviços

Conteúdo Programático (Tópicos)

  1. Nivelamento, revisão e aprofundamento de conceitos fundamentais
    • Controle de versão e integração contínua
    • Ferramentas para construção automática de projetos
  2. Migrando de aplicações monolíticas para aplicações baseadas em microsserviços
    • Definição, propósito e conceitos fundamentais da arquitetura de microsserviços
    • Modelagem e estratégias para decomposição de microsserviços
    • Visão geral dos componentes de uma aplicação Web baseada em microsserviços
    • Frameworks e ferramentas de desenvolvimento (Spring Boot, Netflix OSS)
  3. Desenvolvendo lógica de negócio numa arquitetura de microsserviços
    • Padrões de organização de lógica de negócio (Transaction Script, DDD)
    • Publicação de eventos de domínio
    • Mapeamento do modelo de dados em classes de domínio (entidades e migrações)
    • Serviços para gerenciamento de regras de negócio e acesso à base de dados
    • Disponibilização de APIs REST com paginação e consultas locais
  4. Comunicação entre microsserviços
    • Padrões de Comunicação entre aplicações Web
    • Formatos de Mensagens
    • Gerenciamento de transações
    • Mecanismos para Distribuição de carga alta-disponibilidade
    • Comunicação assíncrona e Message Brokers
  5. Consultas envolvendo microsserviços
    • Consumo de dados utilizando o padrão API composition
    • Adoção do padrão CQRS (Command Query Responsible Segregation)
    • Criação de visões para otimização de buscas
  6. Padrões para consumo como APIs externas
    • Desafios para integração de aplicações externas (Clientes Mobile, Front-end de aplicações Web)
    • O padrão API Gateway
    • Tecnologias para implementação do API Gateway (Spring Cloud, Eureka, Zuul)
  7. Testes em microsserviços
    • Estratégias para testes de microsserviços
    • Testes unitários por serviço
    • Testes de integração
    • Testes de componente
    • Testes de aceitação
  8. Desenvolvendo serviç os prontos para produção
    • Segurança em microsserviços (UAA – User account and Authentication, SSL)
    • Gerenciamento de Configuracão externa (push-based e pull-based)
    • Monitoramento de serviços: health check, logging, métricas, auditoria e exception tracking
    • Preparando perfis para diferentes ambientes (dev, teste, prod)
  9. Implantação de microsserviços
    • Componentes do pipeline para geração e implantação de serviços
    • Construção do pacote executável e cópia para um repositório compartilhado
    • Geração de imagem para implantação da aplicação como container
    • Avaliação de qualidade do código
    • Implantação da aplicação em um serviço na nuvem (Heroku, AWS)
  10. Tópicos avançados e tendências
    • Novos padrões para requisições REST (GraphQL)
    • Integração com serviços para utilização de algoritmos de Machine Learning
    • Web de Dados, Internet das Coisas e manipulação de dados semânticos

Metodologia de Ensino

A metodologia de ensino adotada compreende um misto de aulas tradicionais com atividades e workshops em sala de aula. Durante as aulas, serão abordados os conceitos básicos relacionados aos tópicos tratados na disciplina. Durante os workshops em sala de aula, serão realizados exemplos de exercícios com ferramentas relevantes que reforçam o material de aula.

Avaliação

Bibliografia Básica

LUCKOW, Décio; MELO, Alexandre. Programação Java para a Web – 2ª Edição. Novatec, 2015.

DEITEL, Paul; DEITEL, Harvey. Java: como programar. 10ª Edição. São Paulo: Pearson, 2016

KALIN, Martin. Java Web Services: implementando. Rio de Janeiro: Alta Books, 2010.

Bibliografia Complementar

RICHARDISON, Chris. Microsservices Patterns. Manning Publication, 2018. Disponível em: https://www.manning.com/books/microservices-patterns

CARNELL, John. Spring Microservices in Action. Manning Publication, 2017.

POSTA, Christian. Microservices for Java Developers. O’ Reilly, 2016. Disponivel em: https://www.oreilly.com/learning/microservices-for-java-developers

WALLS, Craig. Spring Boot in Action. Manning Publication, 2015.

HEMRAJANI, Anil. Desenvolvimento ágil em Java com Spring, Hibernate e Eclipse. São Paulo: Pearson, 2006.

PESSOA, Diego. Planilha: Desenvolvimento de Aplicações Web avançadas baseadas em microsserviços, 2018. Disponível em: http://github.com/diegoep/PWEB2.

Links Complementares sobre Ferramentas, Frameworks e Tecnologias

Referências / Inspirações

About

Programação para a Web 2


Languages

Language:Java 97.8%Language:Dockerfile 1.9%Language:Shell 0.3%