DevOps CI & CD
Richard Fisher
Senior Director Data & IO Engineering | Co-Lead Women Erg - Career Pillar at Optum
DevOps has moved from a buzz word / new trend to a critical component of all new modern software development projects!
Without DevOps you will not reap the benefits of all those good agile engineering practices we have been speaking about in my previous blog posts. DevOps is the the manufacturing line that will take your agile engineered engineered piece of code through all the Application Life Cycle (ALM) steps from first build to delivery including monitoring and support.
Lets demystify DevOps first as there seems to be this perception that it is the crazy complex and difficult concept that only rocket scientist could possible comprehend and understand it. At its simplest DevOps is about automating the manual operations processes of the past to improve efficiency and quality.
Efficiency: This is about automating operations tasks using a scripting language to improve the time it takes to complete the task. It also ensures the tasks are repeatable with zero human error.
Quality: This is to ensure the code that has been written is of the highest quality and lowest risk possible. This is done by using static code analysis tools, peer code reviews and test automation.
DevOps is a set of software development practices that combines software development ( Dev) and information technology operations( Ops) to shorten the systems development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives
Continues Integration (CI) is the first pipeline in the application life cycle and consists of integration with a source control system, build steps, dependency management, test automation, quality gates and artifact management.
Continues Delivery (CD) is the second pipeline and consist of integration with a artifact repository, approval gates, deployment, configuration, monitoring and support.
Two technology stacks in my opinion which are emerging as the best of breed are:
- The Atlassian Technology Stack: Jira / Bit Bucket /Jenkins /Confluence / Fisheye / (Third Party: Artifact Repo / Test suite / Monitoring)
- The Azure DevOps Technology Stack: Boards / Repos / Pipelines / Tests Plans / Artifacts / Azure Monitor.
These two technology stacks can both effectively handle all tasks required to implement a end to end ALM. The biggest difference is that Azure DevOps is a fully integrates suite of services where the Atlassian stack is a collection of separate products and require product integration and third party integration to support end to end ALM.
In my experience its allot easier and far less expensive to use Azure DevOps tool stack for your DevOps implementation:
- It covers end to end application ALM
- It includes all DevOps services with baked in integration in one product suite
- Seamless integration with the Microsoft ecosystem like O365, Azure, *GitHub etc
- It has abstracted allot of the complexity and has a intuitive user interface
- On boarding new resources is quick and the learning curve is not steep
- Baked in trace-ability and audit-ability across all services
- Baked in reporting with support for Power BI
- Supports cloud, multi cloud or hybrid implementation
- Baked in integration with most popular third party tools
- Most importantly has very competitive pricing structure.
The last point to remember is that once your code is running in production you need a way to monitor and support it. Monitoring should be intelligent and self healing and support should be easy, transparent and traceable.
Good luck with your Agile Engineering journey!