DevOps Consulting Approach
DevOps is all about trust, seamless collaboration and effective communication. It is all about Trust between the “Business & Development” & Trust between “Development and Operations”. Trust among these groups enables the organization as a whole to be more agile and to better manage risk. Bringing trust between teams is the way to go for successful DevOps.
DevOps enables a closer working arrangement between developers and operations personnel; its best practitioners automate where possible and in the process they make developers responsible for ensuring their code functions well in an operational environment. Some of the main characteristics of the DevOps philosophy are automated configuration, collaborative development, continuous integration, automated tests and continuous monitoring & feedback and performance tracking. IT agility is attainable through DevOps.
The goal is to add strategic value to a dynamic marketplace. The method of choice builds on agile development and cloud computing with DevOps-centric approaches as well as ongoing evolution and delivery. Business agility will increase as IT agility does. As we all know, consistent configuration, maintainability, audit & accountability makes the system great and good dev & deploy takes you there. Version control provide a great mechanism to manage code, version and collaborate in reliable & predictable ways. Issue trackers that integrate with version control let you easily tie specific changes back to the original reason for the change. Deployment systems give you one stop interfaces to track what got deployed where and when & by whom. Through ticket system, commenting on scripts is very important as these comments link back to the work order number. Configuration management systems is not an automatic event across your entire infrastructure, iterate against it. Make small weekly changes that roll up to quarterly progress.
Migrating what you do today to a more DevOps focused approach isn’t going to happen overnight.
We commence our assignment with the following tasks.
- Study current infrastructure
- Interviews with all the stake holders from Dev, Business and operations teams
- Understand pain points, grey areas and difficulties relating to technical & resource aspects
- Requirement gathering & analysis, present needs & future expectations and budgetary constrains
- Coaching on DevOps & it’s short team and long term benefits to the organization. Through this task, we demonstrate synergies between various teams and make every team (Dev, Business & Operations) realizes that they have equal accountability / responsibility / stakes in DevOps environment. DevOps is a culture and we will ensure people adapts to the culture with great & collaborative thinking and effective communication.
- Blueprint on the plan, design and role define.
- Introduction to DevOps stack for various functions like; Configure & change management, Release Management, Integration, Testing, deployment, orchestration, monitoring, virtualization and containerization & many more.
- Introduction on Agile methods as DevOps + Agile practice is the way to go for successful DevOps implementation.
We implement the following steps as our approach towards DevOps.
- 1. Effective Communication & Collaboration:
- Our approach is to establish effective communication between developers & operators in knowing & understanding production realities & the application requirements. From our experience and research, we understood that the lack of effective communication as a barrier to accelerated delivery. We have seen mostly development and operations teams work in silos because that's how the executive hierarchy is configured as each team is measured against a different set of metrics: change vs. stability. However, to ensure smooth delivery, it is absolutely imperative to establish how the needs of the application will be supported by the final production environment early in the process. The communication might be as lightweight as a face to face meeting where all concerns are discussed, a template to understand what capabilities are needed and provided, or something more detailed like a topology diagram. Regardless of the format, the information must be communicated early.
- 2. Collaborative planning & designing:
- As an approach we always insist on designing the patterns for platforms and applications jointly by development & operations. We focus on enabling production-like systems to be leveraged earlier in the development process. Standard application and platform patterns are decided with collaboration between development and operations. Those patterns are then used by developers in an on demand form when they need to iterate quickly on changes for the application in their own isolated environment. When changes are ready for delivery, the build and deploy process should use the same patterns to deploy and verify each new build. The net is that both development and the continuous delivery process are using production-like patterns to verify their approach far earlier in the delivery process than what you may be used to today.
- 3. Version Everything:
- The question we ask our customers: Do you version deployment configuration and scripts along with your source code? Often, specialists are already creating deployment scripts today; bash, perl, python, wsadmin, ruby, chef are all examples of assets which help stand up environments. But for whatever reason, these assets aren't generally handled like the same .java, .jsp, .html or .ddl assets which make up the business logic of the application. This step says that deployment configuration and script assets should be treated like valuable content just like the application source code. The idea is that the automation scripts and configuration files which have been left by the wayside as middleware evolved are brought back into the fold and considered part of the overall solution. Incorporating these artifacts into the same version control systems are valuable for application source code means that you can more easily view and compare changes from prior deployments. If you're deploying the system completely through automation, it may also mean that rolling back a new deployment means simply re-applying the last approved version of the automation.
- 4. Automate Everything:
- DevOps approach of automate everything is very important but totally different than traditional automation approaches. There is no tool that automates everything. Hence, automating various processes improve agility. In DevOps, automation technologies having file based persistence which are declarative than imperative, and which are applied again and all over again. The designed patterns are to be based on reusable deployment configuration scripts and both platform & application is to be deployed as an environment in one step. The usual practice of automation is above the platform layer, i.e., to deploy application into an existing platform. DevOps takes the end goal a step further to stress automation to create the entire solution -- from the platforms all the way to the end user.
DevOps asks the same kind of questions about deployments that agile software asked about builds. The ability to do a build in one step enabled us to perform builds more frequently ensuring that everything compiles. Similarly, being able to do a deployment in one step enables more frequent deployments. If a problem is introduced, you want to find it early and fail fast. With DevOps, operation engineers are no longer act as administrators but more as content creators / infrastructure developers. Like software developers, infrastructure developers create automation to provision and maintain the infrastructure, platforms, and applications in each stage of your pipeline. We insist on providing production like environments to validate the application as this help to validate the platform, supporting the applications. Hence any new platform updates that you plan to roll out feed into the pipeline just like application builds. If your middleware platform needs to be updated, you would roll that change out first early in a development stage of your pipeline. Just as application artifacts are graduated through the pipeline as they pass their verifications, so are changes to the infrastructure components like your middleware. Treating application and infrastructure components like equal citizens means that there isn't a special exception process for one kind of change or another -- all changes go through the same journey together in harmony.
- 5. Track everything:
- The most important is to determine how changes are tracked. We recommend to link bugs or work items directly to the affected changes in version control as it is important to have this level of traceability for identifying what a particular change was introduced and ideally what related files were touched.
As most of the developers think that real work is done once an application reaches production, it's not! When problems happen in production, there's generally an existing process for tracking incidents. We suggest that whenever incidents are encountered, an incident ticket should be opened and linked directly to defects in either the software or configuration layer, ensuring traceability from end to end. The bug or work item enables you to track when a fix is released to the application or configuration and know when the ticket can be closed. Knowing what the incident looked like in production means you can also beef up test cases so that a regression isn't introduced in the future. It doesn't matter if the root cause is in the business logic or an invalid DataSource configuration, the changes should be treated and managed in the same way. Since bugs are linked to changes, one will know what had to change to fix the incident.
- 6. Test Everything
- The objective is to ensure that the provisioning process is meeting the expectations of stakeholders including development, quality assurance, and operations. Other stakeholders like performance and security testing may also play a role. Software development did this first with compilation. It ensured that all of your source code could be translated into a machine readable format. Errors were quickly reported as part of the build process. Then agile promoted the notion of incorporating unit tests, static analysis, and other security compliance scans. DevOps expands that notion to also testing the deployed software and its supporting platforms. We strongly recommend to have automated testes to validate the application & platform function and characteristics.
- 7. Monitor & Audit everything:
- Most production systems already have some level of monitoring in use today. Exposing production-like patterns and environments earlier should mean that monitoring capabilities are available to developers. Hence, developers and operators have the opportunity to verify that application code is being written to be easy to monitor. Just like knowing what an incident looks like can help you beef up test cases, knowing what kind of information is (or isn't) coming from an application's monitoring capabilities will help you understand how to provide better feedback in production. Like Steps 7 and 10 are about providing continuous feedback about the function of the application, Step 11 is about validating expectations for performance and reliability through monitoring early in the process.
- 8. Dashboard everything:
- Most of the times, we see loosely defined, loosely coupled notion of delivery pipeline. Establishing a common understanding of what stages an application must pass through on the way to production ensures that hand offs are predictable and tracked to ensure accountability. Beyond that, providing progress reports about applications and their location through the pipeline -- from inception to happy end user -- is critical to ensure that you're constantly improving the overall delivery response time.
A lot of this process also means establishing the right metrics for your organization at a higher level and ensuring that those metrics can be tracked. An example metric might include something like "how long does it take to release a no-change version of my application?" That is, if you don't change a single line of source code, how quickly could you get the current version rolled out into production (starting in development)? Often (surprisingly) this time is non-zero. A lot of it may include manual configuration and intervention which limits how quickly it can be done. Again, focusing on automation from barebones to happy user means that you can increase your delivery velocity with managed risk.
To have successful DevOps, follow the below 10 Commandments is mandatory and this is what we work on to achieve perfect 10.
- Address the IT skills gap
- Establish an Agile and DevOps blue print
- Invest in technical tools, Software management approaches and infrastructure
- Track & Plan everything
- Automate everything
- Remove barriers
- Integrate and modernize legacy systems
- Test Everything
- Audit & Monitor Everything
- Continuous performance tracking and feedback
InfoSeption´s DevOps Consulting Approach: "YdEM".
- InfoSeption´s DevOps consulting helps enterprise organizations reduce the time it takes to release efficient software from the idea is evolved. DevOps is about constantly looking to end the silo culture, bottlenecks, barriers and inefficiencies. DevOps inspired lot from Lean & Agile and bring the culture of continuous improvement within the organization. With the theme of continuous improvement, we have designed "YdEM" consulting modules as our approach to provide solutions to DevOps problems.
- Yardstick Module
- design Deck Module
- Enable Module
- Measure Max Module
- DevOps Yardstick Module
- InfoSeption´s DevOps Yardstick Module is a consulting service that provides you with visibility, metrics, and analysis on which successful DevOps improvement projects can be built. Through this module, one will have the objective and clear picture of the current state of the Development to Operations delivery channel and clear vision & understanding on where the improvement & efforts are required for the best results. This module will create a vision on where the organization´s investment has to be and ROI metrics and ascertain the organizations next move should be.
- DevOps Design Deck Module
- PPT (People Process Tools) is the thumb rule in the game of DevOps. We bring synergies between the PPT for balancing and integrating improvement strategies that work across all and it is the game changer to the IT Operations Improvement program that delivers resounding business results. A great combo of PPT can develop a great design meeting all the metrics to achieve business objectives.
- DevOps Enable Module
- Always a challenge when we need to find time and resources to focus on improvement related activities. Once arena is ready to act, it’s obvious that you move quickly and effectively to maximize the return on your investment. InfoSeption is here to help you for getting the most out of your improvement efforts by delivering the expertise and best breed of practices that your team needs to ensure success. Our DevOps Enable services are customized for each of our clients and can include:
- > Training/Mentoring: Showcase the latest DevOps improvement strategies and skills in-house and tailor them for your organization through close collaboration with our consultants.
- > Toolchain installation: Kickoff a project along with consultants install, configure, and integrate your chosen tooling
- > Implementation assistance: Enable your team with our consultants to ensure success and preserve internal capacity
- DevOps Measure Max Module
- Measuring any fully executed task is not that tough, but how accurately, it’s done is the most critical task. Accurate measuring of the cost, reliability, and effectiveness of the development to operations lifecycle is important factor and is quite complex task. Most of the customers measure various tasks performed at their independent function, but most of the time, misses measuring E2E picture of how the entire development to operations lifecycle is performing.
We are confident of bringing your organization in to the DevOps culture through our practical "YdEM" consulting modules. Let’s have a dialogue today and work collaboratively to increase the business & performance efficiency.