To gather insights for DZone's Continuous Delivery Research Guide, scheduled for release on January 26, 2016, we spoke to 24 executives who are implementing continuous delivery in their own company or helping clients do so.
Specifically we spoke to:
Casey Kindiger, CEO, Avik Partners | Ez Natarajan, Vice President Cloud, Beyondsoft | Tom Cabanski, Director of Software Development, Blinds.com | Kurt Collins, Director of Technology Evangleism and Partnerships, Built.io | Chris Madsen, CEO, Circonus | Steven Anderson, CEO, Clutch | Yaniv Yehuda, Co-Founder and CTO, DBmaestro | Andreas Grabner, Technology Strategist, Dynatrace | Elaina Shekhter, CMO, EPAM Systems | Charles Kendrick, CTO and Chief Architect, Isomorphic Software| Baruch Sadogursky, Developer Advocate, JFrog | Topher Marie, CTO, JumpCloud | Edith Harbaugh, CEO and Co-Founder, Launch Darkly | Jessica Rusin, Senior Director of Development, MobileDay | Stevan Arychuk, Strategic Marketing, New Relic | Arvind Mehrotra, President and Global Business Head, NIIT Technologies | Zeev Avidan, Vice President Product Management, OpenLegacy | Richard Dominguez, DevOps Engineer, Prep Sportswear | Prashanth Chandrasekar, General Manager of DevOps and Head of Operations, Rackspace | Steven Hazel, CTO, Sauce Labs | Bob Brodie, CTO, Sumo Heavy | Dr. Chenxi Wang, Chief Strategy Officer, Twistlock | Scott Ferguson, Vice President of Engineering, Vokal Interactive | Adam Serediuk, Director of Operations, xMatters
When we asked, "What do you see as the most important elements of DevOps/Continuous Delivery?", here's what they said:
It's a mixture of simplicity and repeatability. We use Docker to containerize everything around an application. The container provides a snapshot on an Ubuntu machine, and the development environment for senior engineers is in Docker. We push code to the staging environment for testing, and when it's ready for production, you just move the containers. Repeatability is a tremendous benefit of Docker. Simple, repeatable, build environments are key to implementing Continuous Delivery.
The most important thing is being able to streamline the deployment process: development to staging to production. When you’re a developer working on a feature for a beta, you should be able to see the feature implemented inside via the staging environment. This should be the closest thing to production, and you need to put it in staging because other developers are also working on code that could be in conflict. This is where the bugs are worked out. Automated processes are in place to move, compile, run tests, and deploy code.
Reliable monitoring with actionable metrics. You must set up tools correctly to provide actionable insights. Peer path response time tells you a lot with regard to server load, user experience, fluidity of the site, and health of the site.
It’s not just an IT change, it’s a business culture change and it only happens as fast as the slowest link in the chain. Feed and ingest both need to embrace the DevOps model. Every company today is a software and IT company, and holistic changes need to occur in the organization.
A mindset that code is not released once or twice a year. The infrastructure must be in place to make this happen. You have to put all the pieces together – containers, Docker, microservices. CI Python, Jenkins – different people push different code components into the pipeline. Production has sufficient real-time monitoring to ensure that everything is going OK. For example, Etsy is down to seconds-long web application calls. They know what database something is coming from, and they have real-time visualization to see how the web, application, and database tiers are performing. This is more resilient and more secure because you’re always running a security analysis as well. You can see if a transaction is stuck and fix it. You can see if a user is logging in from an inappropriate IP address and cut it off.
You need more reliable outputs than a human being alone can produce. The ability to replicate over and over again is very important. It removes errors, runs tests, fixes things, and makes the code as close to perfect as it can be.
Automating the process and being able to learn from the moment the product is launched so you can continually refine it.
Giving all DevOps stakeholders the opportunity to make real-time informed decisions with analytics tools.
Teamwork. Development as a whole, agile is all about teamwork. Make sure people are integrated with development teams. Any sort of handoff is where we get ourselves in trouble - handoffs are blockers.
Ensure you’re measuring your actions. If DevOps is optimizing changes, you must be able to measure if the changes are having a positive impact.
Customers don't have to wait for upgrades, improvements, and bug fixes. Developers get to see their stuff in the field quickly, which is good for morale.
Culture of communication to overcome organizational boundaries to deliver software.
Four parts: 1) the organization's culture, 2) the process culture, 3) tooling and connected ecosystem workflow, and, 4) analytics and business intelligence that connects culture with workflow. Continuously evolving, investing in people, and no stagnant processes are all important. Incremental, minor differences should be added based on analytics.
Deliver value to customers as quickly and safely as possible. Smaller, more frequent changes reduces risk.
Challenges the organization’s ability to change. Change is where the organization interacts, collaborates, and delivers end results. It doesn’t work in silos. DevOps is about a culture of collaboration and cannot be outsourced. DevOps must collaborate with all stakeholders in the environment with a smooth process and no finger pointing. Version management is also very important and must be integrated into the pipeline of deployment.
Controlled test and production environments. It's a challenge to incorporate these into environments. You need to introduce an agile, fast, approach without introducing bugs into the system.
Notion of deconstructing why a company needs to think about transforming the way technology and DevOps operate and respond to customer feedback in a rapid fashion. Start-ups think about the minimum viable product. Established, 10 year-old companies need to move faster or get passed by the newer companies like Warby Parker, who is disrupting the eyeglasses industry. DevOps starts tech centric and then permeates the entire organization. You need to be flexible to customer feedback.
Automation of the code delivery pipeline. Reduce bottlenecks in the software delivery process. Optimize the process by tearing down walls between development and ops.
Continuous Delivery automates all of the processes through production. This produces a huge amount of information to be monitored for any anomalies. The DevOps culture requires a mindshift and tools support the mindshift to think differently than before.
Communicate more frequently to be on the same page with regards to automation and who’s responsible for what. We focus on people’s strengths, it's not always best to have everyone doing everything.
Without a doubt, the most crucial element is communication. Having your development and operational teams deeply involved with (and familiar with the repercussions of) all significant design decisions, with both realms of expertise focused on a shared goal of sustainable and reliable services, is your most effective tool for heading off missteps and proactively recognizing problems before they occur. I see a lot of similarities in the concepts of DevOps and those of Agile software development – the sooner you discover problems, the cheaper it is to fix them. By collaborating and considering system-wide impacts of your designs, you spend less time reacting to them after the fact, which means you have more time to focus on building your product. The more communication you have across the organization, the faster you can affect your company's product vision.
The addition of building and testing. Evolution from manual testing and feedback to automated testing raises the frequency and velocity of changes with ongoing testing to ensure quality. The dissolution of two major islands – infrastructure and database is also crucial. People are implementing continuous delivery with code but not databases or infrastructure. Only 13% are doing automated databases. This is much less reliable, accurate, and scalable. This is a big challenge in the market that we need to solve. Tolls enable automated implementation, testing, and release of databases. You will not be able to meet the frequency of code changes if you are following a manual process. You need to solve these problems for databases and infrastructure.
What do you think are the most important elements of DevOps and continuous delivery? Let us know!