- COMP.SE.140
- 1. Introduction to the course
- 1.4 Course material
Course material¶
Material is been collected here. Some material is accessible from university intranet (VPN is enough).
DevOps¶
Definition and background: Lwakatare, Lucy Ellen, Doctoral Dissertation, University of Oulu, 2017, DevOps adoption and implementation in software development practice : concept, practices, benefits and challenges, <http://jultika.oulu.fi/files/isbn9789526217116.pdf> Read at least sections 2.1 and 2.2.
There is also this blog-type tutorial <http://dev2ops.org/2010/02/what-is-devops/>, but do not use that as the main reference in a thesis.
Everybody should not be an expert on everything, thus DevOps work requires special roles and organisation of the work:
- Taivalsaari , A , Mikkonen , T , Pautasso , C & Systä , K 2021 , Full Stack Is Not What It Used to Be . in M Brambilla , R Chbeir , F Frasincar & I Manolescu (eds) , Web Engineering : 21st International Conference, ICWE 2021, Biarritz, France, May 18–21, 2021, Proceedings . Springer Nature Switzerland , pp. 363-371 , International Conference on Web Engineering , Biarritz , France , 18/05/2021 . https://doi.org/10.1007/978-3-030-74296-6_28 <https://helda.helsinki.fi/items/47b6de91-ad0b-4bd4-9e40-ac2b5c61a040>
- Platform engineering <https://platformengineering.org/blog/what-is-platform-engineering> (just a blog)
- Site reliability engineering <https://aws.amazon.com/what-is/sre/> (just a blog)
Material about DevOps for regulated applications:
- Laukkarinen, T., Kuusinen, K., Mikkonen, T.: DevOps in Regulated Software Development: Case Medical Devices. In: 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE-NIER), pp. 15-18. IEEE (2017)
- Laukkarinen, T., Kuusinen, K., Mikkonen, T.: Regulated software meets DevOps. Information and Software Technology, vol. 97, pp. 176—178. (2018)
- Toivakka, H., Granlund, T., Poranen, T., Zhang, Z. (2021). Towards RegOps: A DevOps Pipeline for Medical Device Software. In: Ardito, L., Jedlitschka, A., Morisio, M., Torchiano, M. (eds) Product-Focused Software Process Improvement. PROFES 2021. Lecture Notes in Computer Science(), vol 13126. Springer, Cham. https://doi.org/10.1007/978-3-030-91452-3_20
DORA-metrics - <https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance>
About DevOps toolchain:
- Periodic Table of DevOps tools, <https://xebialabs.com/periodic-table-of-devops-tools/>. This page divides the tools to categories and gives multiple examples.
- “Improving the delivery cycle: A multiple-case study of the toolchains in Finnish software intensive enterprises” <https://www.sciencedirect.com/science/article/abs/pii/S0950584916301434> This research is from a few years back but shows the diversity of the tool chains.
DevSecOps: - https://www.beyondtrust.com/blog/entry/devops-security-best-practices - H. Myrbakken, R. Colomo-Palacios, DevSecOps: A Multivocal Literature Review., in: A. Mas, A. Mesquida, R. O’Connor, T. Rout, A. Dorling (eds) Software Process Improvement and Capability Determination. SPICE 2017. Communications in Computer and Information Science, vol 770. Springer, Cham, 2017, pp. 17-20. https://doi.org/10.1007/978-3-319-67383-7_2.
Experimentation-like development+business processes enabled by DevOps:
- Olsson, Helena Holmström and Jan Bosch. “The HYPEX Model: From Opinions to Data-Driven Software Development.” Continuous Software Engineering (2014).
- Yaman, Sezin Gizem et al. “Introducing continuous experimentation in large software-intensive product and service organisations.” Journal of Systems and Software 133 (2017): 195-211.
See also “lecture” material of 5.9 and 31.10.
Continuous deployment¶
- Jez Humble and David Farley. 2010. Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation (1st ed.). Addison-Wesley Professional.
- A short intro: https://continuousdelivery.com/principles/
- Mojtaba Shahin, Muhammad Ali Babar, Liming Zhu, Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices, IEEE Access, 2017, Available: <https://www.researchgate.net/publication/315381994_Continuous_Integration_Delivery_and_Deployment_A_Systematic_Review_on_Approaches_Tools_Challenges_and_Practices>
- Simo Mäkinen, Marko Leppänen, Terhi Kilamo, Anna-Liisa Mattila, Eero Laukkanen, Max Pagels, Tomi Männistö, Improving the delivery cycle: A multiple-case study of the toolchains in Finnish software intensive enterprises. Information and Software Technology, vol 80, pp. 1339-1351. DOI: 10.1016/j.infsof.2016.09.001, Available: <https://tutcris.tut.fi/portal/en/publications/improving-the-delivery-cycle(3c1f745d-161d-49f0-8ce8-4371f9d3fd2c).html>
- Leppänen et al., “The highways and country roads to continuous deployment,” in IEEE Software, vol. 32, no. 2, pp. 64-72, Mar.-Apr. 2015. doi: 10.1109/MS.2015.50, URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7057604&isnumber=7057030
- Nice reminders about bad habits in continuous integration: <https://www.slideshare.net/sebastianopanichella/an-empirical-characterization-of-bad-practices-in-continuous-integration>
- BlueGreenDeployment http://martinfowler.com/bliki/BlueGreenDeployment.html Canary Releases (http://martinfowler.com/bliki/CanaryRelease.html
See also “lecture” material of 24.10, 31.10
Cloud Computing¶
History
- <https://www.dataversity.net/brief-history-cloud-computing>
- <https://en.wikipedia.org/wiki/Cloud_computing>
Definition
- Peter Mell; Timothy Grance (September 2011). The NIST Definition of Cloud Computing (Technical report). National Institute of Standards and Technology: U.S. Department of Commerce. doi:10.6028/NIST.SP.800-145. Special publication 800-145. <https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf>
- Example about Pets and Cattle <https://blogs.tuni.fi/cs/research/cattle-instead-of-pets-end-of-carefully-crafted-software/>
Virtualization
- Fernando Rodriguez-Haro et al., A summary of virtualization techniques, Procedia Technology, vol. 3, pp. 267. 272, 2012, the 2012 Iberoamerican Conference on Electronics Engineering and Computer Science. A summary of virtualization techniques, <https://www.sciencedirect.com/science/article/pii/S2212017312002587>
- VMWare Inc., Understanding Full Virtualization, Paravirtualization, and Hardware Assist, 2008. <https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf>
Docker
- Nice tutorial about docker: <https://docs.docker.com/get-started/>
- Another tutorial, nicely interactive: <https://www.katacoda.com/courses/container-runtimes>
See also “lecture” material of 12.09 (about containers)
Cloud-aware architectures¶
General information about
- 10 Key Attributes of Cloud-native Applications, <https://thenewstack.io/10-key-attributes-of-cloud-native-applications/>
- What are cloud-native applications? <https://opensource.com/article/18/7/what-are-cloud-native-apps>
- Native cloud application (NCA), <https://searchitoperations.techtarget.com/definition/native-cloud-application-NCA>
- Understanding cloud-native applications, <https://www.redhat.com/en/topics/cloud-native-apps>
- David S. Linthicum, Cloud-Native Applications and Cloud Migration: The Good, the Bad, and the Points Between, IEEE Cloud Computing, December 2017. <https://ieeexplore.ieee.org/document/8125545>
- Cloud Native Computing Foundation: https://www.cncf.io
- https://www.getambassador.io/resources/rise-of-cloud-native-engineering-organizations
See also “lecture” material of 26.09
Microservices
- Netflix story (Mastering Chaos - A Netflix Guide to Microservices) <https://www.youtube.com/watch?v=CZ3wIuvmHeM>
- Blog-type, but often cited, of material from Martin Fowler https://ieeexplore.ieee.org/document/8125545
- An example of a case where microservices are not ok: N. C. Mendonça, C. Box, C. Manolache and L. Ryan, “The Monolith Strikes Back: Why Istio Migrated From Microservices to a Monolithic Architecture,” in IEEE Software, vol. 38, no. 5, pp. 17-22, Sept.-Oct. 2021, doi: 10.1109/MS.2021.3080335. https://ieeexplore.ieee.org/document/9520758
See also “lecture” material of 26.09
Serverless / FaaS
- https://www.ibm.com/topics/faas
- Google variant, Google Function: https://cloud.google.com/functions/docs/console-quickstart
- Amazon, AWS Lambda: https://aws.amazon.com/pm/lambda/?trk=5e541ab3-2fcc-4151-9e08-fdea53dc7fb
- Microsoft: Azure functions https://azure.microsoft.com/en-gb/products/functions/
- Taibi, Davide, et al. “Serverless cloud computing (function-as-a-service) patterns: A multivocal literature review.” Proceedings of the 10th International Conference on Cloud Computing and Services Science (CLOSER’20). 2020. https://www.researchgate.net/profile/Davide-Taibi/publication/340121613_Patterns_for_Serverless_Functions_Function-as-a-Service_A_Multivocal_Literature_Review/links/5e79f9fb92851c3091392bd4/Patterns-for-Serverless-Functions-Function-as-a-Service-A-Multivocal-Literature-Review.pdf
See also “lecture” material of 07.11
Communication
- Some information about API Gateways: https://microservices.io/patterns/apigateway.html
- ReST: tutorial: https://restfulapi.net ; ultimate reference: Fielding, Roy T.. “Architectural Styles and the Design of Network-based Software Architectures”; Doctoral dissertation.” (2000). https://ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf
- Example of Message Queue: RabbitMQ: https://www.rabbitmq.com/getstarted.html
- gRPC: https://grpc.io
See also “lecture” material of 03.10