DevOps & Cloud Computing
When I started my career in software development several years back, activities such as code development, system testing, deployment and operations were viewed as discrete islands or silos. For example, a developer used to meet a deployment (typically system admin) or an Ops individual (s) only during few days or weeks before go-live. Let me tell you those few encounters used to give several (unpleasant) surprises in terms of coding standards or some reusable components used in the code - a developer using a open source component and doesn’t adhering to customer's IT guidelines & standards. Such instances led to numerous frictions between the teams/individuals and blame game, enough to disrupt relationships and culture among teams. On the other hand, there used to be several huge milestones on the calendar in terms of deployment/testing in several environments and finally, a due date which is highly ceremonial.
Over the few years, things have evolved from waterfall to agile (XP) to continuous integration to continuous deployment so on to form the DevOps movement which builds on the idea of close integration, communication & collaboration between the individuals who build the software and ones who run the software in the production environment. Without these, you won't see -
1. Frequent website updates to Facebook, LinkedIn, Amazon, etc. in terms of new UX and features
2. Frequent m-app updates to Uber, Flipkart, Twitter
Do we really know if these frequent updates are ceremonial? It’s full of surprises, isn't it?
DevOps found initial traction within many large public cloud service providers (examples above). With modern applications running in the cloud, much of what used to be considered infrastructure is now part of the code. In cloud computing, all the infrastructure, configuration and deployment are on demand, so from an operations view, cloud computing eliminates most of the physical aspects of dev and ops, as the ops don't have to delve into physical aspects of the hardware. So, DevOps with cloud computing lays an important foundation in terms of a close connects/collaboration between the dev and the ops. However, in my view, in order for DevOps to be successful in teams, it’s an amalgamation of people, process and technology that work together to deliver successful outcomes
People:
- Do they have mindset to ensure code that gets checked in the version control is NOT compromised?
- Do they write enough unit tests to ensure (near 100%) code coverage?
- Do they write enough build verification tests/smoke tests to capture early warnings/alerts? so on
Process:
- Policies around source/version control, coding standards and guidelines
- No last moment code check-ins and if required, ensure all verification tests pass
- Automated system raises an alert during build breaks and allows devs to fix the problems for a defined duration (& not infinitely)
Technology:
- Numerous tools available from leading product vendors such as Microsoft Azure, Amazon AWS, etc.
- Make automation as a habit to increase consistency, repeatability and predictability.
- Leverage automation to provide uniform approach for a consistent and predictable service delivery model and a transparent work environment
With the DevOps movement backed up with cloud, businesses have the agility in terms of delivery of multiple features without too much dependency / involvement of IT, thus giving more reliability with speedier GTM and faster ROI conversions from a business standpoint. This is an interesting and exciting space to be in, especially when the organizations are undergoing series of business transformations and in a time when it’s a mandate to deliver more with less.
Well written... Cloud is d future :)
Good message....