- Scrum (Rugby): is a method of restarting play in rugby football that involves players packing closely together with their heads down and attempting to gain possession of the ball and deliver it further up the filed
- Scrum (SW): framework to support teams in complex product development. Scrum consists of Scrum Teams and their associated roles
The metaphor SCRUM in SW: A cohesive self contained group of SW developers (players) gains possession of the ball an transport it further up the field (a product deliverable/increment). The group as a whole is responsible for the result, but are free to choose the best strategy to reach the target.
SCRUM is an Agile methodology. The philosophy of Agile is summed up in the Agile manifesto.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Thus Agile takes into account the reality of most SW project: The problem to be solved is very often not understood beforehand. The aquiring of the this knowledge is and ongoing adaptive process. Thus the SW development process must also be adaptive.
The problem with Agile is that although it can dramatically improve SW productivity and quality, the bottleneck is very often in other parts of the value chain for instance in production and deployment.
Thus was born DevOPs (Development + Operations). DevOs is the same Agile principles applied to the whole value chain from concept to cash. It is a natural complement and extension of Agile.
In Addition there have been developments in industry the last decade which has dramatically changed the landscape in SW development. In particular cloud computing provided by large companies such as Amazon, Google and Microsoft as well as virtualization SW such as Docker.
An introduction to Scrum and Dev-ops is given in the Videos below.
The definition of Scrum is pretty well defined here https://www.scrum.org/
DevOps is so new that here not yet one single definition that everybody agrees upon, however some important key features are listed below. The list is not complete, but should give some idea.
- Close collaboration between Developers and Operations (Thereof the name DevOps)
- Version Control: All artifacts, Documents et is under version control and configuration management
- Continuous testing: Unit testing, functional testing and Integration testing is don frequently, typically every time any part of the system changes
- Continuous delivery: New SW releases is performed several times a day
- Infrastructure as a code: All servers are described as code that generates virtual machines, (for ins by using Docker files), this code in under version control just as any other part of the system
- Developer on call: There shall always be a developer on call to assist with support request
- Chaos Monkey: For larger systems, an application that randomly bring down severs in order to force the developers to make the system resilient to hardware faults, databases going down etc,
- Rapid feedback from production and operations to developers if something is wrong with as little administration as possible
These are just some of the features I feel is mots important, please free to leave a comment in the comment filed below.