Tag: application lifecycle automation

  • Continuous Delivery Challenge Looms Large in 2022

    Continuous Delivery Challenge Looms Large in 2022

    As 2022 kicks off, it’s becoming apparent that the major DevOps challenge organizations will face is mastering best practices that enable continuous delivery.

    A global survey of more than 19,000 software development professionals conducted by the Continuous Delivery (CD) Foundation found 44% of respondents use either continuous integration or deployment. However, less than one in five (18%) use both practices to automate the entire software delivery life cycle. Continuous integration is currently the most popular DevOps-related activity (32%) followed by continuous deployment at 29%, the survey found.

    The survey also found that only 14% of respondents said, on average, that they can go from code checked-in to successfully running that code in production in one day. Just 10% said they routinely deploy code to production each day. Nearly a third of respondents said they still manually approve code deployments to production.

    Tracy Miranda, executive director for the CD Foundation, said it’s clear there is a need for a better understanding of continuous delivery as a distinct DevOps discipline that stands apart from continuous integration processes. While the two DevOps practices are complementary, she noted that continuous delivery requires a level of engineering expertise that many developers either lack or are simply not interested in gaining.

    In fact, the survey found more than a quarter of respondents (26%) are not involved in DevOps-related activities at all. At the same time, however, the survey revealed that 80% of respondents that work for companies with two or more employees are involved in DevOps to some degree. Nearly 60% of enterprise developers that participated in the survey employ a continuous integration/continuous delivery (CI/CD) platform, as opposed to 48% of developers working in small businesses and 42% of contractors. However, it’s clear from the survey results that much of that activity is focused on continuous integration rather than continuous delivery.

    The survey revealed, for example, that less than a quarter of respondents (23%) are involved in infrastructure provisioning and management at all. That compares to nearly a third (32%) that are involved in application and infrastructure monitoring. Only 20% are involved in creating automated tests, Collectively, the survey results make it clear there is still a long way to go in terms of shifting responsibility for DevOps practices further left toward developers.

    One reason continuous delivery is so challenging is that automating deployments across platforms has never been especially easy. Each platform tends to be customized to the point where it is difficult to automate application deployments. In effect, each platform is its own unique type of “snowflake.”

    However, with more attention focused on the integrity of software supply chains in the wake of a series of high-profile breaches, Miranda noted that automating software delivery will play a major role in achieving automation goals by reducing the need to rely on manual processes that are more easily compromised.

    At the same time, more organizations are starting to embrace Kubernetes clusters—this can simplify automation of software delivery across a set of platforms that all share a common application programming interface (API), she noted.

    The growing complexity of application development projects, coupled with increased reliance on software to drive digital business transformation initiatives, will also accelerate the adoption of continuous delivery best practices, added Miranda.

    One way or another, application deployment in 2022 is shaping up to be a lot more automated than it was in previous years. The only thing left to be determined now is the degree to which that goal can be achieved.

  • The State of DevOps Is Just Fine

    The State of DevOps Is Just Fine

    There is a growing amount of hand-wringing about the state of DevOps; that adoption is not progressing apace, or that the full benefits of the methodology are not being realized by the majority of adherents. That we can and must do more and do it better, etc.

    That is just stupid. Or, my first reaction: “Bunk!”

    Yeah, I called an idea stupid. No, I didn’t call you stupid. Don’t give me a reason to. The world is full of stupid ideas, and this is one of them. Here’s why.

    DevOps has seen a decade of unprecedented adoption – yes, unprecedented. PCs were not adopted by businesses at the rate that DevOps was adopted, once it caught on. Virtualization took the business world by storm and, frankly, wasn’t even close to the adoption rate of DevOps. Agile greased the wheels and got people thinking about better ways; we all knew the weaknesses of how we were doing things, and DevOps gave us an option that addressed those weaknesses. We took it. We ran with it.

    So talking about how it is stalled, when adoption is darned near-ubiquitous? Silly.

    Those concerned are further zeroed in on one aspect of DevOps – not enough culture change. Let’s face it—automation is easier, the ROI is more obvious and even when ROI is vague, the elimination of busywork from the schedule of developers and operations alike is huge. Some organizations were never going to move beyond that point; others eventually will, but aren’t in a rush. Organizational changes do not define DevOps any more than automation does—DevOps is the process of streamlining software creation and delivery—and both automation and culture change contribute.

    The “full benefits” of DevOps are … what, exactly? That is another silly part of the proposition that a slowing of DevOps adoption is negative. Automation improves the creation and delivery of software, silo elimination improves the creation and delivery of software… The full benefits of DevOps are improvement. That has always been the stated goal—to make it better, smoother, more repeatable. Wherever an organization is on implementation, it is almost guaranteed that their creation and delivery is “better, smoother, more repeatable.” So, benefits are accruing.

    And each organization has different needs. DevOps is a methodology. It has never been the perfect solution to every IT problem—though there are still pundits that will try to tell you it is. Automation is always a positive; Agile and DevOps—well, that is less true. You know your organization and your apps, so the “right methodology for the job” is absolutely your call, not some vendor’s or pundit’s. So, “adoption slowing” partially represents orgs/projects/apps that have opted not to pursue some of the more radical changes DevOps implies (yes, radical. Automation is just a logical extension of scripting; redesigning team organization and reporting relationships is absolutely radical by comparison).

    Which is a good place to leave off. Your apps, your org, your environment. You know what is going to do the most good. So keep doing it. Push for it if the org isn’t there yet, be the change that is needed. But be aware of cost/benefit. Sometimes, the changes being asked for just aren’t worth it. So make sure they are before you push too hard, and if they’re not, make sure you’re comfortable with why and can defend that decision.

    And keep rocking it. Those apps are delivering to users, no matter where you are in DevOps adoption. And that says it all about you and the team. Thanks, for all of your users that never think to say it.

  • Cattle, Not Kittens – Revisited

    Cattle, Not Kittens – Revisited

    The early days of DevOps were filled with pronouncements that we needed to treat our servers as cattle, not pets (kittens). For a year or so, the refrain was everywhere. And we did. We detached servers from dedicated hardware, we made spin up and spin down so easy that we just replaced malfunctioning servers (which has caused its own problems), we have even made servers designed to spin up, do one thing well, then spin back down until needed again – something unthinkable even a decade ago.

    And we’ve reaped benefits. Servers suck up less attention from the DevOPS side, and standardization has made it easier to code for them, moving things along and allowing members of another team to pitch in when there is a crunch because of familiarity.

    But IT is filled with people, and something happened in the transition. In hindsight, we should have seen it as a possibility, but things changed so much, so fast that I don’t think anyone was considering this possibility.

    Our DevOps tools/toolchains/processes became our pets (kittens).

    Now the special snowflake that requires specific knowledge and has to be treated with kid gloves is the DevOps step, not the servers it uses. Like pet servers, a fragile step that is working is avoided like the plague, when it should be shored up. Like pet servers, a process that is locked into a specific tool, OS, or platform is left that way, even when other options are a better solution. Like pet servers, the person who “knows all about” that is left to manage the step that should, by all rights, be easily understandable by anyone on the DevOps team.

    It’s time to start treating DevOps like cattle, not kittens. Some steps (like some servers) will be more difficult to make less pet-like and more cattle-like, but if history is any gauge, the payoff is worth the investment.

    We don’t have a cross-toolset language, other than doing things in the various shells and calling the shell scripts from a given toolset (not the best solution, just an example of where we’re at), but that shouldn’t stop us from standardizing and genericizing as much as possible. Less fragility, more reusability and a broader support team is good for everyone.

    You all are knocking it out of the park. We – all of us – are spending more time at work and at home in the digital space than ever before, and, generally speaking, the tools “just work.” That’s all on you. Keep kicking it. But standardizing to keep things running smoothly just makes sense. You know your org; it is possible that the easiest route to cattle is to standardize on a single toolchain (perhaps one or two toolchains with reusability documented) possibly to shove a bunch of steps into scripts and share amongst whatever tools each team chooses (I, and history, strongly discourage this approach, but neither I, nor history, has to live in your environment. There might be a good reason for this, so I include it here).

    All I’m saying is, don’t re-implement every step over and over if you can avoid it, and don’t make steps so arcane that you need a specialist (not internal, and definitely not external). Keep rocking it, and get those cattle moving!

  • Automated Management with Modern Architectures

    Automated Management with Modern Architectures

    We’ve come a long way. Just five years ago, with virtual machines (VMs) and decent monitoring, I would never have considered active automated system repairs for the average organization.

    There were many reasons for that. Monitoring was spread out and required a lot of work to spin together. The volume of logs from monitoring was generally huge once logging was consolidated, and that was the best source of automated recovery information. The time it takes a VM to start up and the space that a fully installed VM took up on disk were both negatives to doing automated response.

    But that was then, this is now. And the world has changed. A lot.

    Most companies using cloud or container based architectures with DevOps are doing monitoring. Tools such as DataDog and ExtraHop between them monitor the application side of performance and the networkwide responsiveness of the application infrastructure. Most container-based architectures are using one or both with alerting to keep track of their system’s and instance’s performance. Add in container management systems, and the infrastructure to support systemwide automation is starting to look pretty darned complete.

    Beyond Monitoring

    The most advanced DevOps and automation shops have gone a step further and are using these tools to do automated management on top of monitoring. While tooling varies—and I do not mean to use the above two as the only solutions—they show well the two sides of monitoring: application and environment (in the case of ExtraHop, networking). Most organizations have a wider selection, including in-source tooling and other monitoring systems. But a few have stepped up to basing the decision to auto-correct on these tools. If ExtraHop is showing extreme response times from an instance, but other instances are responding just fine, that scenario can trigger spinning up a new instance and taking the old one down. The same is true if DataDog shows one instance is taking forever to process requests, while other instances are performing admirably. If the overall system response time is lagging, new instances can be automatically added, either by directly spinning them up or making a call to the container management system to do so.

    In the case of the failing machine, companies that have been doing this for any length of time will happily tell you to keep the instance taken offline so you have a record of what went wrong and can fix it. Heartbleed would have been a different beast had this been followed, and others will give you the same story of, “It’s hard to troubleshoot when the evidence is destroyed.” So while many companies tend to think along the lines of, “If we pulled it down and replaced it, we don’t need it anymore,” what should be done is, from the start, set up to keep the container and take time to look at it to help determine what went wrong before it goes wrong again on a different instance.

    No Muss, No Fuss

    The idea of the “self-healing network” is certainly nothing new. The difference is that machine speed, monitoring tools, management tools and platform have all evolved to a point where all of us can implement it. That doesn’t remove work around problems with responsiveness, but it does offer a stopgap that will keep many applications up and responsive while you figure out why they’re having issues.

    One key is to have an alert system that lets the team responsible know what has happened. If automation replaces an instance, the team needs to know which instance it took down so it can grab the files and figure out what happened. If three of those notices come across in 10 or 15 minutes, you have a definite problem that needs more proactive interaction.

    For clarity: My caveats every time I say “this works” are simple—network issues (inside or outside your network) may be causing perceived performance issues, and these systems can’t do much about that. Hardware failures are not resolved by dropping an instance and spinning up a new one, etc. But until monitoring and management alerts reach alarming stage, the application is likely humming along. And the team can focus on enhancements, not spinning up replacement instances. The larger the server base, the more important this is.

    New products, enhancements to existing products, fixed bugs, improved architectures—concentrating on these issues instead of keeping the system live is always a win.

    So if you’re not using automated management, it certainly is worth a look. Your environment is unique, and it fits better in some than others. So I’ll leave it to you to evaluate in light of your architecture. But if you can free up time, I highly recommend you do.

    — Don Macvittie

  • No-Ops: It’s Been 5 Years

    No-Ops: It’s Been 5 Years

    As I hinted in this post, the state of no-ops is not anywhere near no-ops for most use cases. The closest we have today would be software as a service (SaaS), which handles the majority of operations for us, but still requires some interaction by operations staff.

    The next closest I can think of is the extreme form of hosted. My company uses a hosting provider to handle its website and blog, and the provider does a ton of the heavy lifting. But it would be a fabrication to imply that this mean no operations were performed. The simple fact is that backups, software updates and user management all are in our operational ballpark.

    About That Five Years …

    Why did I mention five years? That’s when the “No-op flame war” erupted. PCWorld has a pretty good summation of it, with links to the blogs in question. The short version is Netflix claimed No-Ops (later it became pretty clear the company just renamed a DevOps-reduced operations group), and Etsy responded with, “That’s because you’re doing it wrong.” Then people jumped on the “no-ops is not a good phrase” bandwagon, and it was … fun to watch.

    But Again, That’s Not the Point

    We too often get caught up in buzzwords. What we want to do is reduce operational overhead significantly per app. This reduces time to delivery, and it frees up time to work on new apps that are useful to the business or spur new business. If we can operationally manage three times the applications because we’ve reduced operations overhead, then we have time to do more. One of the things we haven’t done real well in the past is phase out technology. Perhaps with the free time we could reduce the operational overhead caused by five different solutions to the same problem across our application domain, offering even more time to work on new functionality or product lines.

    Don’t Get Sucked In

    I would argue that both Netflix and Etsy were “doing it right.” You start from where you are, and you streamline both operations and development. You start to ignore boundaries where the ROI is measurable, and you make your environment better/stronger/safer/more agile, whatever the business needs. And then you iterate again. Who cares what you call it?

    No No-Ops

    If No-Ops is coming, it is a loooonnnnggg way off. That’s okay. Because we are improving. You may iterate through improving a zillion times, with different goals each time, implement advanced monitoring and recovery, and wake up one day to realize that you’ve reached “No-Ops.” But as long as you are improving the cycle time/maintainability of the environment you work in, worrying about no-ops is pretty much a waste of time in the current environment.

    But You Knew That

    Here at the end, I’m kind of repeating what most of you already know. But when the hype hits, it doesn’t hurt to have a reminder. Most of you are keeping your business running and cranking out new apps as you’re able, and doing so at a faster pace than you were five years ago while others were arguing about no-ops. So keep doing that. Push Agile/DevOps further on each project. The more time you free from repetitive work, the more you have for doing/learning cool new stuff. So keep cranking, and one day you’ll have apps that are near no-ops.

    — Don Macvittie

  • What’s the cost of build versus buy DevOps?

    What’s the cost of build versus buy DevOps?

    Nearly every business today relies on faster, innovative technology to succeed in the marketplace. How about the coffee you drink, or the movie you’re watching, or the phone on which you’re watching it? Name every business or walk of life. You can argue that technology serves to make it better. If DevOps helps deliver the best services and experiences to you, then should companies making the coffee, movies, and phones also make their own DevOps solutions?

    I completely empathize with the challenges the developers and DevOps teams face in transforming a team or company from traditional development and delivery to an agile lifecycle. I experienced this firsthand at Trend. I led a business unit that acquired a SaaS company for online backup and storage; this young company updated and deployed code several times a day. To integrate their processes into ours was painful. I wish ElasticBox had been an option then. I cringe when I consider the time and costs of lost productivity, wasted development time, and delays in getting to market.

    Faster deployment nirvana

    Every day, I speak to several technology companies. Speed is at the top of their mind. They all experience the pain of not deploying and delivering applications to the cloud fast enough. Most have some number of cloud applications, some customer-facing and many internal on both private and public clouds. To give you an idea of how widespread this pain is, see the 2014 451 Research report. The 451 Research team reported that more than 60% of businesses wanted to deploy more frequently.

    But moving from agile development to agile delivery across an application lifecycle comes at a cost. Companies calculate the cost implicitly and explicitly. I’ve heard feedback from prospects who say explicitly: “I love your product, but I can build the same thing with my developers in xx country.” They usually have many smart development resources and tend to be born-in-the-cloud companies. Others tell me, “This is not our core competency. We don’t want to maintain a cloud application manager. We want yours.”

    Build versus buy DevOps

    At what cost do companies decide to build versus buy a cloud application manager from ElasticBox or one of our competitors?

    • First, you have to answer this question: What is your company’s core competency? Do you really want to divert resources to build your own cloud application manager versus invest in your core offering?
    • Second question: What is the urgency and need? If you have time on your side, taking a year to build your own solution may make sense. If you need a solution tomorrow, then what is the cost, in terms of market impact, competitiveness, customer satisfaction, of delaying a year.

    Once you answer that, you calculate the total cost of owning (TCO) the complete lifecycle of build versus buy. These values must encompass all the phases of building and ownership: acquisition, operation, change management, training, ongoing maintenance and internal support. Time and time again, enterprises only look at the initial build or acquisition cost and fail to fully calculate the ongoing implicit costs.

    Recently, I met with a VP of Engineering who had built a barebones deployment solution a few years ago. Now she bemoans the fact that the costs of maintaining a less-than-perfect solution is too much. Her TCO calculation included the developers, ongoing maintenance, workflow delays, meetings, support tickets, delayed product launches. Her decision to now buy is a no-brainer.

    I’m not arguing that it’s always better to buy than build. But consider the factors—core competency, time-to-market delays, and TCO. We want enterprises to keep building great software that complements their core value proposition. When it comes to agile delivery, consider an experienced partner who handles the same problem for dozens of enterprises. Simplicity, flexibility and speed—those are the barometers of agile delivery success. So developers feel productive, applications deploy faster, and your customers relish the delicious cup of coffee as they watch Netflix on their iPhone.