Skip to content
/ if1007 Public

Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices

License

Notifications You must be signed in to change notification settings

IF1007/if1007

Repository files navigation

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: