Category: Features

  • How to Find Your Continuous Delivery Rhythm

    How to Find Your Continuous Delivery Rhythm

    This article is a part of a series of pieces on digital innovation, accelerating change and the rise of the coded business from innovators in the Chef community. In this article we present an interview with Jez Humble, Principal Consultant, ThoughtWorks, on digital innovation.

    Focusing on speed and scale allows you to respond more rapidly to weak signals in the market, and to arbitrage those opportunities quickly. This is different from the way it used to be. In the past, we’d only respond to the strong signals in the marketplace. But now, with the lower cost of investment in product development, and the resulting optionality in that process, we can service subtle market signals effectively.

    Here’s an example of this. A company noticed that when people searched for bird-cages online, very few entries came up. So, to fill the void, the company began making bird-cages. And now this business has created a new revenue stream selling bird-cages. We’re also learning that the way we service customer demand – in all its varieties – is part of the product development process. This comes with the emergence of user-experience design. And it shows that marketing, as well as technology, is an essential part of product development today. Zappos is a great case study that illustrates my point. Many companies try to minimize the time spent on customer support calls. Zappos spent a maximum amount of time on customer calls every day. And, by deeply engaging with the customer, they learn about the customer.

    Code is really the key to exploring and exploiting new opportunities in an inexpensive and scalable way. And here, we have to give credit to Toyota, which has been using Lean to show us how to re-tool on the fly in response to customer demand. As a result, software is now following automobile manufacturing.

    A major part of all this is continuous delivery of code, which, from my perspective, is fundamentally about reducing the transaction cost of putting out incremental changes. And I want to emphasize the importance of incremental changes and small batches; continuous delivery of code really can’t be effective if it’s one-piece flow.

    Think about it this way. You don’t buy eggs at the supermarket once a year. And you don’t buy an egg as a replacement every single time you use one. No, you buy eggs on an ongoing basis in small batches. This is the kind of rhythm that powers our ability to move rapidly when there’s a weak signal in the marketplace. It’s the kind of rhythm that powers our ability to change code based on customer demand. And it’s the kind of rhythm that powers our ability to compete effectively – and with a decided advantage.

    Netflix, Etsy, Amazon, Google and Facebook are five of the best at this. And I also like the way the British government’s digital service has been re-tooled and re-built with Lean, customer experience, and continuous delivery principles in mind. The government site is, without question, all about customer demand and customer service, and it has saved citizens a lot of money as well. The take-away here is that software companies shouldn’t be thinking narrowly about software; instead, they should be thinking about how their software can better serve customers. To do that, the entire business has to be run differently and more effectively. And, again, technology people – as well as product marketing people, financial people and governance people – all have to join in and help make it happen.

    There are three practices of continuous delivery that can help you create the most efficient path from hypothesis to continuous feedback:

    • Comprehensive configuration management
    • Continuous integration
    • Comprehensive automation of build, test, deploy, and infrastructure management

    A new kind of “MVP”

    One of the key ideas that the Lean startup movement has popularized is the minimum viable product (MVP), which is defined as the least possible amount of work you can do to test your business hypothesis.

    Of course, people in manufacturing have been producing minimum viable products for decades – they’re called prototypes. I like the MVP because you’re not betting the company, or spending big wads of cash.

    Another key Lean concept is validated learning; here, you gather actionable metrics based on real usage of your product, without asking people. To do this, however, you’ll need to be able to answer questions like:

    • Did the changes we made to the product improve signup, retention, revenue? Or is it time to pivot?
    • Which version of our new feature came out better when we did A/B testing?
    • All our system metrics look okay, but a user reports that our site isn’t working. Are we down?
    • Which features of our product are generating the most revenue?

    These questions should be answerable by looking at a dashboard, and the information should be completely auditable. But this kind of learning is only possible if metrics are built into the “hypotheses” that are being tested. Once you have an idea for a minimum viable product, you need to start delivering software. The first step is analysis. My view is that you need to do just enough analysis up-front, and this approach needs to continue throughout the lifecycle of the project, with the emphasis on creating very small, incremental stories.

    Doing less and learning more

    Let’s say you’re working on a hotel booking site, and you want to add a feature to allow people to choose whether they want breakfast. Don’t create this feature for all hotels, or for all partner sites. Instead, start with a “hypothesis” that allows you to add that feature for a single hotel, with no configuration options, and get feedback for that possibility before you proceed further.

    Do less, so that you can focus your efforts on learning from your users.

    If you want to increase your release frequency, it’s essential to decouple your deployments from the act of taking a feature live. Feature toggles (also known as bits or switches) help you control who can see which features. This setup also allows you to release new versions of revised software that include partially complete features, containing perhaps a story or two of work, but nothing you’d want the general public using.

    In addition to enabling incremental delivery of functionality, feature toggles let you turn off a problematic feature when a release goes wrong, as an alternative to rolling back your deployment.

    The bottom line is that continuous delivery like this liberates us by reducing the cost and risk of releasing software, and by powering much-needed innovation at the same time.

     

    jez-humbleJez Humble is a principal consultant with ThoughtWorks and co-author of “Continuous Delivery” and “Lean Enterprise.” He began his IT career in 2000. Over the past 14 years, he has been a developer, system administrator, trainer, consultant, manager and speaker. He has worked with a variety of platforms and technologies, consulting for non-profits, telecoms, financial services and on-line retail companies. Since 2004, he has worked for ThoughtWorks and ThoughtWorks Studios in Beijing, Bangalore, London and San Francisco. He holds a BA in Physics and Philosophy from Oxford University and an MMus in Ethnomusicology from the School of Oriental and African Studies, University of London.

  • The evolution of built-in DevOps features in cloud platforms

    The evolution of built-in DevOps features in cloud platforms

    These days DevOps is being widely adopted by many IT organizations. Such IT organizations become more agile and reliable, deploying code more frequently with fewer bugs and failures. DevOps helps to get better IT performance and build additional competitive advantages, and companies with high-performing IT organizations are twice as likely to exceed their profitability, market share and productivity goals.

    The adoption of DevOps is being driven by factors such as agile development methodology, significantly increased rate of production releases, wide choice of public and private cloud platforms, and a wide range of tools for data center automation and configuration management.

    Today there are many different automation tools on the market that are used by DevOps teams for provisioning, orchestration and configuration management (Puppet, Chef, CFengine, bcfg2, Vagrant, Fai, Kickstart, Preseed, Cobbler), for build and deployment automation (Jenkins, Maven, Ant, Cruisecontrol, Capistrano), for infrastructure monitoring (Zabbix, Nagios) and application performance measurement (NewRelic, AppDynamics, DripStat).

    However IT organizations still struggle with assisting both developers and administrators that prioritize two completely different goals – speed of application development and feature completion versus production stability and uptime. Automation tools vendors promote their products to solve the challenge of DevOps teams, but still very often fail to face the complexity of workflows for operations engineers, or application releases and deployment speeds desired by developers.

    Another issue is that IT organizations with application release and deployment issues usually use some kind of automation, but they want to have more flexibility to manage their automation without the need to invoke everything manually at the command-line. Ideally, this automation should be available for developers in their development environments to give developers more control of the environment and understanding of the infrastructure usage.

    These issues have driven the evolution of DevOps tools. Today, cloud platform vendors consolidate and integrate automation and management tools directly into their cloud platforms. As a result, IT organizations can get better automation features in the same turnkey cloud platform. We can claim that PaaS solutions will become the next generation of DevOps tools. Cloud platforms have already removed the need to worry about many aspects of provisioning and configuration management of virtual machines/containers. These cloud platforms solve it in a very efficient way, because they have more control of resources and events, they manage the whole cluster of resources and take into account different metrics and status indicators at the same time. As a result, these platforms provide significantly better density of resource, better utilization, smart distribution of the load across the cluster, automation of new release deployments, automation of scalability and maintenance, out-of-the-box high availability and fault tolerance features.

    In fact, many IT organizations use automation tools such as Puppet and Chef to solve the challenges of template management, updating middleware stacks, application configuration management and zero-downtime deployment of new releases. However, the latest cloud solutions include more “native cloud” features designed to solve the same tasks. There are many examples of this trend for cloud platforms to evolve in this new, DevOps, direction, providing  native automation features in popular cloud platforms.

    Let’s take one of the visionaries in the cloud computing industry – Amazon Web Services. One of their cloud services, CloudFormation (http://aws.amazon.com/cloudformation/) allows developers and administrators to create and manage resources, middleware stacks and application templates. It helps to manage configurations and updates of already provisioned resources and applications. Literally, it‘s designed to solve the same tasks as Puppet and Chef. You can find many threaded discussions related to the comparison of CloudFormation vs Puppet/Chef. OpsWorks (http://aws.amazon.com/opsworks/) is another service for application management that simplifies application deployment and lifecycle management. It helps to define application topology, specification of package installations and software and resource configurations. In addition, this service includes automation for scaling based on time or load and allows scripting of these tasks.

    Another good example of DevOps evolution is the new cloud services released by Google Cloud Platform. Recently this public cloud platform released several different features that help to solve similar tasks to those mentioned above – Replica Pool (https://developers.google.com/compute/docs/replica-pool/), Startup Scripts https://developers.google.com/compute/docs/howtos/startupscript  and Cloud Deployment Manager https://developers.google.com/deployment-manager/. These natively integrated cloud tools provide the ability to create and manage sets of virtual machines (VMs) from common templates, resize, update, or delete them, define different configuration attributes such as base image, attached disk details, attached networking objects and scripts to be executed after the boot, install new software and updates, define environment/OS variables persistently available to VMs whenever it starts. In addition it provides the ability to easily declare, deploy, and maintain complex applications using a simple template mechanism. It provisions, scales, and monitors VMs and applications. Moreover, it can perform regular health checking and can restart or re-build sets of VMs that fail to respond appropriately. Recently announced Cloud Debugger and Cloud Trace (http://googlecloudplatform.blogspot.com/2014/06/enabling-developers-to-tame-production-systems-in-the-cloud.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ClPlBl+%28Cloud+Platform+Blog%29) allow developers simply setting a watchpoint on a line of code and to get a snapshot of all the local variables, parameters, instance variables and a full stack trace. It helps quickly identify and fix performance bottlenecks and enables engineers to compare performance from release to release with a detailed report. It works with zero setup uptime and no complex configuration, and is suitable for use in production. The tools described above cover a large breadth of DevOps tasks.

    Docker (http://www.docker.com/) is another good example of a tightly integrated cloud automation mechanism and a further example of DevOps evolution. The promise and focus of this automation solution are to remove complexity of configuration and deployment into different environments. Many cloud vendors have announced integration with Docker. Many observers believe that Docker is still at an early stage and not yet production ready, but the product has generated lots of industry buzz and the technology seems to be significant.

    In addition, there is something even bigger in the DevOps evolution – the open initiative for unification of cloud automation as Topology and Orchestration Specification for Cloud Applications (TOSCA) https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=tosca. The goal of TOSCA is to enhance the portability of cloud applications and services, enabling the interoperable description of cloud services and relationships between parts of cloud services and operational behaviors. Examples are template configuration and provisioning, application deployment, software patches and updates, application scaling and maintenance, etc. In other words, it drives a unified standard for independent cloud platform vendors or cloud hosting service providers. As a result, it should simplify the work and tasks of DevOps teams by creating a vendor-neutral ecosystem enabling portable deployment to any compliant cloud platforms, smoother migration of existing applications to the cloud and the ability to build and run multi-cloud provider applications.

    In conclusion, the future will bring more cloud native absorption of different automation features for DevOps needs.  The evolution of cloud platforms in the DevOps direction is extremely beneficial for IT organizations because they do not need to manage and learn different tools and approaches for automation. This unneeded complexity will be replaced by seamless integration of different automation features inside the same cloud platform. It means in the near future very popular DevOps tools like Puppet and Chef will compete with built-in functionalities of cloud platforms.

    However, during the evolution period, choosing the right cloud platform is critical. It should allow IT organizations to use multiple approaches – the old legacy automation methods and the new native features to give the maximum flexibility from built-in automation and an already collected knowledge base. Flexibility of choice is the key point in the DevOps evolution for IT organizations – the ability to use both worlds at the same time: the old automation tools and the next generation features of cloud platforms.

    In addition, it makes sense to mention the importance of seamless integration between PaaS and IaaS for the evolution of DevOps. The public cloud platforms discussed above (AWS and Google Cloud) provide merged solutions today. The integration of both layers is very important for enterprises that heavily use private and hybrid clouds, as it replaces the unneeded maintenance complexity of two different solutions and removes extra overhead on integration of products from different vendors.  In other words, merging PaaS and IaaS provides extreme flexibility of automation and ease of use in the same solution. Seamless cloud platforms provide the best combination of the automation features in the same turnkey cloud solution that help to drive innovation and maintain legacy apps.

    The next generation of cloud platforms will establish a win-win relationship between the dev and ops departments, and when the outcome of dev and ops interactions is a win-win, IT organization performance wins as well.

    ruslan4

    About the Author

    Ruslan Synyntsky, is founder and CTO of Jelastic. With over 15 years in the IT industry, Ruslan is an expert in large-scale distributed Java applications and enterprise platforms. Before founding Jelastic, he led engineering teams a and at the Space Agency, Ukrainet iQueLab, SolovatSoft, Datamesh.

  • Clone your entire IT infrastructure in the cloud at the push of a button

    Clone your entire IT infrastructure in the cloud at the push of a button

    Rapid development and deployment is a hallmark of DevOps. The faster pace doesn’t change the need for testing applications before they’re pushed to production, or QA testing the code and infrastructure, though. The tricky part for many organizations is that different groups need access to the same environment, and creating duplicate environments can be tedious.

    There are plenty of tools out there that enable an IT admin to quickly create and provision virtual servers. The virtual servers can even be created from base images that include all of the necessary applications and configuration to match the servers in production. That part is fairly simple.

    Where it starts to become challenging is the rest of the infrastructure. The virtual servers might be identical to the production servers, but unless the switches, routers, connections to other servers and applications, IP addresses, and every other aspect of the production infrastructure match identically, the testing or development done in the secondary environment might not be completely valid.

    In 2011, the core team that introduced the KVM hypervisor—now the standard virtualization technology in Linux—founded Ravello Systems to address and solve this challenge. The Ravello Systems team understood that it’s possible to migrate virtual servers to a new environment, but that doing so introduces other issues, and the resulting environment is not an exact duplicate of the original. They set out to find a way for an entire infrastructure to keep up with the pace of agile development.

    Ravello provides organizations with a way to implement repeatable deployments—complete clones—of complex multi-tier production environments at the push of a button. It’s a concept they call nested virtualization. Ravello saves a blueprint of the environment, and enables IT admins to spin up instances of the complete IT infrastructure, including networking and storage configurations, with a single click or API call.

    One organization that has adopted Ravello for managing rapid development is Deutsche Telekom. Deutsche Telekom (DT)—the fourth largest wireless service provider in the world—maintains a cloud telephony service that is a complex multi-tier application with multiple virtual machines, and network appliances from F5 Networks, Brocade, and Palo Alto Networks. DT uses Chef and Jenkins to automate many aspects of continuous integration and continuous development, but it needed a solution to keep up with capacity needs without the expense and effort involved in expanding the physical datacenter environment.

    “Creating a copy of our production-like environment in Ravello was easy. We simply uploaded our base image, and virtual appliance form factors of our physical appliances, and then used the Chef bootstrapping support that Ravello offers to bootstrap into our existing Chef infrastructure,” said Ram Akuka, director of DevOps at Deutsche Telekom HBS in a statement. “What we are building is a truly large scale system with millions of concurrent users and transactions, so by continuously developing with Ravello we can easily scale to meet our customer’s critical business communication needs twenty-four by seven.”

    The first wave of virtualization made server platforms hardware agnostic. A virtual machine of any server operating system could be deployed and run from virtually any x86 hardware through virtualization. Ravello takes that a step farther by taking the entire virtualized environment, and making it cloud agnostic. The Ravello virtualized infrastructure can be deployed on AWS, Azure, or any other cloud platform.

    Ravello also keeps the pricing and invoicing for the service simple. Ravello charges customers on a per application basis rather than per VM. The Ravello pricing also includes the underlying cloud platform. You get one bill from Ravello, and you don’t need to pay the cloud provider separately.

    If you’re struggling to scale the scope and capacity of your infrastructure to keep up with demand, or you’re having challenges with development or testing in environments that aren’t exact clones of the production environment, you should take a closer look at Ravello and see if it will help you resolve those issues.

  • ChatOps: Communicating at the speed of DevOps

    ChatOps: Communicating at the speed of DevOps

    DevOps is about knocking down barriers between developers and operations teams, and in doing so reducing organizational frictions wherever possible. And that’s certainly the spirit behind ChatOps – the term for the hyper-collaborative way of running DevOps, including operating aspects of systems and infrastructure, through online chat.

    Proponents of ChatOps say it streamlines communication in a centralized and powerful way. Born within Github, ChatOps evolved from its open source chat bot, Hubot, which has changed the way the web-based Git repository runs operations through the automation of deployment, graphing, monitoring, provisioning, and even mitigating security events.

    Think of Hubot, a Node.js app that is commonly run on Heroku, as a robot that helps keep everyone informed in a centralized place and in real-time, or in a near real-time, way. There are many benefits to ChatOps, says David Mortman, David Mortman, contributing analyst at Securosis, including the integration of ops activities with notifications into one place, making it easier for everyone to know what’s going on across the enterprise, as well as everyone throughout the organization having the ability to see error messages on events as they occur, he says.

    Github, as a highly distributed organization, with its several hundred employees spread across 103 cities, can use all of the communication efficiencies it can muster. As Mark Imbriaco, Ops engineer at Github, in his presentation ChatOps, Augmented Reality for Ops, uses Github, email, internal apps, other web systems that they’ve built to help teams communicate asynchronously – and yet they needed an option for the real-time or “semi”-real time communication. “I say semi-real time because, when we talk about chat, the social contract at GitHub around chat doesn’t require you to be immediately responsive to everything you see. Chat is still asynchronous, but it’s more synchronous than GitHub or email or other sorts of notification mechanisms,” said Imbriaco.

    Without enhancement, Hubot doesn’t do a whole lot right away. But when added to chat with one of the dozen or so connectors that include access to Google Talk, IRC, Skype, and Hubot monitors for events that come from within chat or from one’s systems and applications. “The magic happens when you build additional functionality into him to automate, well, everything,” Imbriaco said.

    Hubot will do certain things, such as notify people not present in a chatroom that they were mentioned, phrases can be registered so that notifications to those interested in certain events will be notified. Github has also plugged Hubot into the GitHub service itself. Today, when anyone creates an issue or pull request in GitHub, according to Imbriaco, a link and definition of the event is sent to chat. While Github already has ways to send notifications, by entering events real-time into the chat stream, others can jump in and comment, help, or otherwise advise on events and interact as they’re occurring.

    As for the adoption of ChatOps, Github isn’t the only one: but it’s not yet widespread among DevOps practicing organizations, either, based on our reaching out to numerous organizations. Nor, is the concept especially well known.

    That’s not slowing Owen Zanzal a developer at systems management provider VividCortex down from adopting ChatOps. Zanzal says in his blog post, ChatOps at VividCortex, that, despite ChatOps being off to a slow rise, “ChatOps has really revolutionized how we operate,” he wrote.

    The first Hubot mission at VividCortex was to help improve how code is deployed. The problem Zanzal highlights is that encryption keys and new developers apprehension around code deployment, was slowing down production.

    To streamline deployment, Zanzal moved the execution of Capistrano commands to a Jenkins (a continuous integration server), and created Hubot commands so that jobs could be created using a Jenkins exposed REST API. When done, developers needed only run a chatroom command, such as “hubot stage webapp” or to deploy “hubot release webapp,” Zanzal explained. “Now, no one is blocked by the gatekeeper from pushing code into staging or production, and every developer can push code when they are ready. The unfamiliar Capistrano commands were simplified into much easier to understand Hubot commands,” he wrote.

    VividCortex is also using ChatOps to fetch logs and more quickly remediate issues as they arise, Zanal wrote.

    Chat-as-Ops
    GitHub has also pushed ChatOps much further than simply as a place to stage and deploy code. It’s using ChatOps as a way to help actually run ops. For instance, Imbriaco spoke to how Hubot and ChatOps is used for efforts such as rebalancing shards across its file servers. “Honestly, it took me a little while to get used to some of these. We have some [Hubot actions] that do things like rebalance shards across our file server. And that’s horrifying to me, because the consequences of failure are so bad. But the reality is, I’m either going to run it from a chat room, or I’m going to run a shell script from a terminal. If I ran it here, at least everyone saw it. So at the end of the day, this is repeatable, it’s tested, it’s commonly used,” Imbriaco said. “And if it stopped working we would notice,” he said.

    And one time when Github was fending off a distributed denial of service attack, Imbriaco needed only enter the name of their service provider to direct traffic and the attack was successfully mitigated.

    Moving to ChatOps isn’t without risk, however, Imbriaco explained. A lessoned learned when it became a little too easy to deploy to Amazon Web Services. “We went from zero to way too much spend on Amazon in about two weeks, when I turned up the ability for us to provision EC2 hosts from Chat,” he said. But that issue was resolved by giving users information at the time of provisioning, such as including metadata into the instance that details who created it, as well as informing users how much it’s likely to cost,” Imbriaco said.

    Despite the efficiencies of ChatOps, don’t expect a widespread embracing of ChatOps, but more likely a slow adoption. “GitHub is a flying unicorn. They’re like Netflix,” says Mortman. “People will pick up some of what they are doing but it’s too advanced for most,” he says.

  • Web-scale IT drives Chef momentum

    Web-scale IT drives Chef momentum

    Chef today announced a series of metrics and features showing their support of and success as a result of what they call the shift to Web-Scale IT. As the picture below shows the Web-scale IT era has given rise to an exponentially larger, more scalable IT infrastructure.

    webscale

    What is Web-sclae IT? According to Chef:

    Web-scale IT brings the practices of large, web innovators into every business

    • Web-oriented architecture
    • Cloud capable including hybrid
    • Commodity hardware
    • Open source software
    • DevOps practices

    But I don’t want to give the impression that Web-scale IT is a Chef invention. Actually it is Gartner that is providing a lot of the analysis on the key drivers here and forecasting its heightened importance in IT. From a recent press release from Gartner:

    By 2017, Web-scale IT will be an architectural approach found operating in 50 percent of global enterprises, up from less than 10 percent in 2013, according to Gartner, Inc. Web-scale IT is a pattern of global-class computing that delivers the capabilities of large cloud service providers within an enterprise IT setting by rethinking positions across several dimensions.

    Barry Crist, CEO of Chef said, “Today, every business is a software business. Customers everywhere expect delightful and immediate services. Meeting these expectations is only possible through the speed, scale, and consistency provided by employing web-scale IT. Chef’s IT automation platform packages the success patterns of web innovators and delivers them to the enterprise,”

    Here are some of the elements or patterns of Web-Scale IT:

    patterns of webscale

     

    Having been through so many IT adoption cycles (I remember the big move to client/server), I am always weary of any new “paradigm changing” scenarios. If they were all true I would have retired an Internet millionaire back in the first dotcom bubble. However, what Chef is calling out here is certainly supported by the facts. IT today because of the Cloud, Big Data, virtualization, mobility and more has fundamentally changed. Automation, agile and lean principles are enabling the leveraging of these technologies more every day.

    Companies like Chef are capitalizing on these trends by providing solutions that both leverage and enable Web-scale IT. It is hard to argue with the numbers from Chef:

    • 182% Incremental Revenue Growth YoY
    • 100% New Enterprise Customer Growth YoY
    • Over 700 paying customers
    • 70% of total Sales to F1000
    • 600,000 Chef downloads per month
    • 55,000 Registered Chef Community members
    • Millions of Managed Instances

    As part of the announcement around their momentum Chef also announced some new product features. From their press release:

    –        New Analytics Platform, Acquisition of Tower 3: Chef’s new analytics platform provides full visibility into all activity on the Chef server and lays the foundation for audit and compliance capabilities. Chef recently acquired big data and analytics startup Tower3, adding significant engineering resources and expertise to its ongoing analytics development efforts. Now available to Chef subscribers is the new Chef action log, which publishes notifications on who is changing what on the Chef server and allows administrators to track cookbook usage, roles, environments, and changes to infrastructure, all through an easy-to-use dashboard.

    –        Test-Driven Infrastructure: Test-driven infrastructure ensures maximum IT safety and consistency with programmatic and automated testing of the entire stack. Chef is the first company to offer its customers commercial support for test-driven infrastructure. Chef has also created a single installation package – Chef DK – for the open source tools covering the entire test and development workflow, from the workstation all the way to production. Rally Software is among a range of enterprise customers using Chef for a test-driven approach to infrastructure and applications (see separate release).

    –        End-to-End Container Workflow Automation: Chef is the first automation platform to deliver end-to-end management of container workflows. Chef Container is a build of the Chef Client that integrates with all Linux containers (LXC), including Docker, to enable seamless management of container resources. In conjunction with Chef Container, Chef is also releasing a Knife Plugin-in for Docker integration with Chef Container, enabling users to launch, configure and manage Docker containers. Together, Chef’s new suite of container tools and content fully automate the creation, management, monitoring and testing of containers, making them versionable, testable, and repeatable within a production workflow.

    If you are interested in learning more about Web-scale IT, Chef have also released a white paper: “Automation and Web-Scale IT”

    All very impressive from Chef. But I don’t want to convey the idea that Chef is the only success in Web-scale IT or DevOps. Other companies like Puppet Labs, Saltstack, StackDriver, Ansibile, etc. are all experiencing rapid growth by riding the Web-scale IT express. Behind them are a host (no pun intended) of new startups that are offering solutions in this area.  Maybe this time we really are seeing a paradigm shift.

    In the meantime congratulations to Chef on some phenomenal growth numbers. For those of you who have made it to the bottom here, how is Web-scale IT changing your life?

  • Is Your DevOps Team Ready For The Real World?

    Is Your DevOps Team Ready For The Real World?

    Ten years ago I had the biggest cultural shock of my career. It wasn’t witnessing poor collaboration across IT development and operations or whatever tech fiefdom you care to mention. Nope, these were minor issues compared to those facing me on a really interesting project – integrating Industrial control systems with IT management.

    Working with a team of product managers, coders and sysadmins, our task was to develop a standards-based application for monitoring a physical research facility. When I say monitoring, I’m not only talking about network and systems management, but also managing equipment operating in the  ‘real world’ – like manufacturing robots, pressurized compartments, control networks, smart meters, alarms and controllers.

    It was a new experience for the team. Not only were we faced with a new set of technical challenges, we had to quickly become familiar with foreign sounding terms (to us anyway), like programmable logic controllers (PLC’s), supervisory control and data acquisition (SCADA) and human machine interfaces (HMI’s). Add to this a very different set of stakeholders – like industrial and plant engineers, and the initiative started off resembling something closer to a multi-language speed dating session (only without translators) than it did a traditional IT development project.

    At the time projects like this were a rarity because the worlds of operational technology and traditional IT was seen as separate. Process control and electrical transmission systems ran on separate control networks with proprietary protocols, whereas IT ran on a business network and primarily handed back-office business systems – the two domains were as different as ‘chalk and cheese’.

    But all that’s changing courtesy of the Internet of Things and a software-driven economy.

    Today, organizations are realizing that standards, unified architectures and software applications can be used to connect and integrate the devices and sensors in the physical world with IT systems – the benefit – more seamless end-to-end business processing.

    Take for example manufacturing. If plant production equipment can be better integrated with consumer demand analytics, then optimum maintenance windows can be identified. Similarly in energy and utilities, integrating the physical world of smart meters with back-end IT customer information applications is a must for efficient billing.

    This convergence will drive new approaches to developing and operating applications. The DevOps movement with its focus on teamwork and collaboration to shorten delivery cycles while improving quality might just be the answer, but there are some serious challenges to overcome – not least cultural.

    You might think you’ve solved the great IT divide with DevOps, but that’s nothing compared to the cultural chasm you’ll need to bridge across the world of industrial operations and IT. And no amount of IT ego will help, which I learnt the hard way when I was once given a sharp lesson in what ‘real-time’ processing actually is business by a group of chemical engineers – boy was I humbled.

    Technology beat up aside I believe there are many ways DevOps can help address the challenges associated with connecting and integrating operational technologies – especially:

    • Standards guidance – since operational systems work in isolation and use proprietary systems and communication protocols designed for specific control system networks (e.g. Modbus and BACnet), DevOps teams can help provide advice on new standards and integration platforms.
    • Knowledge and Expertise – DevOps teams can provide expertise in the selection of new software platforms that are now available to build and run Internet of Things applications.
    • Security and Risk Management – as more and more software finds its way into sensors and operational control networks become connected to the Internet, DevOps and security specialists will have a key role in identifying and mitigating many new security risks.
    • Data Management and Analytics– connected sensors and control systems may result in the need to capture and analyse huge quantities of data. DevOps teams can help in areas such as application architecture and design, testing, network capacity and cloud automation.

    As operational and information technologies converge, I believe the purview of DevOps will increase considerably.  Now teams might include technology constituents from other areas of the business – like engineering and logistics specialists – each bringing new skills to the table that when coordinated with IT expertise in areas like mobility and cloud computing has the potential to drive huge efficiencies.

    Application management will change also. Development work will increase, but so too will need to bake quality and resilience into every release. This is especially important because as processes become more integrated (from the factory floor sensor network to a mobile enabled materials management system or from healthcare diagnostic equipment to patient records applications) any minor defect, security issue or performance problem can trigger more catastrophic business failures.

    When I look back to my own teams foray into managing ‘real world’ technology, I realize that while we never had DevOps to guide us we still used many principles. Success came when we built a cross-domain business team that maximized a unique set of technical strengths, but also understood each other’s weaknesses.

    So DevOps teams take note – as technology convergence accelerates, the goal for many industries won’t be just bridging the IT development and operations divide and releasing more and more software, it’ll also be about developing a new range of end-to-end digitized business processes – from the factory floor to the boardroom – that’s a bigger deal and where success will ultimately be measured.

  • Video did not kill the radio star – IT Ops Continues on

    Video did not kill the radio star – IT Ops Continues on

    The Buggles classic “Video Killed the Radio Star” may have been a hit song, as well as hotly contested idea in the early 80s, but given the retrospect of the last 40 years, we know that video did not kill the radio star – it simply changed him. Just as MTV failed to kill the radio star, DevOps will fail to kill IT Ops.

    Today’s dynamic virtualized and cloud-filled world has significantly changed IT. With Software Defined “Everything” and virtualized compute, network, storage, etc., everything is fluid.  And to top this off, bandwidth is unlimited and inexpensive; making it easy to offload and move things in ways we couldn’t have dreamed possible just a few years ago. As a result, the infrastructure supporting these technologies is highly distributed, and can no longer be served from one place. All of this is significantly changing the way IT Ops, well, operates. In order to understand how IT Ops has changed, we need to look back at how it was. We don’t need to look back far, however.

    Most organizations have individual business units. Be it a large organization with separate businesses, or a smaller one with separate departments, these business units often find themselves competing over shared IT resources. Five years ago, business units vied for the time of shared application developers that lived in IT. Now, with the explosive growth and maturation of rapid delivery application development technologies, and with more and more revenue generated or influenced online, it makes sense, that these business units lobbied to the CIO to bring the app developer and application support functions within their control.  Application development has become a critical part of most businesses today..

    Once this happened, the distribution of budget also changed, taking full control of the IT budget away from IT Operations. Today, as much as 30% of the IT budget is directed by the individual business units. This happened because the business units were not getting the prioritization they wanted from the shared application developer approach. In the eyes of the business, IT couldn’t move fast enough for them, or didn’t have the same priorities that the business unit had. No one was satisfied.  So, the executive teams moved the application development and support budget to the respective business units, partly to stop the bickering.

    Some of these business units took their funds and used them to outsource development or to purchase software-as-a-service applications. Once cloud platforms and inexpensive, unlimited bandwidth arrived, the business units had alternatives, and they used them.

    This is all logical for business units, but it does not come without risk to the organization. With applications developed, controlled, and delivered outside of the purview of IT Ops, there were concerns about whether these applications would meet HIPAA or PCI compliance standards, IT’s security standards, business continuity guarantees, or back up schedules. A compromise was needed. What most organizations have come up with is to have IT Ops handle the general infrastructure, and allow each business to do what they want with the rest – about 30 percent of the budget. How does this look?

    Most apps today are componentized. If you take a retail app for example, the product browsing, the shopping cart, the payment page, and the confirmation and fulfillment are each separate applications. While the underlying infrastructure – how the app is configured, monitored, and supported – needs to be handled by IT Ops, each component lives on its own schedule of updates, and has its own team that maintains and fine tunes these apps to make sure they’re accountable to the business goals. But who, you might ask, comprises the team if not IT Ops?

    DevOps: The intersection of Development and Operations

    Enter DevOps. DevOps is one of those terms that can mean different things to different people, but in its most simple definition, DevOps is the convergence of development and operations. Forrester analyst Mike Gualtieri hit the nail on the head when he said: “The goal of DevOps to make the process of deploying applications faster and smoother.”

    Without “DevOps” all application issues (outages, etc.) will be routed to IT Ops. Because IT Ops is shared, has other priorities, and does not necessarily know the goals of each business unit, this is not the most practical option. Sure, IT Ops are sharp and talented people, but they specialize in maintaining infrastructure – they are not application experts by trade. Some organizations have hundreds of different applications spread among a dozen business units. There is no way that anyone could expect IT Ops to understand the specific needs and behaviors of each of these specific applications.

    The application developers know the app best, they know the requirements, and how to diagnose issues. They need a deep solution to trace transactions and end user experience. And, they know best what the app needs in a general sense….how much CPU, how much storage, how much RAM, etc. However, what they don’t have is expertise with VMware vSphere, Cisco UCS, VCE vBlock, FlexPod, IBM hardware, NetApp storage, EMC storage, etc. They are developers. They can manage their application operationally, but what happens when they run into an infrastructure problem? This is where IT Operations comes in.

    Gualtieri also said, “DevOps is a loosely defined set of emerging practices to get developers and operations pros to work together. Developers and operations professionals are often at odds. Developers want to release software more frequently; operations professionals want to protect the stability of the infrastructure.”

    This is why the portion of the IT budget that is moving away from IT and into individual business units continues to grow. It’s not necessarily surprising when people start talking about an end to IT Ops, or in some cases, and end to Operations all together (NoOps).

    However, despite the fact that organizations are moving away from IT Operations overseeing 100 percent of the budget, to a chunk of it now being managed by individual business units, without IT Ops each unit would control all of their own IT. Imagine unified communications without IT Ops. Do you really want each business unit in charge of that? No, you want economies of scale.  You want it to be shared – the network, the bandwidth, the storage – IT Ops will remain to manage all of that.

    As Gualtieri noted, “developers and operations need to stick together to best meet the demands of the business.” Recent research drives this point home. A study on the state of DevOps by Puppet Labs found that IT performance strongly correlates with DevOps practices like proactive monitoring, and continuous delivery and integration. In fact, according to the research, DevOps practices can boost IT performance and ultimately improve a business’s bottom line.

    IT teams have a more consultative and strategic approach, working in partnership with developers and other users of IT infrastructure to ensure that they all have access to what they need without bottlenecks or barriers to entry. Despite the fact that there appears to be room for both IT Ops and DevOps within organizations, it is clear that a shift is occurring.

    IT Ops: Making a move to large service providers

    Taking advantage of the latest technology innovation, as well as economies of scale, many organizations are now using service providers instead of owning their own infrastructure. One could say that this is pushing the IT Ops folks out, and they would be correct, but don’t worry they’re not becoming an endangered species. Instead of working for large enterprises, IT Ops professionals are working for the large service providers. They aren’t going away, they’re just moving off site.

    The budget will likely continue to go down for IT Ops on premise, but the cost of hosted infrastructure will go up, so the budget for IT Ops will even out. IT Ops is not disappearing, it’s transforming.

    In a time when Ops have become trendy and heated debates over terms have garnered the attention of the tech community, it comes as no surprise that the majority of us are left wondering what the future holds. One thing is for certain, be it DevOps, IT Ops, or SecDevOps, there will continue to be places for Ops within organizations.

  • Revolving door of IT employment threatens continuous delivery

    Revolving door of IT employment threatens continuous delivery

    As the IT job market heats up following a long lull, enterprises will increasingly need to cope with the difficulty of maintaining operational continuity in the face of personnel churn. Whether the revolving door agitates the employee pool for developers or operations staff, the length of time necessary to off-board departing IT staffers and on-board new ones can particularly endanger the fast-paced routine of continuous delivery and DevOps practices.

    Fortunately, the documentation and automation principles inherent to DevOps could actually also prove to be the very answer to a problem that threatens DevOps sustainability as job churn increases.

    “DevOps is not just a tools play, it’s a human play–how people eventually work has a very big impact on how well DevOps is put into place,” says Aater Suleman, CEO of Flux7 Labs and a professor in computer systems design and architecture at the University of Texas. “We have an immense shortage of talent in the market, and as engineers come and go it is almost unrealistic to expect that everyone who is there today is going to be there through the end of a project. You have to build business continuity around that and DevOps can play a key role in that.”

    Suleman says he’s recently seen customers struggle with this problem first hand. In one particularly dramatic example, a smaller firm his company works with has been seeing its 10 person developer team ravaged with a churn rate of one employee turning over per month.

    Recent industry numbers show that this kind of turnover may not be the result of organizational problems, but due to broader trends. Earlier this month, the Department of Labor reported that May capped off four months of dramatic job growth in the IT sector. Whereas in 2013, the DOL reported an average of 10,700 IT jobs gained per month, in May that number hit above 15,000.

    “We’re now getting back on that track after some horrible months for tech professionals,” says David Foote, chief analyst at Foote Partners which has been tracking and reporting on IT labor trends since 1997.

    Meanwhile, Robert Half International reports that IT salaries will rise by 5.6 percent this year. And a survey out this month from Computer Economics shows that 52 percent of hiring managers plan to increase the number of full-time IT staffers they hire this year, the highest this figure has been in three year. These statistics show how industry trends will spur on more movement between firms as skilled staffers look for greener pastures. This is particularly true for jobs seeking staffers experienced in DevOps, particularly as those DevOps vets exhibit a cross-pollenization of ops, dev and people management skill sets.

    “There still remains a lot of volatility even in the IT employment marketplace which for some time been expanding mostly in the IT services industries according to these federal jobs reports. What they’re not reporting is all the new IT-business hybrid jobs that have been created and for which employers are feverishly mounting recruiting efforts,” Foote says. “They cannot find and hire them fast enough. There are probably ten or fifteen open positions for every one suitable candidate and that person is almost always already employed. They cannot find and hire them fast enough.”

    So how can DevOps principles help to solve the continuity issue as employees play musical chairs? According to Suleman, most important is documenting and automating as much of the deprovisioning and provisioning process as possible. In particular, organizations should be seeking to iterate in order to speed up their on-boarding process in much the same fashion as they have for release schedules. In his example, the 10-person shop he pointed to as an example was getting killed by a two-day on-boarding process that didn’t scale well with the amount of turnover it was experiencing. One of the big reasons is that the company had no documentation standardizing the process.

    “If you broke it down, a big chunk of that time was spent in just familiarizing the employee in what technologies the company used, with a lot of that shared through human interaction,” Suleman says. “That was often not a good use of time because they still needed to be relearned over the next few weeks as the engineer really deep dove into the code to figure things out on their own.”

    Additionally, though, there was the issue of having no automatic way to share all of software, libraries and so on necessary to set up the new employee’s system so he or she could get started learning the environment.

    “There are a lot of external dependencies as a part of that process. You may have an instruction saying go ahead and install the latest database version, but the version I’ll download today will be different from one you downloaded last month and something that will work on your computer won’t on mine,” Suleman says. “What ends up happening is those two days are spent figuring out all those discrepancies.”

    In this case, a document may be helpful but even more helpful would be to find a way to automate the creation of up-to-date images of different roles’ environments so that all it takes is one simple install to get a new employee running from day one. This is exactly what Suleman says his company helped the customer do, creating a single, pre-packaged USB stick to go along with newly created documentation so that a two-day process was slimmed down to 30 minutes.

     

  • Build fast, then build right 

    Build fast, then build right 

    This article is a part of a series of pieces on digital innovation, accelerating change and the rise of the coded business from innovators in the Chef community. This article is by Kate Matsudaira, founder of Popforms

    Businesses have always needed speed and scale to meet customer demands. Today though, the kind of speed and scale businesses require to stay ahead of voracious consumer appetites and competitive offerings can only be achieved through a combination of: automation; internal culture shifts internally to integrate developers and IT functions closer together and more closely with the business; the use of commodity hardware; and a willingness to offer and embrace imperfect products. Then, and only then, will companies realize the benefits of moving quickly to deliver product, and also in unlocking innovation in this process to generate new revenue streams.
    For this to work, CIOs and CTOs must fully understand the business. They can no longer just be experts in technology. That’s not enough. For IT to evolve from a cost center to a revenue generator, IT must be integrated and engaged in the enterprise – large and small enterprises alike.

    Take a specialized candy company, for example. Before, it would not have been economical for this kind of business to scale at speed. But now, with minimal expense, it can acquire the compute cycles it needs, automatically deliver working code into its expanded production environment, and keep IT costs down through automation.

    Also, with the cloud and SaaS, costs for technology are way down – or, in some cases even free. This commoditization of technology is hugely positive for IT and its new role in many companies. Technology is no longer such a massive sunk cost. CIOs and CTOs can focus on meeting the quickly changing needs of internal and external customers to drive the business and growth forward and upward.

    That said, the pressure is on to deliver new code and new software solutions much faster, customer demand is relentless and escalating in intensity and speed. There is an almost immediate need that has to be fulfilled each and every day. And only automated and continuous delivery of code can meet that need in businesses of all sizes. It’s clearly a competitive imperative – and one that businesses must now approach differently as demand for “now” replaces demand for “perfect”. I advocate building v1 fast, then building v2 right. This gets product in the hands of consumers quickly and allows the team internally to answer pertinent questions that impact the long-term success of the product including:

    • How quickly will the data grow?
    • How fast will writes need to be?
    • Will it be feasible to write directly to the data store, or do you need a queue to manage

    writes?

    • What will the throughput be, and is it enough?
    • Will the system scale with usage?

    This “Lean Startup” approach to software development – which advocates fast iteration and data collection to hone in on the right product and requirements as quickly as possible – is all about figuring out what customers will use and then building those things.  And these same ideas can be applied to the technical ways we build products, too.

    Put another way – similar to creating a minimum viable product (MVP), build the minimum viable technical implementation that meets the business goals (the product can meet current usage requirements and performance).

    Most engineering teams have been taught to think about the software design and architecture from the beginning and build something that can scale. However, if you don’t have any customers yet, scaling really isn’t your challenge.  So, in some ways, designing for scale when you don’t have to scale yet, is solving the wrong problems.

    Of course, I am not advocating doing something careless, or writing bad code, but don’t over- engineer or solve for problems until you have them.

    In many ways, this process is about looking at the problems differently, and instead of solving the “big” problem, focusing on speed and efficiency – getting the highest ROI (return on investment) for your development resources.

    So you modify your development process to ship the first version quickly, and then once the v1 is out in the wild, plan to start on the v2 right after.

    Then your v2 can address all the problems with the first version of the product. You can improve the usability, cut or add features based on customer usage and feedback, pick the right technology and libraries to power the product, and spend time writing acceptance tests and unit tests that are unlikely to change. And, from a business perspective, you get the product out there faster, so it is easy to understand if it is going to drive revenue and success.

    This process makes sense because it:

    • Reduces the risk of over-engineering
    • If you build the wrong thing you can correct it
    • Chances are you will get to market faster

    So what are the downsides?

    • Total time to build is more than if you just got it right the first time. And operations can be a headache.


    If you do embark on this journey, here are some pointers:

    • Get management buy-in
    • Measure everything
    • Understand that the v2 will take much longer than the v1 and set expectations accordingly
    • Have a tight feedback loop with your customers
    • Make sure v1 and v2 are celebrated equally

    This is the formula organizations need to follow to be more competitive in today’s business of environment of rapidly evolving technology.