Category: Doin’ DevOps

  • Defining DevOps: Not Theory, nor Implementation

    Defining DevOps: Not Theory, nor Implementation

    Ask a dozen engineers, developers, testers or their managers what their definition of DevOps is and you will get likely very different answers from each of them. Some may say it’s primarily about culture, others may say it’s about accelerating or automating the release of software and infrastructure changes and some may use the mantra, “People, over process over tools.”

    What no ones seems to be able to agree on though is how to define the boundaries and constituent parts of what DevOps is really all about. It is all-encompassing, it seems to cover topics as varied as continuous improvement, collaboration, a whole raft of processes from agile, through testing to operations procedures, audit, compliance and customer feedback to collaboration. It seems to be attempting to cover every facet of life in this small part of development and IT operations that we live in—and because it’s so broad no one can really agree on what it means.

    My suggestion is that we should try to narrow the definition of what DevOps is in an attempt to create some boundaries so that it can be considered more of a discipline than a utopian goal. For this reason, let’s consider some of the core concepts—culture, communication, collaboration, continuous improvement—as things that are important to its implementation, but not the thing itself. These are aspects of high-performing teams and should use a different lexicon outside of the DevOps world.

    So culture should not be considered part of DevOps?

    Put simply, any initiative that fundamentally reshapes an industry through a fundamental change in its objectives, process and delivery mechanism implicitly needs the support, buy-in and leadership of those involved. Much of the cultural aspects of DevOps seems to be around these areas—but if you are attempting to radically change the way any industry works, then these are common goals that use management and leadership theory that are not restricted to change within a narrow segment of software development and IT operations. These leadership challenges exist not only within the teams responsible for the delivery of software and IT operations—but in many industries that undergo disruptive change.

    Should culture be a primary factor in implementing a DevOps initiative?

    Now, this may sounds like a contradiction to what’s been said above but the answer is, of course, yes. However, the culture of any organization should be at its core. The culture within a law firm is important, as it is in a research lab or within a retail organization. If we take retail as an example, when a retailer implements just-in-time (JIT) delivery, which is analogous to what certain aspects of DevOps is trying to achieve—the faster delivery of goods, automation, small batch, feedback loops, metrics, audit, collaboration of disperse part of the supply chain—how much priority is based on whether the employee’s need to be bought into the idea before the initiatives were started? I would suggest not much; it was a management decision, based on shareholder value and the competitive advantage it would provide over competitors. Now that DevOps has become much more mainstream, I think we should think about it in a similar fashion. Retailers that have not implemented JIT are either out of business or very niche. We should no longer be thinking we need to get staff buy-in; the world has moved on, it’s happening, it’s mainstream and if your not on board, then get a job elsewhere. If you work in a shop and put some goods in the store for sales that have not been delivered by JIT, then you get fired. Simple as that.

    Is DevOps really the same as JIT Delivery?

    No, of course it’s not. JIT was a top-down, strategic management decision to implement on its workforce. It did not come from the grass roots, it did not come from a philosophy and belief from those at the coal face that there is a better way to deliver goods to customers, it was not a revolution by checkout staff that demanded that no longer should their managers buy from suppliers on a golf course and return to the store and tell them to make it work. The DevOps culture, by which I mean the culture within the DevOps community, is so inspirational because they shunned the top-down approach to implement bloatware and chose to go off piste—collaborate with their piers and change the face of an industry in a revolutionary way. They demanded that they know best.

    Too many Brents

    For all the talk of culture however, this industry we work in has far too many Brents (as in the indispensable engineer in the Phoenix Project, who is the only person who can fix the problem, but is also the root cause of all the issues). I am often baffled at the irony of the no hero’s mantra that is all too often exposed in the DevOps world, but many of the most talented engineers I believe do crave a hero status. They derive a lot of their self worth from the work they produce and consider themselves a snowflake, even if their servers aren’t. They write complex scripting frameworks in Ruby or Python and are attracted toward complex and powerful tools that they enjoy using, engineering themselves into a position where they derive brent-like satisfaction and create some job security. I’m not necessarily being to critical of such an approach, but I do find it guiling that at the same time believe they are part of a cultural revolution.

    But do the engineers know best?

    I think it’s hard to argue that, certainly if compared to 10 years ago, that the broader influence of DevOps has not only made software delivery and IT operations a much more exciting and dynamic environment to be working in—but is also delivering huge business value and competitive advantage for those organizations that have embraced it. Was culture and philosophy a key driver to achieving this? Absolutely. But much as Ben Horowitz espouses in the “Hard Thing About Hard Things,” you need a team to take a business to a certain level, and once it has reached a certain level of success it needs to be taken forward by specialists, not generalists who brought it to that point. I believe we have reached that point.

    DevOps is now becoming mainstream and may benefit from being subdivided into different areas of specialization. As a startup, there is fun, excitement and a belief that you can change the world. Individuals that thrive on that often enjoy the variety in the work, performing a variety of functions within the organization—maybe some software development, support, pre-sales and marketing. But as an organization grows, specialization is required, there is a marketing team, support team, pre-sales and engineering team. This is a reality of working in a growth organization. There is no longer one team that does everything, but they are split out into specialization, collectively bringing the whole organization to a stronger place. DevOps has grown up—and needs to demarcate specializations to take it to the next level.

    So how should the boundaries of DevOps be defined?

    I would propose one of two things. DevOps remains the overarching philosophy of how we make the world a better place, underneath it sitting some more defined disciplines which are less related to the philosophy. So we don’t have the concept of a DevOps engineer, but instead they are roles such as automation specialist. Or perhaps, if I’m honest the way I felt when I started writing this blog is that we (and I consider myself part of the DevOps engineering community), now it has become much more mainstream, allow it to be taken forward by specialists disciplines, of which engineering is one, but the cultural, philosophical and management practices are no longer in the startup realm but need to be taken forward by the “grown ups.”

    The philosophy and implementation should be separated

    Ultimately, I think there needs to be some separation from philosophy of what DevOps is and the constituents parts of it. My primary reason for writing this blog, if I’m honest, was I am becoming bored of the DevOps bandwagon. The whole DevOps concept is is meant to conjure exciting and positive ideas how we can make the world a better place … but spring turns to summer, turns to fall, and successful startups turn from dreamers with passion to having VC backers or being owned by private equity.

    This is not meant to be a negative point though—anyone who creates a start up ultimately wants it to go on to become a grown up. And Patrick Debois may be the founder of the startup, but DevOps is now a publicly listed company.

    About the Author / Dave Sayers

    Dave Sayers is a co-founder and technical services director of MidVision, a provider of Release Automation and Continuous Delivery Software. He works closely with customers and partners on DevOps and Automation initiaitves throughout Europe and North America and is responsible for devising and managing the partner and channel strategy. Connect with him on LinkedIn.

  • Puppet Launches 2017 State of DevOps Survey

    Puppet Launches 2017 State of DevOps Survey

    It’s that time of year again!

    We at Puppet have kicked off the 2017 annual State of DevOps. survey. Now in its sixth year, we have once again teamed up with DevOps Research and Assessment (DORA), founded by our dear friends Gene Kim, Jez Humble and Nicole Forsgren, to survey technology professionals worldwide in an effort to better understand the health and habits of organizations adopting DevOps. We’re pleased to see that the report now serves as the de facto gauge for the DevOps community to find out how IT organizations are doing and how they can improve.

    One of the most critical aspects of the survey is that it manages to translate the processes between technical practices and choices into actual business outcomes and helps organizations understand the real benefits of DevOps adoption. Through analysis of each year’s survey responses, we’ve been able to quantify IT performance. From last year’s report, we know that high-performing IT teams are pulling away from the pack in terms of throughput. They deploy 200 times more frequently, have 2,555 times faster lead times, have a three times lower change failure rate and recover from failures 24 times faster.

    Survey Says …

    This year, we’re interested in learning more about infrastructure architecture patterns within organizations. We’re not just asking how the services are designed, but we also are curious to see if teams are free to move at their own pace and if they are largely self-sufficient. Can they easily make large-scale changes to their architectural design?

    We’re asking questions about team experimentation and whether teams are able to evolve the design of their architecture as they work and if they are required to interact with a lot of people across the organization. One of the things to emerge from the agile and DevOps movements is that the more we can enable teams to work quickly and self-sufficiently, and increase speed without reducing quality, the better it is for everyone.

    This year, we expect to see proof that high-performing IT teams are those who have been enabled to operate with a much higher degree of autonomy, and that their quality metrics remain stable or even exceed those of high-performing IT organizations. We also expect the findings to confirm that early DevOps adopters are still seeing exponential benefits compared to their colleagues who haven’t yet embraced DevOps. The longer your organization has been adopting DevOps practices, the more it becomes muscle memory and reinforces positive behavior within them, which has unparalleled benefits. As any IT professional working in a large company knows, there’s an awful lot of waste and inefficiency and we’re not anywhere near peak DevOps penetration. With each passing year, survey results show DevOps adoption is a key contributor to enhanced productivity and efficiency. We expect this year’s results to be no different.

    We’ll be publishing the results and our analysis in June, and have no doubt it’ll be worth the wait. Stay tuned!

    About the Author / Nigel Kersten

    Nigel Kersten is CIO of Puppet. He came to Puppet from Google, where he was responsible for the design and implementation of one of the largest Puppet deployments in the world. At Puppet, Nigel was responsible for development of the initial versions of Puppet Enterprise, and has since served in a variety of roles, including head of product, CTO and CIO. He has been deeply involved in Puppet’s DevOps initiatives, and regularly speaks around the world about adoption of DevOps in the enterprise and IT organizational transformation.

  • Everything Ops: Are DevOps Principles Being Applied Too Broadly?

    Everything Ops: Are DevOps Principles Being Applied Too Broadly?

    From big data to storage to security, the DevOps concept is being applied to every field of IT operations under the sun today. This “Everything Ops” movement reflects the popularity of DevOps—but is it also diluting DevOps’s significance?

    DevOps itself focuses on software delivery. It’s about designing, building, testing, deploying and managing software applications.

    If you follow the DevOps conversation, however, you know that DevOps principles are now being extended to lots of niches that don’t have much or anything to do with software delivery chains. Consider these examples:

    • DataOps: DevOps principles for data analysts.
    • ChatOps: The idea that chat tools should be integrated into workflows.
    • SecOps (or rugged DevOps, or DevSecOps, or whatever else you want to call it): DevOps practices for security teams.
    • Storage Ops: The insertion of DevOps practices into storage.

    The list could go on. Taken together, these many flavors of DevOps reflect what I like to a call an “Everything Ops” tendency. Fans of DevOps want DevOps to take over the entire world of IT.

    Benefits and Drawbacks of ‘Everything Ops’

    If you believe that DevOps represents a better way to deliver software, then the Everything Ops movement is a positive thing. It’s a way to help people who work in areas of IT other than software delivery to innovate as well by taking cues from their DevOps colleagues.

    But there is also a danger that Everything Ops can be applied too broadly. You can’t fit every single thing in the IT universe into the DevOps mold. For example, CloudOps (the DevOps-related way of managing cloud infrastructure, not the company of the same name) just doesn’t make a lot of sense. It’s basically just a reiteration of the ideas that are already at the core of cloud computing: Scalability, agility and location-agnosticism.

    Concepts like ChatOps can also be problematic because they refer to a specific way of using a particular type of technology, whereas DevOps is about cultural practices. ChatOps is a fundamentally different sort of thing from DevOps.

    Conclusion

    In short, by overextending the DevOps conceptual framework, you run the risk of diluting the importance of DevOps itself—and of losing your focus on software delivery, which is the area that DevOps benefits most.

    This is not to say that we shouldn’t extend DevOps to other fields. We certainly should. But we should be careful when doing so. Don’t try to make DevOps eat the entire IT world, because that just doesn’t make sense.

    — Chris Tozzi

  • 35+ Tools Every DevOps Expert Must Know

    35+ Tools Every DevOps Expert Must Know

    List of DevOps tools and resources:

    Here is the set of tools and resources that help every DevOps enthusiast must know.

    Learn coding:

    Code academy: Learn to code interactively, for free.

    Code school: Interactive programming courses and guided projects.

    Treehouse: Learn Web Design, Coding & Much More.

    Lynda: Technology and Creative Skills taught by industry experts.

    Tuts+: Thousands of free tutorials and online courses to help you learn software development from mobile devices to web applications and everything in between.

    Source control:

    GitHub: GitHub is a web-based Git repository hosting service. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features.

    Bitbucket: Bitbucket is a web-based hosting service for projects that use either the Mercurial (since launch) or Git (since October 2011) revision control systems. Bitbucket offers both commercial plans and free accounts.

    Versions: Versions offers the best way to work with Subversion on the Mac. Thanks to its clear-cut approach, you’ll hit the ground running.

    Tower: Version control with Git, made easy. In a beautiful, efficient and powerful app.

    SourceTree: Harness the power of Git and Hg in a beautifully simple application.

    Continuous integration and deployment:

    Circle CI: The modern continuous integration and delivery platform that software teams love to use.

    Travis CI: Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes!

    Shippable: A declarative CI/CD and release automation platform that streamlines software delivery.

    GO CD: Open-source continuous delivery server to model and visualize complex workflows with ease.

    Xebia Labs: Continuous delivery at enterprise scale.

    Electric Cloud: Powering continuous delivery and release automation.

    CloudBees: CloudBees is the hub of enterprise Jenkins and DevOps, providing companies with smarter solutions for automating software development and delivery.

    Development platforms:

    Heroku: Deploy and run apps on today’s most innovative platform as a service.

    Cloud 66: Simplify DevOps—build, deploy and maintain any application on any server, on Rackspace

    Docker Cloud: Build, ship, and run any app, anywhere.

    Appfog: A platform for creating, scaling and managing cloud-native apps.

    Engine Yard: Reliability and support you can count on. Built and proven on over 1 billion AWS hours.

    Bug tracking and monitoring:

    Bugzilla: Bugzilla is server software designed to help you manage software development.

    Bugify: Bugify is being used in many different industries. If there’s anything you need to keep track of, keep track of it with Bugify.

    Usersnap: Collect feedback and track bugs. Your central place to organize your web projects.

    BugHerd: Bug tracking so simple—it’s like sticky notes on a website. Capture client feedback, resolve issues and manage projects visually.

    New Relic: New Relic is the first, best place to examine and understand your digital business.

    Browser add-ons:

    Measureit: Draw out a ruler to get the pixel width and height of any elements on a webpage.

    Ghostery: Protect your privacy. See who’s tracking your web browsing with Ghostery.

    View source chart: Inspect the DOM at lightning speed.

    Colorzilla: Advanced eyedropper, color picker, gradient generator and other colorful goodies.

    Empty cache button: Cache clearing made easy. One click.

    CSS and HTML5 frameworks:

    Foundation: The most advanced responsive front-end framework in the world.

    Bootstrap: Sleek, intuitive and powerful front-end framework for faster and easier web development.

    Framework 7: Full-featured HTML framework for building iOS and Android apps.

    Some cool tools:

    Metricfire: Metricfire operate Hosted Graphite, a powerful way for teams to measure technology.

    Snippets: Snippets is a powerful application for Mac and Windows that stores the most valuable pieces of code you can reuse in different projects many times.

    Lingohub: Master your translation workflow and connect with world leading translators.

    Flowdock: Chat and inbox for teams. One place to talk and stay up to date.

    These tools can definitely help you do DevOps and software development efficiently.

    — TeamShippable

  • Time, Training: How to Implement DevOps Effectively

    Time, Training: How to Implement DevOps Effectively

    Successful implementation of DevOps solutions requires two very important investments: time and training.

    New technologies have always transformed how the commercial world operates. The steam engine for example, fueled the industrial revolution of the 18th century and changed the face of business forever. This dramatic shift didn’t happen overnight, though; people had to learn new skills to manage steam power and operate trains, ships and equipment that previously did not exist.

    Adopting a new system within a modern day organization is no less challenging. It takes in-house expertise and top-down leadership to crest the learning curve as quickly as possible.

    Training Your People

    To realize the benefits of DevOps, businesses need people—particularly, system administrators and their managers, who know how to operate the systems. It really is that simple, yet most companies just don’t have the skills. Training, training and more training, coupled with lots of hard work and practice, is paramount.

    Middle managers in charge of integrating the new systems are first in line for training. They deal directly with upper management as well as with the new software’s end users. To communicate the importance of DevOps to both audiences successfully, they need to understand exactly what DevOps can achieve—and how to get it up and running in line with the company’s wider business goals. They need to know what skills are needed to implement DevOps companywide and identify the right people to learn the ropes quickly and efficiently.

    Push from the Top

    A successful switch to DevOps also is dependent on support and buy-in from upper management. They don’t necessarily need to have an in-depth knowledge of the systems, but they do need to push for fast and effective implementation—and allocate the resources to make it happen. With all key stakeholders working together to reach the same realistic timelines and deadlines, the new systems will be introduced far more seamlessly. If the process is at all disruptive, people will be reluctant to change their way of working and do things the same way they always have.

    Senior management must support the system change and encourage its use across the organization by openly embracing its potential.

    Test the System

    Traditionally, implementing a new production system was a long, onerous process with lots of restrictions and administrative hurdles to jump. In many instances, a committee of key stakeholders was needed to verify and approve each step. Forms had to be filled out, a thorough backup plan would be prepared and a bureaucratic chain of command would be followed. The further removed from the actual implementation project each signatory was, the less committed they were—which often led to repetitive meetings and costly delays.

    This labor-intensive change management approval process was in place to help prevent any failing in the production plan, which could have disastrous effects. Should for example, an online retailer’s check-out or internet banking infrastructure go down, business profits and reputation would suffer significantly.

    Implementing DevOps is different. It uses a test environment to speed up the onboarding process and minimize errors. IT engineers can do dry-runs before going live to check how the new systems are integrating and if anything is wrong before it actually does go wrong. Bugs and glitches are fixed without impacting the current systems and the approval process is far faster and much more confident. All of which can speed the entire implementation process and its success.

    The potential of DevOps is inextricably linked to the people who implement and operate the new systems as well as the old. To achieve the best possible outcome, your team needs to have the experience and skills to ensure a seamless integration that enhances core business functions without losing or disrupting the organization as a whole.

    About the Author / Francis Miers

    Francis Miers is a Director at Automation Consultants – Automation Consultants (AC) is an IT services and software company with a mission to improve the speed and reduce the cost of IT project deployment by implementing automation across the software life cycle. AC develops and deploys advanced software automation solutions. Customers include BskyB, HSBC, Invensys, Orange, EverythingEverwhere and Vodafone.

     

  • The Code Doesn’t Lie, and Other Operations Mantras

    The Code Doesn’t Lie, and Other Operations Mantras

    As engineers, we spend a lot of time talking about things such as release processes, QA environments and deployments. But at the end of the day, most software systems fail because the software itself is faulty. The code doesn’t lie—you can almost always find the solution to your problem within the code itself. Of course, looking to the code for answers is a time-consuming process if you’ve deployed too much in one batch. After all, sometimes the tiniest mistake can derail a whole string of code, and having to sort through a haystack of code looking for a tiny needle is not fun.

    There are a few corollaries to this mantra that “the code doesn’t lie”:

    • “Know your data like you know yourself.” Sometimes the quality of the data itself can cause a system to behave differently.
    • “A feature is a bug in a tuxedo,” which is largely for you product folks out there.
    • “Where there is one bug, there are many.” When you find a problem and it leads to a systemic set of problems, it may seem terrible at first, but the reality is, you have the opportunity to fix a lot in a short amount of time.

    I had a chemistry teacher who used to say, “A mole is a mole is a mole,” referring to Avogadro’s number. My version is: “A bug is a bug is a bug.” A feature that behaves incorrectly (even if built to spec) is a bug. A badly performing system is a bug. A transient failure is a bug. A race condition is a bug. No matter what they look like, it’s our job to squash the bugs.

    Branch Readiness is a Joke

    A very talented engineering director once made the comment, “Branch readiness is a joke,” about the branch/development model. As 23 different teams were preparing their branches for integration onto the main trunk, code changes were flying around with very little testing/certification. We even had code that would not compile.

    When all 23 branches hit the main release branch, all hell broke loose. And this is where the actual functional, integration and performance testing began. The key problem with this model is that integration and certification happened late in the game. The other problem was that we did not abide by our own criteria of what constituted branch readiness; instead, we were constantly softening the restrictions until bad code made its way into the system.

    We moved to a trunk-based model of development where check-ins are made directly to the trunk, and all code must compile and be pretested. Continuous integration and testing are run against the trunk all day and all night. We can ship from the trunk at any moment.

    Now you may be asking yourself, What does this have to do with operations? The answer is: everything. We can control what changes get to the site. We can certify what changes get to the site. We are assured at every moment of a minimum quality in the changes that do get to the site. These smaller changes give us the ability to move bits onto the site more frequently. We are not forced into large-scale, monolithic deployments, which inherently create more risk to the site itself, often with little ability to roll back.

    Learning from ‘Branch Readiness is a Joke’

    Just because the code doesn’t lie does not mean that you can always understand all of its implications. The key is limiting the amount of code being changed in any individual release to an amount an engineer or automated system can understand. By avoiding large, monolithic releases containing thousands of changes and instead testing, verifying and considering each change individually, we can understand what the code is telling us. We can release to the trunk with confidence that what we build and deploy is going to work.

    The One-Character Change

    We live in a world of bits and bytes (eight bits per byte). One byte is the equivalent of one character. In some cases, a one-character change is benign. For example, changing the number of members of a site on an informational page from 134M to 135M (4 to 5) will not cause any harm to the site.

    But sometimes, a one-character change can be disastrous. Consider a DNS change that has a one-character mistake for www.yourcompany.com. Get it wrong and you are off the air. It is very important to understand the impact of a change going awry. If it can cause a large impact, then we need to ensure we understand the change and have a clear plan to roll it back if we need to.

    Here’s a great example of a very small change going sideways very fast: We once scheduled a maintenance to test routing traffic through a European point-of-presence. Unfortunately, the time-to-live parameter was set to a large number (hours instead of minutes) on the DNS entry. The result was that the change, once implemented, couldn’t be fully undone for hours. It was a one-character change with a bad outcome.

    Learning from the One-Character Change

    The code doesn’t lie, but that only matters if we are paying attention. Put simply, not all changes are equal. By taking the time to think about what a change is intended to accomplish and the various ways it could go wrong, we will always be better off than if we didn’t do due diligence. The one-character change can be benign, or it can be catastrophic. It’s important to figure out the possible ramifications of any changes (no matter how small they may seem) before proceeding.

    Operations tends to be the first group to get called after hours when something goes wrong. As a result, we have a vested interest in quality of code shipping to our site. By working to improve the code quality before it hits production, you can significantly reduce the number of problems you encounter.

    Start with where the code gets committed into source control. For each change made ask the simple questions: Does the code still compile? Does your application still build correctly? Does it still work as intended? By automating the process of asking these questions for every change, we gain the ability to deploy new versions of our application based on any commit.

    Once we have good code quality making it into source control, we can begin making further improvements through the use of a canary process and start focusing on things such as performance. Remember, the code doesn’t lie. If we can understand each change, then we can start preventing problems before they begin.

    This post is part of the series “Every Day Is Monday in Operations.” Throughout this series we discuss our challenges, share our war stories and walk through the learning we’ve gained as Operations leaders. You can read the introduction and find links to the rest of the series here.

    About the Author / David Henke

    David Henke has more than 35 years of experience working in technology, including senior engineering leadership positions at LinkedIn, Yahoo!, and AltaVista Company. He’s also been a founder at two different software companies, both of which were acquired. Currently, David serves in a variety of board and advisory positions with organizations like NerdWallet and UC Santa Barbara.

  • Best DevOps Practices for 2017

    Best DevOps Practices for 2017

    Because the idea of DevOps is still so new, we’re continually having to hone what we view as best practices. At the start of the new year, many people make their own personal goals clear for the year (regardless of whether they intend to keep them), but we tend to head back to our work desks without reassessing how our projects are going. We just jump back in unquestioningly and continue down the path we were on before the holiday.

    Mindless plodding away at a goal that had been set too far in the past is perhaps the biggest business mistake we can make. Re-evaluating our approach is often the difference between stagnation and real innovation. A willingness to change tacks and the agility to do so speaks volumes about an organization—that flexibility is rewarded by a market that demands responsiveness from its providers, and it can be a big differentiator between a company and its competition. With that in mind, there are six big goals that we can adopt as DevOps practitioners that will have enormous results on our ability to answer the demands of our users.

    Make paying off debt a priority

    Most companies are so saddled with technical debt that they hire more people just to cope with it. This is like putting more hoses on a forest fire. When fighting a forest fire, a portion of the team creates a firebreak to deprive the fire of fuel. Likewise, organizations need to dedicate a portion of their workforce to do nothing but eliminate the technical debt that is fueling their operational fires.

    Set ambitious goals, but don’t sweat the details

    Have goals and objectives, but allow the minutiae to be developed over the course of short intervals. We need to set business-level objectives for our DevOps teams, but we have to be careful to not overprescribe the details. There are many DevOps tools and methods and more arrive every day. Plan to work in two- to four-week sprints with measurable outcomes, instead of six-month project plans. Use the feedback and lessons learned from those short sprints to inform the next sprint’s work.

    Don’t leap, but get moving

    DevOps is meant to be about quickly moving product from left to right. A common mistake is for companies to wait for “the perfect moment” and then jump headlong into DevOps, creating a lot of disruption at once. This is a recipe for disaster. Identify workstreams that are ripe for improvement from DevOps and start by moving one new benefit from concept to production. Remember, single-piece flow is your friend.

    Identify the ‘credit hawks’ and neutralize them

    I once heard the saying, “Just because you run out in front of a parade doesn’t mean they are actually following you.” One of the critical pieces that makes DevOps work is a culture of sharing. That means sharing in knowledge, work, credit and blame. A “credit hawk” is someone who likes to jump in front of work already being done and claim he or she is orchestrating it. This seems to be commonplace in situations where DevOps teams exist under mid-to-upper managers with “old guard” mentality. If they take the credit, that leaves the DevOps team with the blame. Neutralize the credit hawks at all cost; they will undermine your culture.

    Plan for failure, success through learning

    Planning for failure does not equate to “expect failure,” but because we want to move faster so we can try more things, the law of averages tell us that we will also fail more, too. Planning to fail means we know how to conduct a blameless post-mortem, understand lessons learned and incorporate that feedback cycle to increase the likelihood of success.

    Promise to break the rules

    Your DevOps team needs to be trusted to find the best path, even if that means ignoring a 70-year-old process. This statement might invoke a knee-jerk reaction, but this does not imply “anything goes.” Your objective is to find more productive ways to get product to market and to create safe systems of work. Part of your lease to your DevOps teams also should be to explore new processes that eliminate red tape, bureaucracy and waste. What has worked for the last 70 years may be what is holding you back today.

    2016 rewarded those who were able to move fast, and 2017 promises to require us to move even faster. By resolving to make these changes in your company or organization, you are making a commitment to shed the shackles of yesteryear. When freed of these fetters, your application teams will be able to focus and deliver on the one thing we are all trying to do: deliver value directly into the hands of our customers. Is 2017 the year your company will triple its release cadence? Is this the year you deliver every new product into all markets simultaneously? Or perhaps this is the year when your applications suffer zero outages. The goals and the stories are yours to tell, but one thing is for sure: Resolutions without action are just wishes.

    About the Author / Adam Bowen

    Adam Bowen is an information technology leader with more than 15 years of experience in technical, sales and senior leadership roles. As the Worldwide Innovation Lead at Delphix, Adam works with thought leaders of the Global Fortune 100 to eliminate key business constraints through innovative new  processes, offerings, and technologies. Connect with him on Twitter and LinkedIn.

  • Automic Helps DevOps Transformation Sparkle

    Automic Helps DevOps Transformation Sparkle

    Working closely with Automic, an international wholesaler and retailer of jewelery transformed a department of project managers, developers and operations responsible for all of the customer-facing websites into a DevOps organization. As a result, project delivery was completed with 90 percent fewer delays, and first customer-facing releases of projects could be delivered in less than half the time. The usability of its websites increased significantly, resulting in more customer traffic, longer average time spent on the sites and increased revenue.

    Haphazard Development

    Prior to the DevOps implementation, new projects were delivered by “waterfall” project management means. The cyclical resource planning process was based on the project portfolio and business priorities. Project managers then planned project milestones working closely with business stakeholders, business analysts and application developers. Analysts created specifications and developers were assigned to work on packages and tasks to implement them.

    Different web technologies were used with varying levels of dev and ops expertise in each technology. The  Operations team members usually fulfilled requests made during the course of a project as part of their overall daily tasks—for example, to provision a new environment, deploy a package or change the environment configuration.

    This approach had a major disadvantage. Delays in one project impacted the overall resource planning and could have a cascading effect on other projects. Delays in projects could be for multiple reasons, such as waiting for business stakeholder impact, frequently changing requirements, unexpected sick leaves of developers or poor estimates. Other frequent causes included delays in operations tasks such as a deployment or provisioning of a new environment. These delays were caused by unaligned planning as well as a mismatch in priorities between projects and operations. Besides delays, some developers were underutilized, which also was exacerbated because they were specialized in a technology or component.

    DevOps Transformation Solution

    Working closely with the customer, Automic restructured dev and ops by:

    1. Switching the development from a project to a product mode (cross-project development teams based on capabilities rather than assignment of individual developers to projects).
    2. Moving project managers from development micromanagement to focus on major milestones and deliverables to the business.
    3. Enabling some project managers as product owners (project management remained necessary).
    4. Providing developers with agile methodologies through initial training plus ongoing coaching (six to 12 months).
    5. Providing ops with an agile methodology.
    6. Organizing both dev and ops into multiskilled teams focused on individual products rather than technologies.
    7. Aligning ops into delivery teams, initially part-time and later full-time.
    8. Giving delivery teams the end-to-end responsibility for their products, including their operations.
    9. Standardizing the technology stacks within teams (but not across them) over time.
    10. Delivering projects into production (or alpha, beta) in slices (releases) instead of just once to get early feedback and improve.

    Results: Fewer Delays, Better Usability

    By standardizing, this customer has transformed its dev and ops teams, creating an agile, scalable environment that can drive the business forward. The company achieved the following specific results:

    • Project delivery are now completed with 90 percent fewer delays. First customer-facing releases of projects now are usually delivered in less than half time.
    • The usability of websites has increased significantly, resulting in more customer traffic, customers remaining longer on the sites and increased revenue opportunities.

    About the Author/Michael Schmidt

    Courtney-Glymph_avatar_1435225162-96x96Michael Schmidt heads DevOps Practice at Automic, a management and technology advisory service established to help Automic customers to prepare for and transform their organizations toward DevOps. Michael spent his carrier as consultant, entrepreneur and in several product-related leadership positions. He has a passion for building lean IT organizations. Michael holds a joint MBA from New York University, London School of Economics and HEC Paris and a Master of Computing Science.

  • 15 DevOps Expert Opinions on Continuous Integration and Delivery

    15 DevOps Expert Opinions on Continuous Integration and Delivery

    We at Shippable recently approached some DevOps experts and asked them what they really think about continuous integration (CI) and continuous delivery (CD). The responses were just amazing, proving that CI/CD’s future is just bright and long in the software development process.

    Perhaps this insight might be of help to organizations, regardless of whether they already practicing CI/CD or have yet to adopt it in their organization.

    Sit back, relax and read these opinions from DevOps Experts:

    1. Chris Nwamba

    Chris Nwamba is a self-described code beast who works with scotch.io. “Continuous integration is simply ‘building big and shipping small,’” he said. “The developer or engineer is not expected to produce a complete result; the project is divided into milestones and he or she can produce the expected output for each milestone which is reviewed and pushed. Continuous delivery, on the other hand, involves delivering and deploying a tested and usable feature to the end user as soon as it is available from the engineer. No constraints such as milestones or daily reports are placed on the engineer; rather, the product is delivered when it is ready and tested within a reasonable amount of time.”

    2. David Bernstein

    David Bernstein is the author of “Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software.” He says, “I’ve written a lot about CI and CD. It’s one of the nine core practices in my new book. The first principle of the Agile Manifesto is, ‘Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.’ The practice of continuous delivery is the only way I know to achieve this principle and is at the very core of Agile software development.”

    3. Tomohiro Iizuka

    Tomohiro Iizuka is a full-stack web application developer. He says, “Continuous integration and delivery are still at the frontier of IT technology, like NoSQL. It will change the business style of freelance engineers. Businesses using cloud servers will especially change. However, there are some issues to solve in order to execute it. An IT system consists of some subsystems that affect how teams work together on development and management after the first release. If an engineer can provide a subsystem that’s comprehensive to end users, freelance engineers can have their own product and they can concentrate on maintaining their own product continuously. That will make use of cloud platforms more popular, and they can have opportunities to gain profit continuously in addition to development fees. Open-source products like Eclipse, Firefox, WordPress are some examples. However, in general, that is not done. I think that the platform for making independent software components is necessary for freelance engineers to make new businesses with continuous integration and delivery.”

    4. Anubhava Srivastava

    DevOps expert Anubhava Srivastava is a lead engineer-architect at AOL Inc. According to him, some of the advantages of CI and CD are: “DevOps and CI/CD give more power to developers. Developers have greater control over the application stack and require access to production servers. The exact same repeatable deployment process is used across different environments like dev, QA, staging and production. Everything is automated right after code is checked in. There’s fast and quick resolution time for emergencies. Due to code coverage reports being monitored and shared widely, developers are forced to write test cases for every line and every condition in the code. Due to stress on TDD, developers are producing higher-quality applications with significantly fewer bugs. It has definitely helped the organization, as they don’t need the same headcount for QA and Ops teams anymore.”

    5. Erik Dietrich

    Erik Dietrich is the founder and principal of DaedTech, LLC. He says, “In short, both of those [CI and CD] are practices that I endorse and help people move towards. On the whole, I’m a huge fan of automating the automatable to avoid mistakes and save time.”

    6. Tom Zorde

    Tom Zorde is an enterprise architect at Monadelphous. He says, “There is an inevitable need for CI, no doubt. But developers need to have autonomy to self-elect to skip a check-in if they don’t feel their code contribution is ready. This will reduce the wasted effort of dealing with failed integrations and keep developers focus in the zone.”

    7. Ian Robertson

    Ian Robertson is a product owner at River Island. He says, “I work in retail (fast fashion). While we do build core ranges to meet the seasons, it is our quick response to rapidly changing trends that generates the excitement that drives our brand values. An emerging style cue seen on the catwalks one Friday can be in our stores and online by the following weekend. Those same customers expecting the latest fashion will be interacting on our app and website, so we need to be as Agile in development and deployment as we are in apparel design and production to keep up with customer expectations. It’s not just the front end; our supply chain, logistics and merchandising systems need to be able to respond rapidly to real-world changes. Adopting CI and CD allows us to reduce the time to market, reduce risk, deliver better customer experiences and drive value for the business.”

    8. The Folks at Browser Up

    Browser Up is a performance and load testing tool. Folks there say, “Using CI and CD is a force multiplier that amplifies the speed at which software can be developed and delivered. To be effective, a CI and CD pipeline must include a robust test suite that include continual performance and functional testing.”

    9. Georg von Sperling

    Georg von Sperling is a practitioner, evangelist and general geek on software development methodologies, technology, patterns, systems, delivery practices and DevOps. He says, “CI and continuous deployment are very technical in nature and benefit the technical teams. They are crucial to address. They do not, however, define continuous delivery. CI could be defined as an early detection system at the code and build level. Early detection at those levels have been proven beneficial as these are types of bugs that are exponentially more costly to remediate at later stages. Continuous deployment is an ability to promote code technically down the pipe into production at velocity, allowing consumption faster. There are facets of continuous deployment that must be considered: rollback, A/B testing and metrics gathering. Many fail here very quickly. Continuous delivery (of which I am an avid advocate for) is a business subject; although, in software powered organizations and/or digital business models, it has a fairly large technical component. It is very difficult, if not impossible, to translate CI and continuous deployment into direct business benefits. Continuous delivery, however, is business metrics-driven and defensible at the CxO level to stakeholders and shareholders.”

    10. Endi Sukaj

    Endi Sukaj is a full-stack developer who specializes in back-end development. He’s currently a community team member at Slant.co. He says, “CI is a crucial part in the development and deployment process of projects of a certain size especially if two or more people are working on it. The most valuable resource is time, and a good CI service and implementation helps developers in saving as much time as possible by avoiding ‘integration hell’ and by running all unit tests in the same environment as in production.”

    11. Jordi Mozcode

    Jordi Mozcode is a software developer focused on .NET Core, MVC, TDD, SOLID, clean, software quality, best practices, secure coding and pentesting. He says, “In my professional experience, the adoption of continuous integration and continuous delivery improves three basic facts: quality, flexibility, and speed. Quality, because CI guarantees a much lower rate of development bugs and CD provides a robust and secure system throughout the development cycle. Flexibility, because at every step of the development cycle you have the control of continue to next step or going backward easily. Speed, because in an idyllic case with no development bugs the release can be deployed in production almost instantly.”

    12. Dave Kerr

    Dave Kerr is a software developer for everything from device drivers to full enterprise applications. He says, “If the org is building tech services or products, CI and CD are critical. Deployment doesn’t need to be continuous but the team needs to be confident that what they are building is shippable.”

    13. Matt Kurleto

    Matt Kurelto is a serial entrepreneur and CEO at Neoteric. He says, “I think it’s a necessity if you are thinking seriously about cloud services. I think that microservices architecture can only be well-leveraged with automated CI, CD and QA flow, and for me, this setup is a must if you want to take advantage of lean business and agile project management.”

    14. Sean Handley

    Sean Handley is the lead cloud applications engineer at DataCentred. He says, “CI and CD are things we practice on our tech team. They allow us to ship production changes many times per day in confidence. My view is that any software team not using CI and CD needs to seriously reconsider their methods!”

    15. Manisha Sahasrabudhe

    DevOps Expert Manisha Sahasrabudhe is the co-founder at CMO at Shippable. She says, “All companies are software companies today, and faster innovation is the key to winning against your competitors. Continuous integration and delivery are crucial in helping you accelerate your release cycles and innovate faster than anyone else. This will become especially important as microservices become ubiquitous and your application is composed of hundreds of services that need to be deployed, scaled and monitored independently. CI and CD automation is the only way to bring some method to the madness.”

    We hope these DevOps Experts opinions are enough for you to figure out how important it is to adopt to CI/CD practices.

    — TeamShippable

  • Using Guilds to Combat Information Silos

    Using Guilds to Combat Information Silos

    At xMatters, our group of 100 or so talented engineers is subdivided into teams tackling everything from front-end work to release automation to user interface (UI) and user experience (UX). As is common in an agile-minded organization, our engineering team members are cross-functional, with knowledge and expertise that carries over into areas outside their main focus. The advantages of this cross-functionality are an enhanced, self-organized form of collaboration and a more contextual understanding of project needs and goals—all of which ultimately lead to faster innovation.

    When I joined the company seven years ago, we had three engineering teams. We were already utilizing agile methodologies to eliminate as many inefficiencies as possible and streamline the continuous delivery process. However, as we grew to six, seven and upwards of eight teams, we realized that agile principles weren’t enough to scale the benefits. There was still a tipping point at which critical information started to silo and communication hurdles began to creep up between teams.

    Despite the stellar performance and incredible strides we had achieved with our platform, there still was room for us to grow and become smarter, faster and more productive. We needed a solution for this problem at the team-level, and for this we found that another cultural transformation was necessary.

    Here’s how it started: We observed that many of our engineers had keen interests in areas outside their usual scope, and that we could harness their interests as a valuable resource. There was the possibility of another kind of team—less official and more fluid—that would allow us to capture new ideas and solutions to problems as well as give our engineers the opportunity to engage in their interests.

    Thus, we adopted the concept of “guilds,” originally pioneered by Spotify’s development team. While Spotify’s structure is more complex to account for its nearly 2,000 engineers (it utilizes squads, tribes, chapters and guilds), the premise is the same: Allow people from different teams to come together fluidly and collaborate on a shared purpose. Our teams already utilized Slack for internal communications, and so we also created relevant channels for guilds.

    For instance, the UX guild exists separately from our dedicated UX team to include members from the front-end and other teams. We also have a test guild, comprised mostly of QA team members, who meet in person or over videoconference on a monthly basis. Our architecture guild features people from across nearly every engineering team who are interested in discussing the way we build our platform and structure our code base. Whenever people have an architecture-related problem, they post it to the architecture guild, and its members devise, record and vet a solution.

    In one case, we needed a way to configure all our customer’s environments and also replicate those configurations globally across our data centers around the world. The conversation about this issue arose in the architecture guild channel, and through it we gathered all of the necessary information and expertise to work on a spike and write a complete architecture document.

    If you’re at an agile-minded organization and are thinking of implementing guilds, the most important thing is to create an open, welcoming environment. Don’t try to structure them or make them overly formal; in principle, they should be self-governing entities that are virtually hierarchy-less. One of the coolest things about guilds is that they will be self-vetted by your community of engineers, so as soon as one no longer serves a function or becomes redundant, it naturally will fizzle out. We saw this happen with an auto-testing guild (for automation testing vs. manual testing)—it was essentially absorbed into the testing guild.

    Remember, in addition to bringing together experts in different areas, you’re inviting newbies who are interested in learning. There are so many advantages to this approach: You not only benefit from free user testing—in the case of the UX guild—but you also can harness a diversity of skill sets and creative minds to solve problems. As Einstein once said, “We cannot solve our problems with the same thinking we used when we created them.” NASA has taken this idea to heart, and has long used public crowdsourcing to solve problems for humanity in space and create new, innovative projects.

    The people who ultimately create the solutions often don’t have any traditional experience or expertise in the same area as the problem itself. Sometimes, it takes the collaboration of those both near and far from an issue to overcome it.

    About the Author / Nick Fletcher

    Nick Fletcher, Engineering Manager at xMatters, started designing and developing websites back in 1998, when the World Wide Web was the Next Big Thing. In the time since that first website, he’s mastered all the aspects involved in creating great products: design, development and strong leadership. Connect with him on LinkedIn.