Sistemas de Informação, Centro de Informática, (UFPE)
- Professor Vinicius Cardoso Garcia ([email protected])
- Pós-Graduação: IN0980 - Tópicos Avançados em Engenharia de Software 3
- Graduação: IF1004 - Seminários em Sistemas de Informação 3
Centro de Informática, horários: segunda (17:00-18:40) e quarta (18:50-20:30), sala E113.
Aulas práticas, quando ocorreram, serão no Lab G2.
- Temos um canal no Telegram para uma comunicação mais dinâmica: Reliability Engineering Group Channel
As modernas organizações de desenvolvimento de software exigem equipes inteiras de DevOps para automatizar e manter processos de engenharia de software e infraestrutura vitais para a organização. Nesta disciplina, os alunos terão exposição prática às habilidades, ferramentas e conhecimentos necessários para automatizar processos e infraestruturas de engenharia de software. Os alunos terão a chance de criar novas, ou ampliar, ferramentas existentes de engenharia de software e projetar um pipeline DevOps.
Não há livro texto obrigatório. Entretanto, a seguir estão alguns livros que podem ser recomendados:
- DevOps: A Software Architect's Perspective (SEI Series in Software Engineering), by Len Bass, Ingo Weber, Liming Zhu. Addison-Wesley Professional; 1 edition (May 28, 2015).
- Site Reliability Engineering: How Google runs Production Systems. Edited by Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy. O'Reilly Media, Incorporated, 2016.
- DevOps na prática: entrega de software confiável e automatizada, by Danilo Sato. Casa do Código, 2013.
- The Site Reliability Workbook, Edited by Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara and Stephen Thorne. O'Reilly Media, Inc., 2018.
- The evolution of DevOps
- Continous Integration
- The Practice of Cloud System Administration
- Building Microservices: Designing Fine-Grained Systems
- Entrega contínua em Android: Como automatizar a distribuição de apps
- Continuous Delivery with Docker and Jenkins, by Rafał Leszko. Packt Publishing, 2017.
- Architecting and Designing
- Ansible
- Cloud Computing and other Technologies
- The Future of Cloud Providers in Kubernetes, Authors: Andrew Sy Kim (VMware), Mike Crute (AWS), Walter Fender (Google) -- April 17, 2019
- Cloud Computing: Concepts, Technology & Architecture
- Four Layers of TCP/IP model, Comparison and Difference between TCP/IP and OSI models
- The Google Cloud Developer Cheat Sheet
- Public Cloud Services Comparison
- VMs vs. Containers for Microservices, by Spruha Pandya -- Mar 19, 2019
- Continuous Integration, Deployment or Delivery
- Continuous Delivery Metrics: Part 1: Why measure your CD process, Part 2: How often do you deploy to production?, Part 3: How long does it take to get from committing code to production?, Aravind S.V and Suzie Prince.
- 2018 CONTAINER ADOPTION BENCHMARK SURVEY, by Diamanti -- July 31, 2018
- CI/CD with Angular 6 & Firebase & GitLab: Automate build, test and deployment using GitLab CI/CD, by Kai Niklas -- Dec 23 - 2018.
- DevOps101: How To Provide Infrastructure To Your Startup In 7 Easy Steps, by Rafael Belchior -- Dec 2018
- Practical DevOps, by Joakim Verona. Packt Publishing Limited -- 2016.
- Implementing DevOps on AWS, by Veselin Kantsev. Packt Publishing Limited -- 2017.
- Package Management Basics: apt, yum, dnf, pkg (by Digital Ocean
- Continous Delivery
- Best Jenkins alternatives. Top CI/CD Tools for your Android and iOS projects
- Culture, Methods, Processes and Paradigms
- What Is Containerization?, by Shaan RayFollow, Feb 5 - 2019.
- The 2018 DevOps RoadMap: An illustrated guide to becoming a DevOps Engineer with links to relevant courses, by javinpaul -- Oct 7, 2018
- Why DevOps and Security Should Go Hand in Hand?
- SRE vs. DevOps — The Dilemma
- 10deploys (Podcast) - Site Reliability Engineering no Google
- 10deploys (Podcast) - DevOps e Continuous Delivery na Leroy Merlin
- Is DevOps leaving developers behind?
- DevOps Team Roles And Responsibilities
- The Evolution of DevSecOps Revisited
- Why companies need a container strategy now
- Demystified: 5 Myths of DevOps Services
- Systems Performance: Enterprise and the Cloud
- Roadmap to becoming a web developer in 2018
- Docker
- WTF is Docker?, A brief explanation of Docker and Docker compose in English
- Docker In A Nutshell
- What You Need to Know about Docker, by Scott Gallagher. Packt Publishing Limited.
- Docker Cookbook, by Neependra Khare. Packt Publishing Limited -- 2015.
- Docker on Windows, by Elton Stoneman. Packt Publishing Limited -- 2017.
- Learning Docker - Second Edition, by Jeeva S. Chelladhurai, Vinod Singh, Pethuru Raj. Packt Publishing Limited -- 2017.
- Mastering Docker - Second Edition, by Russ McKendrick, Scott Gallagher. Packt Publishing Limited -- 2017.
- Como Construir Imagens Docker e Hospedar um Repositório de Imagens Docker com o GitLab
- 10 Free Courses to Learn Docker for Programmers and DevOps Engineers
- The Future of Docker Swarm -- Sep 06, 2018
- Docker Commands — The Ultimate Cheat Sheet
- Docker Tutorial Series Part 1: Images, Layers and Dockerfile
- Docker Tutorial Series Part 2: Microservice Architecture
- Mike Coleman (Docker Employee) "Docker for the Virtualization Admin" eBook
- Containers com Docker: Do desenvolvimento à produção
- Docker Tutorials and Labs (This repo contains Docker labs and tutorials authored both by Docker, and by members of the community)
- Tupperware: Containerized Deployment at FB
- Docker Cloud Fleet Management and Collaboration (YouTube)
- Journey to Docker Production: Evolving Your Infrastructure and Processes, Bret Fisher: Independent Docker and DevOps Consultant, DockerCon17 in Austin
- Taking Docker to Production: What You Need to Know and Decide, Bret Fisher: Independent Docker and DevOps Consultant, DockerCon Europe 2017
- 7 best practices for building containers
- Rodando aplicações GUI em Docker (Youtube)
- 8 Tips for Containerizing Django Apps
- Jenkins
- Kubernetes
- Jérôme Petazzoni - Talk about Kubernetes | ContainerWeek, by Jérôme Petazzoni -- April 8, 2019.
- KUBECTL PARA PREGUIÇOSOS, by Wellington Bastos -- March 17, 2019.
- Instalando e configurando kubernetes localmente com o minikube no Mac OSX, by Vinicius Garcia -- Jan 03, 2019
- Solving the Kubernetes and Storage Challenge -- Dec 5, 2018
- Kubernetes vs Docker Swarm — A Comprehensive Comparison, by Harsh Binani -- Dec 4, 2018.
- Kubernetes Cookbook, by Hideto Saito, Hui-Chuan Chloe Lee, Ke-Jou Carol Hsu. Packt Publishing Limited -- 2017.
- [Mastering Kubernetes], by Gigi Sayfan. Packt Publishing Limited -- 2017.
- Como Criar um Cluster Kubernetes 1.10 Usando Kubeadm no CentOS 7
- Como Criar um Cluster Kubernetes 1.11 Usando Kubeadm no Ubuntu 18.04
- From open source to sustainable success: the Kubernetes graduation story
- Top 10 Kubernetes tips and tricks
- Criando um cluster simples em cloud com o kubeadm
- 11 Ways (Not) to Get Hacked - Kubernetes
- Rancher
- Serverless
- Spring Boot
- Swarm
- Docker 1.12 Swarm Mode Deep Dive Part 1: Topology
- Docker 1.12 Swarm Mode Deep Dive Part 2: Orchestration
- Heart of the SwarmKit: Topology Management by Andrea Luzzardi
- Everything You Thought You Already Knew About Orchestration, Laura Frank from DockerCon 2017
- Using Prune to Keep Your Docker System Clean (YouTube)
- Testes
- Travis CI
- Travis CI, Test and Deploy with Confidence
- An introduction to immutable infrastructure
- Is DevOps driving enterprise cloud adoption or vice versa?
- Kubernetes Ingress: NodePort, Load Balancers, and Ingress Controllers
- Deploying Java Applications with Docker and Kubernetes & oreilly-docker-java-shopping
- Deploying Java Applications with Kubernetes and an API Gateway
- LFS158x: Introduction to Kubernetes
- Introduction to Cloud Infrastructure Technologies
- Fundamentals of Containers, Kubernetes, and Red Hat OpenShift
- Architecting Distributed Cloud Applications
- Where to Start with DevOps Series, October 17, 2016 by Gene Kim (must read!)
- Simon Brown on the Role of the Software Architect in a Continuous Delivery Environment
- IF1006 - TÓPICOS AVANÇADOS EM SISTEMAS DE INFORMAÇÃO 3 (SERVIÇOS E INFRAESTRUTURA DE NUVEM) - 2017.1
- IF1007 - Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices
- Google Cloud Platform Blog
- DevOps | AWS Cloud | Cloud Tutorials for Beginners
- Containers Patterns: There are a thousand ways to use containers
- Principles of Container-based Application Design
- Docker, FROM scratch - Aaron Powell [YouTube], NDC Conferences, Publicado em 25 de set de 2017
- DevOps in Healthcare: Benefits & Case Studies -- Sep 17, 2018.
- Monitoring containerized microservices with a centralized logging architecture. A case study of Project Horus -- Sep 12, 2018.
- DevOps in Financial Services: Benefits, Myths, Case studies -- Sep 11, 2018
- Forced Evolution: Shopify's Journey to Kubernetes -- June 25-26, 2018
- The Secret to Amazons Success Internal APIs -- Jan 12, 2012
- SOA done right: the Amazon strategy -- Jun 26, 2007
- Building Products at SoundCloud — Part I: Dealing with the Monolith, By Phil Calçado -- June 11th, 2014
- Building Products at SoundCloud—Part II: Breaking the Monolith, By Phil Calçado -- June 12th, 2014
- MicroServices at Netflix, August 8, 2014
- How we build microservices at Karma -- Apr 4, 2016
- The Top 10 Adages in Continuous Deployment, by InfoQ -- Sep 19, 2017
- Spotify Lessons: Learning to Let Go of Machines, by James Wen -- Sep 19, 2017
- H. Zhu and I. Bayley, "If Docker is the Answer, What is the Question?," 2018 IEEE Symposium on Service-Oriented System Engineering (SOSE), Bamberg, 2018, pp. 152-163. doi: 10.1109/SOSE.2018.00027
- Jez Humble. 2018. Continuous delivery sounds great, but will it work here?. Commun. ACM 61, 4 (March 2018), 34-39. DOI: https://doi.org/10.1145/3173553.
- G. Pallis, D. Trihinas, A. Tryfonos and M. Dikaiakos, "DevOps as a Service: Pushing the Boundaries of Microservice Adoption," in IEEE Internet Computing, vol. 22, no. 3, pp. 65-71, May./Jun. 2018. doi: 10.1109/MIC.2018.032501519
- M. Waseem and P. Liang, "Microservices Architecture in DevOps," 2017 24th Asia-Pacific Software Engineering Conference Workshops (APSECW), Nanjing, 2017, pp. 13-14. doi: 10.1109/APSECW.2017.18.
- Bass, L. (2017). The Software Architect and DevOps. IEEE Software, 35(1), 8–10. https://doi.org/10.1109/MS.2017.4541051
- Jaemyoun Lee and Kyungtae Kang. 2017. Poster: A Lightweight Live Migration Platform with Container-based Virtualization for System Resilience. In Proceedings of the 15th Annual International Conference on Mobile Systems, Applications, and Services (MobiSys '17). ACM, New York, NY, USA, 158-158. DOI: 10.1145/3081333.3089302.
- Eddie Antonio Santos, Carson McLean, Christopher Solinas, Abram Hindle, How does Docker affect energy consumption? Evaluating workloads in and out of Docker containers, 2 May 2017.
- M. Kassab, J. F. DeFranco and P. A. Laplante, "Software Testing: The State of the Practice," in IEEE Software, vol. 34, no. 5, pp. 46-52, 2017. doi: 10.1109/MS.2017.3571582
- R. Valerdi, "Why Software Is Like Baseball," in IEEE Software, vol. 34, no. 5, pp. 7-9, 2017. doi: 10.1109/MS.2017.3571583
- M. Kersten, "Value Stream Architecture," in IEEE Software, vol. 34, no. 5, pp. 10-12, 2017. doi: 10.1109/MS.2017.3571573
- E. Woods, "Should Architects Code?," in IEEE Software, vol. 34, no. 5, pp. 20-21, 2017. doi: 10.1109/MS.2017.3571574
- M. Waseem and P. Liang, "Microservices Architecture in DevOps," 2017 24th Asia-Pacific Software Engineering Conference Workshops (APSECW), Nanjing, 2017, pp. 13-14. doi: 10.1109/APSECW.2017.18.
- J. C. Carver, B. Penzenstadler, A. Serebrenik and A. Yamashita, "The Human Factor," in IEEE Software, vol. 34, no. 5, pp. 90-92, 2017. doi: 10.1109/MS.2017.3571580
- K. Carter, "Francois Raynaud on DevSecOps," in IEEE Software, vol. 34, no. 5, pp. 93-96, 2017. doi: 10.1109/MS.2017.3571578
- Y. Zhao, A. Serebrenik, Y. Zhou, V. Filkov and B. Vasilescu, "The impact of continuous integration on other software development practices: A large-scale empirical study," 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), Urbana, IL, 2017, pp. 60-71.
- Lianping Chen, Continuous Delivery: Overcoming adoption challenges, Journal of Systems and Software, Volume 128, 2017, Pages 72-86, ISSN 0164-1212, https://doi.org/10.1016/j.jss.2017.02.013.
- Nane Kratzke, Peter-Christian Quint. Understanding cloud-native applications after 10 years of cloud computing - A systematic mapping study. Journal of Systems and Software, Volume 126, 2017, Pages 1-16, ISSN 0164-1212. doi: 10.1016/j.jss.2017.01.001.
- Eero Laukkanen, Juha Itkonen, Casper Lassenius, Problems, causes and solutions when adopting continuous delivery—A systematic literature review, Information and Software Technology, Volume 82, 2017, Pages 55-79, ISSN 0950-5849, https://doi.org/10.1016/j.infsof.2016.10.001.
- Pilar Rodríguez, Alireza Haghighatkhah, Lucy Ellen Lwakatare, Susanna Teppola, Tanja Suomalainen, Juho Eskeli, Teemu Karvonen, Pasi Kuvaja, June M. Verner, Markku Oivo. Continuous deployment of software intensive products and services: A systematic mapping study. In: Journal of Systems and Software, Volume 123, 2017, Pages 263-291, ISSN 0164-1212. doi: 10.1016/j.jss.2015.12.015.
- Brian Fitzgerald, Klaas-Jan Stol, Continuous software engineering: A roadmap and agenda, Journal of Systems and Software, Volume 123, 2017, Pages 176-189, ISSN 0164-1212, https://doi.org/10.1016/j.jss.2015.06.063.
-
- H. Kang, M. Le and S. Tao, "Container and Microservice Driven Design for Cloud Infrastructure DevOps," 2016 IEEE International Conference on Cloud Engineering (IC2E), Berlin, 2016, pp. 202-211. doi: 10.1109/IC2E.2016.26
- Savor, T., Douglas, M., Gentili, M., Williams, L., Beck, K., & Stumm, M. (2016). Continuous deployment at Facebook and OANDA. In Proceedings of the 38th International Conference on Software Engineering Companion - ICSE ’16 (pp. 21–30). New York, New York, USA: ACM Press.
- M. Ficco, C. Esposito, H. Chang and K. R. Choo, "Live Migration in Emerging Cloud Paradigms," in IEEE Cloud Computing, vol. 3, no. 2, pp. 12-19, Mar.-Apr. 2016. doi: 10.1109/MCC.2016.48
- Spinellis, D. (2016). Being a DevOps Developer. IEEE Software, 33(3), 4–5. doi: 10.1109/MS.2016.76
- Brendan Burns, Brian Grant, David Oppenheimer, Eric Brewer, John Wilkes. Borg, Omega, and Kubernetes. Communications of the ACM, May 2016, Vol. 59 No. 5, Pages 50-57. doi: 10.1145/2890784.
- Sergei Arnautov, Bohdan Trach, Franz Gregor, Thomas Knauth, Andr ́e Martin, Christian Priebe, Joshua Lind, Divya Muthukumaran, Dan O’Keeffe, Mark Still- well, David Goltzsche, David M. Eyers, Ru ̈diger Kapitza, Peter R. Pietzuch, and Christof Fetzer. SCONE: Secure Linux Containers with Intel SGX. In 12th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2016, Savan- nah, GA, USA, November 2-4, 2016., pages 689–703, 2016.
- C. Pahl, "Containerization and the PaaS Cloud," in IEEE Cloud Computing, vol. 2, no. 3, pp. 24-31, May-June 2015. doi: 10.1109/MCC.2015.51
- Gerry Gerard Claps, Richard Berntsson Svensson, Aybüke Aurum, On the journey to continuous deployment: Technical and social challenges along the way, Information and Software Technology, Volume 57, 2015, Pages 21-31, ISSN 0950-5849, https://doi.org/10.1016/j.infsof.2014.07.009.
Espera-se que os alunos vivenciem exposição prática a ferramentas, processos e princípios de engenharia de software 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.
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.
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.
- Play-with-docker: a simple, interactive and fun playground to learn Docker
- Play-with-k8s
- Spring Cloud Microservice Example
- An empirical study on principles and practices of continuous delivery and deployment
- A biblioteca do Desenvolvedor de Software dos dias de hoje
- The Difference between SOA and Microservices?
- Large-scale cluster management at Google with Borg
- DevOps: CSC 519, Prof. Chris Parnin, NC State University
- Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices, Prof. Vinicius Garcia, Centro de Informática - UFPE
- Programação para a Web 2, Prof. Diego Pessoa, CST em Análise e Desenvolvimento de Sistemas, IFPB - Campus Cajazeiras
- 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, serviço ou solução de apoio ao paradigma DevOps no ciclo de vida de software.
- O projeto é constituído da solução e todos os artefatos que a compõem (i.e. código fonte, imagens, arquivos de configuração, scripts, documentações de apoio, entre outras), um relatório técnico final contendo a contextualização, escopo, tomadas de decisão, documentação da arquitetura da solução, projeto de implantação, etc.
- A apresentação oral do projeto também conta como uma parte da avaliação do mesmo, todos os membros do time devem estar presentes.
- 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.