DevOps – LTAT.06.015 – Lecture 1 Introduction to DevOps - part 1 06th Sept 2022 Chinmaya Dehury [email protected] OUTLINE Part 1 • Software Development Life Cycle • Waterfall model • Agile model • DevOps Motivation Part 2 • DevOps history & stats • ….many more on DevOps 2 Know audience Quick Survey https://www.menti.com Code: 7025 3871 1. DevOps Experience 2. Which tools/concepts are you familiar with? 3 Software Development Life Cycle (SDLC) • A lifecycle covers all the stages of software from its inception with requirements definition through to fielding and maintenance [3]. • E.g. Banking application • • • • • Front-end Back-end Databases Analytics endpoints E.g. DevOps course several lectures practice sessions grading communication resources 4 Software Development Life Cycle (SDLC) • A lifecycle covers all the stages of software from its inception with requirements definition through to fielding and maintenance [3]. Release Planning Risk Analysis Operation Coding Different stages Deployment Build Feedback Testing Maintenance Delivery Integration 5 Icon src : https://www.iconfinder.com Software Development Life Cycle (SDLC) • A lifecycle covers all the stages of software from its inception with requirements definition through to fielding and maintenance [3]. Release Planning Risk Analysis Operation Coding Anything missing ? Deployment Build Feedback Testing Maintenance Delivery Integration 6 Icon src : https://www.iconfinder.com Software Development Life Cycle (SDLC) • A lifecycle covers all the stages of software from its inception with requirements definition through to fielding and maintenance [3]. Release Planning Risk Analysis Operation Coding Anything missing ? Requirements Deployment Build Feedback Testing Maintenance Delivery Integration 7 Icon src : https://www.iconfinder.com Software Development Life Cycle (SDLC) • A lifecycle covers all the stages of software from its inception with requirements definition through to fielding and maintenance [3]. Release Planning Risk Analysis Operation Coding Can you arrange them? Requirements Deployment Build Feedback Testing Maintenance Delivery Integration 8 Icon src : https://www.iconfinder.com Software Development Life Cycle (SDLC) SDLC models Spiral Model Waterfall Model Agile Model Incremental model Src: Alshamrani, A., & Bahattab, A. (2015). A comparison between three SDLC models waterfall model, spiral model, and Incremental/Iterative model. International Journal of Computer Science Issues (IJCSI), 12(1), 106. 9 Software Development Life Cycle (SDLC) Waterfall Models • Defined as early as ???? Can you guess ? Implementation steps to deliver a small computer program for internal operations 10 Software Development Life Cycle (SDLC) Waterfall Models • Defined as early as 1970 by Dr. Winston W. Rovce [royce1970, Davis1988] Implementation steps to deliver a small computer program for internal operations [royce1970] • Later improved in 1976 by Barry W. Boehm [Davis1988,boehm1976] Src; - [Davis1988] Davis, Alan M., Edward H. Bersoff, and Edward R. Comer. "A strategy for comparing alternative software development life cycle models." IEEE Transactions on software Engineering 14.10 (1988): 1453-1461. - [Royce1970] W. W . Royce, “Managing the development of large software systems: Concepts and techniques,” in Proc. WESCON, Aug. 1970. - [boehm1976] Boehm, Barry W. "Software engineering." IEEE Trans. Computers 25.12 (1976): 1226-1241. 11 Software Development Life Cycle (SDLC) Waterfall Models • Defined as early as 1970 by Dr. Winston W. Rovce [royce1970, Davis1988] Implementation steps to deliver a small computer program for internal operations [royce1970] • Later improved in 1976 by Barry W. Boehm [Davis1988,boehm1976] Src; - [Davis1988] Davis, Alan M., Edward H. Bersoff, and Edward R. Comer. "A strategy for comparing alternative software development life cycle models." IEEE Transactions on software Engineering 14.10 (1988): 1453-1461. - [Royce1970] W. W . Royce, “Managing the development of large software systems: Concepts and techniques,” in Proc. WESCON, Aug. 1970. - [boehm1976] Boehm, Barry W. "Software engineering." IEEE Trans. Computers 25.12 (1976): 1226-1241. 12 Software Development Life Cycle (SDLC) Waterfall Models • Most basic stages [Davis et al.] • • • • • • • System requirements Software requirements Preliminary Design Detailed Design Code and Debug Test and pre-operation Operations and maintenance user needs analysis Requirements stages aka high-level design or top-level design system analysis aka program design, module design, lower-level design, algorithmic design, or just plain design Src; Davis, Alan M., Edward H. Bersoff, and Edward R. Comer. "A strategy for comparing alternative software development life cycle models." IEEE Transactions on software Engineering 14.10 (1988): 1453-1461. 13 Software Development Life Cycle (SDLC) Waterfall Models – General stages Requirements Gather the requirements and defining them (users, login, dashboard, purchase cart, payment options ) Client Language, DB, dev platform, other technical requirements… Programmer Writing the code, detecting and removing of existing and potential errors Planning/De signing deals with algorithm design, software architecture design, database conceptual schema, logical diagram design, data structure definition, etc. Coding & Debugging report, monitor, resolve and retest software components until they reach the quality standards… Testing Deliver and deploy the software, ready for production. (e.g. deliver the car…) Operation Make sure that the customized car is running smoothly…. Maintenance Src: Alshamrani, Adel, and Abdullah Bahattab. "A comparison between three SDLC models waterfall model, spiral model, and Incremental/Iterative model." International Journal of Computer Science Issues (IJCSI) 12.1 (2015): 106. 14 Software Development Life Cycle (SDLC) Waterfall Models - Advantages • Simple and easy understanding and implementation • Very structured organization • Define -> Design -> Code • Phases are very clear • Easy to manage, arrange tasks • Focus on one at a time • Easy and well documentation • Very straight forward steps Requirements Client Programmer Planning/De signing Coding & Debugging E.g. Delivery of DevOps course lectures Testing Operation Maintenance Src: Alshamrani, Adel, and Abdullah Bahattab. "A comparison between three SDLC models waterfall model, spiral model, and Incremental/Iterative model." International Journal of Computer Science Issues (IJCSI) 12.1 (2015): 106. 15 Software Development Life Cycle (SDLC) Waterfall Models New Requirements Programmer Client Planning/De signing Programmer Coding & Debugging Planning/De signing Testing Coding & Debugging Operation Testing Maintenance Operation Maintenance 16 Software Development Life Cycle (SDLC) Waterfall Model - Disadvantages • • • • Known requirements (Client is clear regarding their requirements) Slow delivery speed Very expensive to reflect the new requirements No concurrency (just think about a computer with singlethread computation) • Risky and uncertainty, as no client is involved in other phages • No room for requirement modification in later stage Requirements Client Programmer Planning/De signing Coding & Debugging Testing Operation Maintenance 17 Software Development Life Cycle (SDLC) Agile Model Requirements Client Client Programmer Planning/De signing Coding & Debugging Testing Operation Maintenance 18 Software Development Life Cycle (SDLC) Agile Model Src: https://dictionary.cambridge.org/dictionary/english/agile 19 Software Development Life Cycle (SDLC) Agile Model • Address the challenge of an unpredictable world • Focus on individuals and their creativity • rather than on processes and tools • Promote quick response to • changing environments • changes in user requirements Its all about “about feedback and change” [Williams2003] Src: [Williams2003] Williams, Laurie, and Alistair Cockburn. "Guest Editors' Introduction: Agile Software Development: It? s about Feedback and Change." Computer 36.06 (2003): 39-43. 20 Software Development Life Cycle (SDLC) Agile Model Requirements Client Client Programmer Planning/De signing Coding & Debugging Testing Operation Maintenance 21 Software Development Life Cycle (SDLC) Planning Aprox. 2 weeks Develop Designing Feedback Planning Deploy Testing Aprox. 2 weeks Develop Designing Feedback Planning Agile : Iteration 3 Feedback Deploy Testing Agile : Iteration 2 Deploy Agile : Iteration 1 Agile Model Testing …. Develop Designing 22 Software Development Life Cycle (SDLC) Agile Model What makes a development method an agile one? [6] • Breakdown the whole application to different sub-services • Incremental : small software releases, with rapid cycles • cooperative : customer and developers working constantly together with close communication • Straightforward : the method itself is easy to learn and to modify, well documented • adaptive : able to make last moment changes • No monolithic application development Src: Abrahamsson, Pekka, et al. "Agile software development methods: Review and analysis." arXiv preprint arXiv:1709.08439 (2017) 23 Software Development Life Cycle (SDLC) Agile Model – Principles Principles of Agile development model [5] 1. 2. 3. 4. 5. 6. 7. Client’s satisfaction becomes higher priority Welcome changing requirements Frequent interaction with clients Frequent working software delivery Provide motivated environment and support to individuals Face-to-face conversation (now probably on virtual mode) Working software becomes the primary measure of progress Src: http://agilemanifesto.org/principles.html 8. 9. Sustainable development Continuous attention to technical excellence and good design enhances agility 10. Simplicity – Maximize the amount of work not done 11. Frequently improve the effectiveness rather just focusing on fine-tuning and adjusting 12. The best architectures, requirements, and designs emerge from self-organizing teams 24 Software Development Life Cycle (SDLC) Agile Model - Advantages 1. 2. Requirements Client 3. 4. 5. 6. 7. Client Programmer Planning/De signing 8. Coding & Debugging 9. Persistent software delivery Quicker release through fixed, reliable and short-term schedules Quick adoption of new features Increased client’s satisfaction Frequent interaction Continuous improvement Increased transparency through tighter collaboration Improve product quality and predictability Reduced risks Testing Operation Maintenance 25 Software Development Life Cycle (SDLC) Agile Model – existing methods Agile Methods [6] 1. 2. 3. 4. 5. 6. 7. Extreme Programming Scrum Crystal family of methodologies Feature Driven Development The Rational Unified Process Dynamic Systems Development Method Adaptive Software Development 26 Software Development Life Cycle (SDLC) Planning Aprox. 2 weeks Develop Designing Feedback Planning Deploy Testing Aprox. 2 weeks Develop Designing Feedback Planning Agile : Iteration 3 Feedback Deploy Testing Agile : Iteration 2 Deploy Agile : Iteration 1 Seems this is a perfect model for software development. then why we need DevOps ? Testing …. Develop Designing 27 Software Development Life Cycle (SDLC) Agile Model: Disadvantages: 2. Test and production environment configuration mismatch 1. Developer computer is used mainly for testing of those features 3. Usually not tested in production environment 4. Developers team and operations team are in silos Developers Operations 5. Continuous involvement of all the stakeholders. 28 Img src: https://www.dglobe.com/business/agriculture/4972636-Free-showing-of-Silo-movie-is-March-14 Software Development Life Cycle (SDLC) Agile Model: Disadvantages: Product deployment Developed product Developers team Operations team Send product back to developer Production environment Failed Product 29 Img src: https://www.dglobe.com/business/agriculture/4972636-Free-showing-of-Silo-movie-is-March-14 Software Development Life Cycle (SDLC) Agile Model: Disadvantages: Agile addresses gaps in Customer and Developer communications DevOps addresses gaps in Developer and IT Operations communications 30 Img src: https://www.guru99.com/agile-vs-devops.html DevOps 31 Development + Operations A culture 32 Development + Operations Foster the culture Focus on Outcomes 33 DevOps History • Concept of DevOps emerged out of a discussion between Andrew Clay and Patrick Debois in 2008. Read more at: https://www.appknox.com/blog/history-of-devops • Devopsdays event: • a worldwide series of technical conferences • Topics: software development, IT infrastructure operations, and the intersection between them. • Started 2009 • A series of event in this month (https://devopsdays.org/events) * this is not an advertisement 34 End of Part-1 35 Lab Sessions - About the ETAIS marketplace - Get familiar with creating, deleting and managing VMs - Invitation to ETAIS DevOps course organization - Communication over Zulip - Login : https://zulip.cs.ut.ee - Make sure that you are in DevOps2022Fall Zulip stream. 36 References [1] https://www.pic.gov/sites/default/files/Introduction%20to%20DevOps%20slides.pdf [2] https://f.ch9.ms/thumbnail/4d7767a7-b218-4aed-8287-a8dfa50a150b.pptx [3] Ruparelia, Nayan B. "Software development lifecycle models." ACM SIGSOFT Software Engineering Notes 35.3 (2010): 8-13. [4] Davis, Alan M., Edward H. Bersoff, and Edward R. Comer. "A strategy for comparing alternative software development life cycle models." IEEE Transactions on software Engineering 14.10 (1988): 1453-1461. [5] Beck, Kent, et al. "Manifesto for agile software development." (2001): 2006. [6] Abrahamsson, Pekka, et al. "Agile software development methods: Review and analysis." arXiv preprint arXiv:1709.08439 (2017). [7] https://www.appknox.com/blog/history-of-devops 37 Any Question ? 38