Awesome Open Source
Awesome Open Source

Desenvolvimento de Aplicações Nativas da Nuvem com Arquitetura Baseada em Microservices

IF1007

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

Instrutores

Disciplinas

  • Pós-Graduação: IN1062 - Tópicos Avançados em Sistemas Distribuídos 3
  • Graduação: IF1007 - Tópicos Avançados em Sistemas de Informação 4

Local

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

Comunicação

  • Temos um canal no Slack para uma comunicação mais dinâmica: IF1007 & IN1062 (para entrar, tem que utilizar o e-mail institucional do CIn).

Edições passadas

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.

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.

Projetos

Recursos

Microservice-Based Applications Demo

  • Sock Shop: A Microservices Demo Application
  • Hispter Shop (Online Boutique): A cloud-native microservices demo application form Google (10 microservices)
  • Stan's Robot Shop: A sample microservice application you can use as a sandbox to test and learn containerised application orchestration and monitoring techniques
  • TrainTicket: A Benchmark Microservice System (41 microservices)
  • DeathStarBench: Open-source benchmark suite for cloud microservices (5 microservices)
  • TeaStore: A microservice reference and test application to be used in benchmarks and tests (5 microservices)
  • A curated list of Open Source projects developed with a microservices architectural style

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
  • Kubernetes orquestration enviroment
  • The Microservices Development Life Cycle

Plano de aulas 2020.1

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

Disciplinas correlatas e/ou influenciadas

Após a iniciativa de construção desta disciplina, outras nasceram motivadas por este movimento ou inspiradas nos tópicos aqui cobertos. São elas:


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (697,371
Docker (34,483
Spring Boot (12,444
Kubernetes (11,896
Microservice (5,985
Devops (4,007
Containers (3,235
Spring Cloud (1,674
Ci Cd (1,382
Course (1,107
Cloud Native (881
Microservices Architecture (450
Containerization (170
Cin (12
Ufpe (10
Disciplina (6
Related Projects