Git Product home page Git Product logo

if1007's Introduction

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

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

  • Play with Docker: A simple, interactive and fun playground to learn Docker
  • Play with Kubernetes: A simple, interactive and fun playground to learn Kubernetes
  • Sock Shop: A Microservices Demo Application
  • Envoy Proxy: An Open Source Edge and Service Proxy, Designed for Cloud-Native Applications

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 2019.1

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

if1007's People

Contributors

vinicius3w avatar gpkc avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.