/if1007-Microservices

Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices

Primary LanguageJavaMIT LicenseMIT

IF1007 - Tópicos Avançados em Sistemas de Informação 4

Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices

IF1007

Sistemas de Informação, Centro de Informática, (UFPE)

Instrutores

Local

  • Centro de Informática, horários: segunda (17:00-18:40) e quarta (18:50-20:30), sala E-112.
  • Canal de comunicação oficial no Slack
  • Aulas práticas, quando ocorrerem, serão no Lab G2 (preferencialmente).

Ementa

Microservice é um estilo e padrão de arquitetura de software em que sistemas complexos são decompostos em serviços menores que trabalham em conjunto para formar serviços maiores. Os Microservices são serviços autônomos, independentes e independentemente implantáveis. No mundo de hoje, muitas empresas usam microservices como principal padrão para a construção de aplicativos corporativos grandes e orientados a serviços.

O framework Spring é um framework de programação popular com a comunidade de desenvolvedores por muitos anos. O Spring Boot removeu a necessidade de ter um conteiner leve de aplicação e forneceu um meio para implantar aplicativos leves e sem servidor. O Spring Cloud combina muitos componentes e junto com o OSS Netflix e fornece um ecossistema para executar e gerenciar microservices em grande escala. Ele fornece recursos como balanceamento de carga, registro de serviço, monitoramento, gateway de serviço e assim por diante.

No entanto, os microservices vêm com seus próprios desafios, como monitoramento, gerenciamento, distribuição, dimensionamento, descoberta, etc., especialmente quando se implanta em escala. A adoção de microservices sem abordar os desafios dos microservices comuns levaria a resultados catastróficos. A parte mais importante deste curso é discutir um modelo de capacidade de microservice agnóstico em termos de tecnologia que busca ajudar a resolver os desafios mais comuns do mundo de microservice.

Bibliografia Sugerida

Não há livro texto obrigatório. Entretanto, a seguir estão alguns livros que podem ser recomendados:

Bibliografia Complementar

Bibliografia sobre Ferramentas, Frameworks e Tecnologias

Blogs, Disciplinas, Treinamentos

Business Cases

Research Trends

Objetivos

Espera-se que os alunos vivenciem exposição prática a ferramentas, processos e princípios do desenvolvimento de aplicações baseadas na arquitetura de microservices, juntamente com as boas práticas e técnicas de implantação nos princípios de DevOps e as vantagens e desafios do uso e imersão na Computação em Nuvem através de projetos práticos, enquanto compreendem modelos e ideias de pesquisa por trás das ferramentas e processos. As aulas incluirão experiências de aprendizagem no estilo de workshops, onde os alunos irão trabalhar em um problema e receberão comentários do professor, colaboradores convidados e outros colegas de classe. Quando possível, palestras convidadas da indústria ajudarão a ilustrar exemplos de como a tecnologia é implantada na prática.

Metodologia

Na disciplina, será utilizada uma mistura de aulas tradicionais com atividades e workshops em sala de aula. Durante as aulas, abordaremos conceitos básicos relacionados aos tópicos a serem tratados na disciplina. Durante os workshops em sala de aula, realizaremos exemplos de exercícios com ferramentas relevantes que reforçam o material de aula. As avaliações serão baseadas nas aulas, exercícios dirigidos, workshops e o projeto final.

Pré-Requisitos

Para participar deste curso é desejável que os participantes tenham:

  • Conhecimento básico de inglês técnico para leitura, estudo e acompanhamento das atividades propostas, uma vez que a maior parte do material disponível está em inglês.
  • Conhecimento básico de arquitetura de computador, sistemas operacionais, redes, engenharia de software e banco de dados.
  • Conhecimento de modelos de processo de desenvolvimento de software, em especial Metodologias Ágeis, testes de software. Conhecimento em TDD e BDD serão uma vantagem. Maiores informações podem ser consultadas no site da disciplina de Engenharia de Software (IF977).
  • Experiência em sistemas de computação, armazenamento, infraestruturas de rede e computação em nuvem será uma vantagem.

Artigos

Avaliação

  • Projeto em equipe com até 3 membros [70%]
    • Caráter puramente acadêmico e educacional. O projeto vai tratar de diversos aspectos do desenvolvimento de uma aplicação simples com arquitetura de microsserviços.
  • Observações:
    • Entrega fora do prazo: redutor de 1 ponto por dia de atraso.
    • Atraso máximo: 1 (uma) semana. Após esse prazo, será dada nota zero para a respectiva atividade de avaliação.
    • Trabalhos com referências bibliográficas inconsistentes terão um redutor no conteúdo técnico.
    • Trabalhos “CTRL-C + CTRL-V” terão nota zero (vale tanto para cópia de colegas, como para trabalhos copiados da internet).
  • Exercício Escolar Teórico Individual e/ou Atividades Práticas Individuais [30%]
    • Exercício com questões objetivas
  • Como atividade de recuperação é proposta a aplicação de um Exercício Escolar abordando os temas apresentados e discutidos em classe.

Tópicos

  • Welcome, Methodology, Course Introduction (Core Topics)
  • Introduction to Microservices Concepts
  • Demystifying Microservices
  • Building Microservices with Spring Boot
  • Applying Microservices Concepts
  • Microservices Evolution – A Case Study
  • Scaling Microservices with Spring Cloud
  • Autoscaling Microservices
  • Logging and Monitoring Microservices
  • Containerizing Microservices with Docker
  • Managing Dockerized Microservices with Mesos and Marathon
  • The Microservices Development Life Cycle

Plano de aulas

# Class Topics                           Assignments
01 Feb-26 Welcome, Methodology, Course Introduction (Core Topics)
02 Feb-28 Introduction to Microservices Concepts HW1
03 Mar-05 Demystifying Microservices 1/2
04 Mar-07 Demystifying Microservices 2/2 HW2
05 Mar-12 Building Microservices with Spring Boot 1/2
06 Mar-14 Building Microservices with Spring Boot 2/2 HW3
07 Mar-19 Applying Microservices Concepts 1/2
08 Mar-21 Applying Microservices Concepts 1/2 HW4
09 Mar-26 Microservices Evolution – A Case Study 1/2
10 Mar-28 Microservices Evolution – A Case Study 2/2 HW5
11 Apr-02 Scaling Microservices with Spring Cloud 1/2
12 Apr-04 Scaling Microservices with Spring Cloud 2/2 HW6
13 Apr-09 Autoscaling Microservices 1/2
14 Apr-11 Autoscaling Microservices 2/2 HW7
15 Apr-16 Background: Operations (Chapter 3 from Len Bass' book) HW9
16 Apr-18 The Deployment Pipeline (Chapter 4 from Len Bass' book)
17 Apr-23 Logging and Monitoring Microservices 1/2
18 Apr-25 Logging and Monitoring Microservices 2/2 HW8
19 Apr-30 Containerizing Microservices with Docker 1/2
20 May-02 Containerizing Microservices with Docker 2/2 HW11.1, HW11.2
21 May-07 Managing Dockerized Microservices with Mesos and Marathon 1/2
22 May-09 Managing Dockerized Microservices with Mesos and Marathon 2/2 HW12
23 May-14 Introduction to Kubernetes 1/2
24 May-16 Introduction to Kubernetes 2/2
25 May-21 The Microservices Development Life Cycle 1/2
26 May-23 The Microservices Development Life Cycle 2/2
27 May-28                                  
28 May-30                  
29 Jun-04                                  
30 Jun-06                                  
31 Jun-11                                    
32 Jun-13                                    
33 Jun-18                                    
34 Jun-20                                    
35 Jun-25                                    
36 Jun-27                                    
37 Jul-02                                    
38 Jul-04                                    
39 Jul-09                                    
40 Jul-11