CSIT314 Software Development Methodologies
“Software eats the World”
“We are in the middle of a dramatic and broad technological and economic shift in which software companies are poised to take over large swathes of the economy”
Copyright By PowCoder代写 加微信 powcoder
( , “Why Software is Eating the World”)
Some examples:
Modern cars contain hundred millions of lines of code.
Dominos Pizza has increased its IT workforce by 240%.
Nike is turning footwear into a fully connected platform by integrating shoes with lifestyle and fitness applications.
Every business is a software business.
Traditional development models
Development team (DEV)
IT Operations Team (OPS)
Support, Sys Admin Maintenance
Wall of confusion:
Different mindsets
Different tools & environments
Traditional development models (cont.)
Release team
IT Operation Team
Traditional development models (cont.)
Traditionally, development and operations are separate entities within an organization.
They are two different departments
They have different objectives:
Operations: work in a cost-efficient way. Development: efficiently deliver features
Traditional development models (cont.)
Problem 1: different objectives
IT Operations team like the software to be as much stable as possible.
They might see each change and every new release as a potential danger to stability.
The Development team is paid for changing and adding new features the software application.
=> Might lead to conflicts between Dev and Ops departments.
Traditional development models (cont.)
Problem 2: different perspectives
Operations team views the application as a black box. They can monitor it with suitable tools (e.g. CPU utilization, I/O load, kernel behaviour).
Development team has access to source code and knows the internal working of the application.
Traditional development models (cont.)
Problem 3: different environments
Operations team run the application in the
production environment
Developers run and test their application in their own computer.
The two environments may be vastly different in terms of hardware, software, libraries, etc.
Traditional development models (cont.)
Problem 4: driven by different requirements
Operations is driven by non-functional requirements (availability, reliability, system speed …)
Development is driven by functional requirements (features).
Traditional development models (cont.)
Problem 5: client perspective
When there is an error or a problem, the client can find it difficult to determine who is really responsible.
Traditional development models (cont.)
Problem 5: combining know-how
Operations and development have only a part of the necessary knowledge and the required tools to build, test and run the application.
A smooth operation of applications is only possible with the combined know-how of operations and development.
What is DevOps?
DevOps is a software engineering methodology which aims to unify software development (Dev) and IT operation (Ops)
Development and operations teams are no longer separated (i.e. no confusion wall)
Sometimes, these two teams are merged into a single team where the DevOps engineers work across the entire application lifecycle, from development and test to deployment to operations.
Watch this intro video: https://youtu.be/_I94-t Ops: cultural shift
increased collaboration between the roles of development and operations
shared responsibility
support autonomous teams
value feedback
Automation
DevOps lifecycle
DevOps lifecycle (cont.)
Development
Agile, incremental and iterative development
Test-driven development, acceptance testing
Integration
New functionality is integrated with existing
code, and testing takes place. Deployment
Deployment process takes place continuously.
Monitoring
Bugs and performance reporting in real time.
Continuous Delivery and DevOps
DevOps facilitates the implementation of CI/CD:
Development knows:
the internal structure of the application how the application has to be configured metrics for monitoring
Operations knows:
Production environments and conditions Tools for monitoring or log analysis.
Feedback from operation can be used directly to optimize further development of the application (since all necessary roles are united in one team)
Tools used in DevOps
Source Code Repository: developers check-in and change code => a major component of continuous integration
E.g. Git, Subversion, Cloudforce, Bitbucket and TFS
Build Server: automatically compiles the code in the source
code repository into executable code base E.g. Jenkins, SonarQube and Artifactory
Configuration Management: defines the configuration of a server or an environment.
E.g. Puppet and Chef.
Virtual Infrastructure: programmatically create new virtual
machines – provided by cloud vendors
E.g. Amazon Web Services and Microsoft Azure
Test Automation: automatically perform all tests E.g. Selenium and Water
DevOps benefits
Rapid delivery: innovate and improve your product faster (e.g. release new features and bug fixes quickly) => respond to your customers’ needs and build competitive advantage.
Reliability: ensure the quality of application updates and infrastructure changes.
Scale: Operate and manage your infrastructure and development processes at scale.
Let’s discuss the Netflix case study
https://netflixtechblog.com/full-cycle- developers-at-netflix-a08c31f83249
DevOps in practice
Some extra demos of how DevOps is used in major companies:
DevOps at Atlassian:
https://youtu.be/neySeor_v Ops at Netflix:
DevOps at Google: https://youtu.be/0SU8- HJtYYc
DevOps means…
A) Developers taking over all Operations tasks.
B) Automating the process of software delivery and infrastructure changes.
C) The collaboration and communication of both software developers and other information- technology (IT) professional while automating the process of software delivery and infrastructure changes.
D) The collaboration and communication of just software developers and operations staff while automating the process software delivery and infrastructure changes.
Which of these statements are correct about DevOps?
A) DevOps and ITIL® don’t mix
B) DevOps won’t work in regulated industries C) DevOps won’t work with Outsourced Development
D) You must use cloud technologies
Which benefits of adopting a DevOps approach could be included in a business case to adopt a DevOps approach?
A) Improved deployment frequency, which can lead to faster time to market
B) Lower failure rate of new releases
C) Shortened lead time between fixes
D) Faster mean time to recovery in the event of a new release crashing or otherwise disabling the current system
Which statement best describes the goal of DevOps? A) One goal of DevOps is to establish an environment where Change Management does bot control application releases.
B) One goal of DevOps is to establish an environment where releasing more reliable applications faster and more frequently can occur.
C) One goal of DevOps is to establish an environment where application development perform all operations tasks.
D) One goal of DevOps is to establish an environment where releasing applications is valued over the quality of the released application.
Is this statement correct? “DevOps is more than just a tool or a process change, it inherently requires an organisational culture shift”
A) Yes, there needs to be cultural shift within the organisation across all stakeholders to ensure a successful adoption of a DevOps approach.
B) Yes, but the most up to date tools and LEAN processes need to be in place to drive an organisational culture shift.
C) No, DevOps is all about the tools.
D) No, cultural shift will occur when staff are using the most up to date tools and LEAN processes.
The adoption of DevOps is being driven by factors such as:
A) Use of Agile and other development processes and methodologies
B) Demand for an increased rate of production releases from application and business unit stakeholders
C) Wide availability of virtualised and cloud infrastructure from internal and external providers
D) Increased usage of data centre automation and configuration management tools
Which factors are correct?
The development teams that support the Agile approach to DevOps must include staff from the operations teams to ensure:
A) That stability is prioritised over creativity
B) Operational considerations are prioritised over stability
C) Operational considerations are taken into account D) The resultant designs of the systems will fit nicely into the business as usual environment
References and acknowledgement
Materials used in the lecture slides were adapted from
E. Wolff, A Practical Guide to Continuous Delivery, Addison-Wesley
https://www.guru99.com/devops-tutorial.html#5 https://martinfowler.com/bliki/DevOpsCulture.html https://purplegriffon.com/quizzes/devops-mini
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com