Tag: performance testing

  • 5 Best Practices for Implementing Cloud-Native DevOps

    5 Best Practices for Implementing Cloud-Native DevOps

    As the world transitions to cloud-native offerings as an industry norm, DevOps is gaining traction for its critical role in supporting more efficient IT infrastructure. DevOps is designed to boost collaboration and communication by streamlining the automation process to expedite the creation and deployment of applications. Implementing cloud-native DevOps requires organizations to make a massive cultural shift. Without this change, businesses are unlikely to be as competitive or fully utilize the innovations the cloud has to offer. 

    There’s always a risk in adopting new technology. Following are five best practices to accelerate your company’s implementation process and address potential challenges head-on.

    1. Think cloud, adopt the cloud.

    Optimize technology with a variety of tools tailored for the cloud. Understanding how technology works in the open source environment that cloud-native DevOps relies on is as essential to successfully managing the components as it is to selecting the right tool for you. Don’t get locked into using one tool. Instead, select the right tool for each task while remaining as cloud-agnostic as possible.  

    2. Implement a dynamic security strategy.

    Not considering security is one of the most common pitfalls organizations encounter when using emerging technology. Security must be built into cloud-native development workflows and thought processes and diligently monitored. If funds are available, appoint a chief security officer responsible for scrutinizing DevOps security in the cloud and creating playbooks for each alert triggered. Cybersecurity is becoming more complex due to the unpredictable nature of adversaries and the sheer volume of technologies involved in each solution. One way to start is with a bug bounty program that can bring hackers to your side of the court.

    3. Commit to ongoing training.

    Perform a self-audit and/or penetration testing to reveal weaknesses in company technology, procedures and people. Invest in training to effectively address any gaps in cloud skills. Providing development opportunities will also improve employee engagement and retention, which is a challenge for many employers. Make sure your employees give ongoing feedback to the training’s content, its maintenance and evolution.

    While it may be tempting only to emphasize new-hire training, the rapidly changing technology landscape requires training efforts be geared toward ongoing learning for the entire team. This investment will pay dividends, with DevOps and the cloud netting major long-term savings. To make training more efficient, it can be conducted remotely. Integrate and target training based on employees’ job functions,  but don’t forget about non-IT employees—they must also have a basic understanding of cloud and cloud-native.

    4. Once, twice, automate!

    Automation is critical to minimize software development life cycle friction and eliminate dependence on manual labor. Provisioning networks, infrastructure, application deployment and setup can be automated and versioned with infrastructure-as-code (IaC) tools (such as Terraform). There are also endless automation opportunities for containers, cloud computing, security, testing, monitoring and more. For instance, containers allow developers to compartmentalize applications to work on components without worrying about their potential impact in other areas–making it easier to construct consistent, tangle-free deployments. However, it may be challenging to manage multiple versions, requiring infrastructure and testing investment.

    5. Performance-test your tests.

    Automated testing will save developers time and reduce human errors. It’ll also allow developers to take advantage of doubling up on testing, making sure every change is stable and benchmarked. Test during the development stage and lay the groundwork for an effective CI process, especially if you roll out patches regularly. Automated testing is easier in a cloud-based system and isn’t dependent on sufficient hardware to make it run properly, allowing cloud hosts to scale up or down easily.

    Final Takeaways

    Cloud-native DevOps is revolutionizing the way applications are being built and managed, and it starts with how we perceive our challenges. Embracing DevOps culture enables organizations to leverage cloud and cloud-native solutions to create reliable services that are easily scalable. While it may look resource-intensive, cloud-native DevOps is becoming a business necessity.

  • Testing Challenges in 2022 – Techstrong TV

    Testing Challenges in 2022 – Techstrong TV

    Stephen and Alan discuss the biggest testing challenges in 2022, along with the tools and methods needed to solve them. The video and a transcript of the conversation are below.

    Recording:              This is Digital Anarchist.

     Alan Shimel:            Hey everyone. Welcome to another Techstrong TV interview here. My guest for this segment is Stephen Feloney of BlazeMeter. I think it’s BlazeMeter by Perforce. Is that correct Steve?

     

    Stephen Feloney:    That’s correct.  

     

    Alan Shimel:            Yep. And for those who aren’t familiar of course Blaze Meter was originally founded by a friend of mine Alon Girmonsky. Great story around one of the pioneers in open source testing and continuous testing. Blaze Meter was acquired I guess it had to be six years ago, maybe more, by at the time called CA or CA Technologies, Computer Associates. Then it always kind of operated kind of semi autonomously. And then I guess it was last year they found a great home with the folks at Perforce who have also been around a while. And Perforce is of course a leader and really expanded their capabilities from code repository to testing and so many other things. So it was a good match, Blaze Meter and Perforce. We’re happy to see it. Steven so I gave the Blaze Meter story but I can’t give the Stephen Feloney story. I need you to do it.

     

    Stephen Feloney:    Oh well we’ll need hours to give my story.

     

    Alan Shimel:            Give us the short version.

     

    Stephen Feloney:    So I’ve been in testing more or less for 20 some odd years. I came to CA must have been seven or eight years ago. And I was part of the team responsible for acquiring Blaze Meter into CA. And I always had plans for Blaze Meter. And as you mentioned it sort of ran autonomous inside of CA. And then CA was acquired by Broadcom and then once we were in Broadcom I was able to expand Blaze Meter to go beyond performance and we added a multitude of features, virtual services, API testing, API monitoring, grew all that. And now as you said we found a very good home with Perforce and that acquisition happened right at the end of October of last year.

     

    But I’ve been doing product management work for, I don’t know, about 15 – 16 years almost exclusively in the testing space, a little bit in the mobile space and a little bit in the monitoring space. And what’s interesting is moving around going from testing to mobile development and mobile testing and then into monitoring I now have all of that with Perfecto and Blaze Meter coming together at Perforce. So I have the monitoring. I have the mobile. I have – it’s all coming together. So everything I’ve learned over the years I can make it all come together and work in one spot.

     

    Alan Shimel:            So give us your best Dr. Evil and tell us isn’t it great when something comes together like that?

     

    Stephen Feloney:    Yeah. It’s fantastic and I hope to make one billion dollars.

     

    Alan Shimel:            Absolutely. Good stuff Steve. So look. Let’s first of all we’ve had the pleasure of talking to several of the Blaze Meter folks since the acquisition by Perforce. And it really does seem to be a good match. But what I wanted to kind of focus in on today is maybe the state of continuous testing if you will and then a little bit of what specifically at Blaze Meter what’s new. What’s coming down the pike that we can be on the lookout for here.

     

    Stephen Feloney:    Sure. Sure. So Blaze Meter historically has been a performance testing solution built upon open source as you mentioned and we were, we play two different roles. We work with centers of excellence who are doing large, massive load tests. And then we work in a shift left world with agile teams. And we were noticing struggles when it came to testing with the agile teams. So when you’re looking at continuous testing, continuous testing is well, a continuum. So it starts off with the development and the agile groups, works along sometimes into a full end to end testing and then continues into production.

     

    And so if we talk about that continuum we look down at the agile teams and we noticed that they were struggling. They weren’t testing as much as they should. And we interviewed dozens of different companies to try to understand what were their challenges with this. And there were a multitude of challenges. One is they didn’t like using multiple different tools to try to get all the testing done, whether it’s a functional test, a performance test, an API test, unit test, all different types of testing, all of these different tools. Some have to be downloaded onto our devices. Some are in the Cloud. They all have different UIs, reporting. That’s a challenge. And then another challenge was we don’t have time to get data. I mean think about it. When you’re testing you need data.

     

    Alan Shimel:            Yeah.

     

    Stephen Feloney:    But it wasn’t just data to run the test because why can’t you do that. Then I need data for the back end system and then I need data if I don’t have my full environments and I’m using mock services or virtual services I now need data for that. How do I get all that data in and make sure it’s all in sync? Because when I’m developing code I have a very limited time to develop that code and get it out the door and if I have to spend time trying to figure out get all this data and sync all this data together, that’s a challenge.

     

    And then well with that challenge as I mentioned I don’t have my full environment. So now I need virtual services. Where do I get those? Who is developing those? And then I have to figure out what data did they put in? So the mock services, the virtual services as well as the data, two big problems that are hindering people from getting their testing done. And then we have other issues around how do I generation my test. I just want to develop. I don’t want to spend my time creating all these tests. So those are challenges there and then on the flip side if I’m trying to do continuous testing and I’m trying to continue the testing into production what tests do I set up.

     

    How do I monitor? How do I test in production when I don’t know what I tested, when there’s not a full collaboration across the entire value stream? How do I know what to test in production? Who is creating those tests? Do you have your ops team and are they monitoring or testing the same things that I wanted to test or that I did test in preproduction? So those are quite a few of the challenges that people run into when they’re trying to do continuous testing and continuous testing at scale.

     

    Alan Shimel:            Absolutely and emphasis on that scale because really that’s where you start seeing the cracks. That’s where you start seeing – when you’re not at scale sometimes you could muscle it. Right? Or fake it even. But when you start hitting scale man, it’s like whatever your weakest points are they’re going to just come right to the forefront.

     

    Stephen Feloney:    That’s correct.

     

    Alan Shimel:            You’re doing to say oh my goodness. This doesn’t scale. Right?

     

    Stephen Feloney:    No. That’s right because you could have like one group, one team, one service that’s able to do something that’s special, unique and they could get that out the door in their own special way. But when you’re trying to scale that either that service or application has grown or you’re trying to scale it in an enterprise as you just said all the cracks show. The whole thing falls apart.

     

    Alan Shimel:            Agreed. All right. Let’s talk about what’s new at Blaze Meter then. What are we doing to help?

     

    Stephen Feloney:    Well surprisingly a lot of the challenges I just mentioned we’re able to solve just coincidental.

     

    Alan Shimel:            I’m shocked.

     

    Stephen Feloney:    I’m shocked as well. I mean I didn’t know this was coming. Yeah. So one of the things we actually just released on February 3rd was our Blaze Meter test data piece of Blaze Meter. And this combined the ability to whether it’s for performance testing, functional testing, API testing we can generate the data that you need. And that data that gets generated is not just to generate the data to drive a test. We’ll also generate the data if you’re using mock services or virtual services, generate the data for that as well and generate data for system undertests.

     

    And the idea is all that stays in sync. And we’ll generate the data at the time you want to run the test. So now you don’t have to worry about managing, maintaining the data sets. You don’t have to worry about that. We will generate the data on the fly and to run the tests and to ensure that all that data is in sync. That takes away a lot of the false positives that you’ve seen in the past where things are failing. Oh but it turns out it was the data in the virtual service or the system under test wasn’t set up the right way. And so all of that goes away and you don’t have to put any thought into it.

     

    Alan Shimel:            Crazy. It’s crazy that no one has thought of this before or kind of implemented this before when it seems rather elementary at some level. Like of course if you want to do this. But I had a conversation with the last guest here on Tech Strong TV and we spoke about the issue is maturation issue. Right? Until your devops processes, until your CICD processes are at such a level of maturity. Right, you don’t even run into this problem because you have problems that pop up before it that kind of take your focus away.

     

    Stephen Feloney:    Correct. Yeah. So in the past what’s happened is when you were handing it off to a testing team the testing team was used to the problem and they had time to get the data. They had time to set up the data. They had a gold copy of the data sitting around that they would use. They were familiar with it. But as you’re saying the CICD process, the shift left process happened the data problem, the virtualization problem is completely exacerbated. ‘Cause they don’t have the time. They don’t have the ability. They don’t have the skill set. They don’t have the desire to do all that. They want to get their code that they developed and they want to get that out the door as quickly as possible. And testing is sometimes seen as a hindrance. It’s a necessary evil – going back to Dr. Evil. A necessary evil if you will.

     

    And so anything that we can do to accelerate that and make it much easier for them that is the challenge. So yeah. You could say why wouldn’t someone have done this whole data thing. There are synthetic data generators. Right? There’s open source synthetic data generators. That’s fine. But that just generates the data in one spot. You still have to figure out how to take that, pull that out, put that here, put that there, put that there. And we’re taking care of all of that for you.

     

    Alan Shimel:            Got it. Very cool. Hey. For people wanting to get more information on that Stephen where can they go?

     

    Stephen Feloney:    They can go to blazemeter.com.

     

    Alan Shimel:            Just straight up right on the front page?

     

    Stephen Feloney:    Yeah. Just right on the front page. It’s our newest part of our release so you’ll see it there. You’ll see blogs. You’ll see help. We have multiple discussions on it. Yep.

     

    Alan Shimel:            Very cool. Hey. We’re coming up on time here. Anything else coming down the pike or you wanted to let our audience know about?

     

    Stephen Feloney:    Yeah. So there’s actually quite a few things that are coming down the pike. But one of the more interesting things that we are working on is one of the challenges that I had mentioned is generating tests. So they don’t want to spend the time to even generate the tests. And there’s two things that come with that. One is just generating your API tests. So we’re going to have coming soon an API test generator to help with that and that is combined with our well synthetic data gen. So those two are combined together to help generate that. The next thing that comes which is a natural evolution is you don’t just want positive tests. You need negative tests as well.

     

    And so that data gen is going to auto generate negative tests for you whether it’s negative data driving a test, putting negative data into your system test or having negative things happen with those mock services or those virtual services. So you want to delay a virtual service. You want to knock a virtual service so it doesn’t respond or just provide different types of data sets to see how well and how robust your system is. And once you do that the next step is all right. So I have negative testing. Then you combine the positive and negative together and now you have chaos testing. And so those are coming down as well.

     

    Alan Shimel:            Cool. Love it. Any – I don’t want to hold your feet to the fire, make you say anything you’re not supposed to say but what’s timeframes on those if you can talk about them?

     

    Stephen Feloney:    Well I’ll say this. By the end of the year you’ll see this. I don’t want to give solid timeframes but this year those will be coming out the door.

     

    Alan Shimel:            Ok. I think that’s fair Stephen. Hey. I want to thank you for coming on and updating, getting us up to speed here.

     

    Stephen Feloney:    Yeah. Thank you very much.

     

    Alan Shimel:            Continued success. We’re hoping maybe at some point we’ll see Blaze Meter at a real live conference.

     

    Stephen Feloney:    Oh I’m hoping to get to real live conference. As much as I enjoy maybe not traveling as much. But the interpersonal interaction.

     

    Alan Shimel:            Yeah, no. We all miss it.

     

    Stephen Feloney:    Yeah. I mean it’s a needed. It’s a must.

     

    Alan Shimel:            Absolutely man. Hey. Steve Feloney. BlazeMeter powered by Perforce here on Techstrong TV. We’re going to take a break and we’ll be right back with another guest.

     

    Stephen Feloney:    Thank you very much.

     

    Alan Shimel:            Thanks Steve.

     

     

    [End of Audio]

     

  • EP 24: Cloud Performance Testing

    EP 24: Cloud Performance Testing

    The purpose of cloud performance testing is to identify and eliminate performance bottlenecks that might occur within an application. Performance testing allows DevOps teams to check the speed, scalability and stability of the apps to ensure that everything is working as planned under the designated workload. In this episode of DevOps Unbound, Kristen Webb (Tricentis), Donald Lutz (Taos) and Andreas Grabner (Dynatrace) join hosts Alan Shimel and Mitch Ashley to discuss the key benefits of performance testing in the cloud and what to consider when building a cloud performance testing strategy. Join the experts to find out what you can do to ensure that your apps are running smoothly and remain available during critical times. The video is below followed by a transcript of the conversation.

    Alan Shimel: Hey, everyone. It’s Alan Shimel, CEO of Techstrong Group, and you’re watching another Devops Unbound. For those of you who may be new to our audience, Devops Unbound is a biweekly video series sponsored by our very good friends at Tricentis. And we explore a wide range of topics around devops and devops-related technologies, practices, processes and people. As I said, we do this biweekly. It’s every other week, for those who’re a little challenged, and then around once every month we also have a live – what we call roundtable format of Devops Unbound, where we’ll have usually a little bit of larger panel. But we have a really large panel in that we opened it up to a live audience, and you and everyone joining are invited to participate in the roundtable by interacting with the panel and our host, asking questions, giving us your thoughts, and it really becomes sort of a group-hall/town-hall kind of meeting. When it goes right, it’s great, with wide levels of participation. 

    Actually, this is a really good point today, good time to bring this up. Today’s panel version of Devops Unbound is on a holistic approach to performance testing. But the upcoming or the next live roundtable, and I’m gonna have more information on that later in the show, is later this month, on February 24th, which is a Thursday, and it’s gonna feature a performance testing in the cloud. I’ll give you the actual title in just a bit. But once of our panel members here, Kristen, is going to be there, as well as some other great guests. You can sign up for that on devopsy.kinsta.cloud. If go to Upcoming Webinars and check it out, it’s February 24th. And as I said, I’ll bring more information on that in a little bit.

    But for now, let’s talk about holistic approach to performance testing. And in doing so, I think the right place to start is with our audience. I’ve already kinda preannounced Kristen, so I’m gonna ask her to go first, if it’s okay. Hey, Kristen, welcome to Devops Unbound. Please introduce yourself to the audience.

    Kristen Webb: Sure. Thanks, Alan. Kristen Webb here. I’m the director of product marketing at Tricentis. Currently running the product line around neo-loader performance and load-testing solution. I have about 20-something years in technology. I’ve lost count. I’ve worked for a long time on the product-development side, so I remember back when we were testing large software releases at Macromedia and Adobe and trying to get our products out on time as part of a broader release and making sure there was no watermelons, what we used to call the performance bottlenecks at the end of our three-week mean time between failure testing. So performance testing is near and dear to my heart, as is all application development, background, and excited to be here.

    Alan Shimel: Absolutely. Macromedia, that’s a name I haven’t heard in so long. It used to be such a big part of my workplace. And I just totally blanked on it until you mentioned it. But it brought back good memories, so that’s a good thing. Yep, a smile to my face. Next up I wanna introduce you to Andreas. We call him Andy. It’s Grabner, yes, Andreas?

    Andy Grabner: It is, but feel free to pronounce it the way you like, as long as you call me Andy. I always make the joke if you call me Andreas, then I typically did something wrong or rude, because my mom calls me Andreas if I did something not appropriate.

    Alan Shimel: I get it. Our youngest son is Bradley, and everyone calls him Brad, and you say Bradley, and he kinda – he knows he’s in trouble. But, anyway, Andy, welcome. Introduce yourself to the audience, if you don’t mind.

    Andy Grabner: Yeah, thank you. So my first start in performance engineering was, I think, pretty much 20 or 21 years ago maybe now. I was working at Segway Software. I was a performance tester on a performance-testing tool called Performer, still around. But I remember those days, and it was a large load-testing project, and I – with my first kind of customer gig that I did. And I also remember that my performance engagement was scheduled for one week, took exactly ten minutes, because we broke the system with two virtual users, and the virtual user was my left finger and my right finger hitting the Refresh button on two different keyboards. And I really quickly learned that performance testing, while we always think about the magic 10,000 – millions of virtual users, sometimes it’s as simple as just hitting Refresh quite a lot on your website. 

    Over the years I’ve morphed from a performance engineer. Now I’m working at Dynatrace for the last 14 years, actually, in the observability space, and I’m a self-proclaimed devops activist. I really like the idea behind devops, and I try to use channels like yours and my own channels to really advocate for what devops allows organizations to do in terms of tooling transformation, people transformation, process transformation. And I’m very glad to be here.

    Alan Shimel: Excellent. Thank you, and welcome, Andy. Thanks for being here. Our third panel member today is someone I’ve had the pleasure of knowing – I don’t know, Donald. It’s gotta be 20 years, 19 years.

    Donald Lutz: It’s 20 years. Yeah, it’s too long.

    Alan Shimel: Twenty years. On our original team at Still Secure, what became Still Secure, with Mitchell and I – but he is a developer-testing person extraordinaire. I’ll let him introduce himself. I don’t want to embarrass him, our friend, Donald Lutz. Hey, Donald. Welcome.

    Donald Lutz: Welcome. My name’s Donald Lutz. I’ve been doing software architecture for probably about 30 years. I’ve been focused on how to do development right, how to use design patterns correctly. The past ten years I’ve really dropped in the cloud. Right now I’m the senior cloud and software architect at Taos. We are a public cloud company. IBM just acquired us. Sullivan rated us number one for public cloud. We also are on the Gartner Magic Quadrant. So I’m sort of spending a lotta time helping us productize our consulting offering. So the whole idea of testing and how to do performance testing right and chaos engineering, those are really near and dear to my heart. And how do you use the right design patterns in your code to avoid all these performance issues?

    Alan Shimel: Well, an ounce of prevention is worth a pound of cure, as they say, right? And we’ll get to it. Our last member, though, is my cohost and friend, Mitchell Ashley. I’m gonna let Mitch introduce himself, though. Mitch, take it.

    Mitch Ashley: Oh, good to be here with everybody. Thanks for making me follow some really pretty tough people to follow. Oh, my gosh. And, by the way, Macromedia, Dreamweaver, Authorware, remember all that good stuff? And I’ve known Donald – tack on another ten years. So it’s a small world. No, I’m CTO with Techstrong Group working with Alan, and I also am principal with our analyst firm, Techstrong Research. So, great to be here, and I think we could fill up our whole session with war stories about performance testing, Andy. Maybe we’ll save that for another day, right? But good to have everybody here, and thanks to the audience for joining us.

    Alan Shimel: Thank you, Mitchell. Just real quickly, I think back to performance testing at Still Secure, Mitch, if you remember. It broke our budget, ’cause we didn’t have all the virtual – you weren’t able to do it from one machine then. I tried to go out to a place that had enough to do a load of –

    Mitch Ashley: You kept Dell busy.

    Alan Shimel: – Jesus. Man, was that crazy. Anyway, though, let’s jump in. In my mind, one of the most overused words I hear in tech is the word holistic. So let’s jump on that. When we talk about a holistic approach to performance testing, is it really holistic, or are we talking about, “Hey, what’s a great approach to performance testing?” How should we be doing performance testing?

    Kristen Webb: I can take that to start. So building on what Andy was saying earlier about his two fingers being the load test to start, I think what we mean by holistic or just in – the sound approach to performance testing is starting with the code, starting with the APIs, starting at one user and making sure before you check your code in or your API in, your micro-services in that you’re – does this code work for one user? 

    And then as you go through your development process and you start to build the components of your application and you integrate those components, you start to hit those components with maybe 100 or so users. And you’re getting feedback along the way so that by the time you have an application integrated within your whole system that mimics preproduction, by then you’re able to hit the load at hundreds of thousands, potentially. But you already had feedback along the way, feedback loops to say, “What’s performing? What’s not? What do I have to fix along the way so that by the time you get to the really high load, you have fixed a lot of the issues?” And what you’re fixing at the end is, “What do I need to tweak within my system to make sure this application or API is gonna perform?” So that’s one part of holistic, or we need to think of a better word, maybe. 

    The word I tend to use is standardization, is – you need to cover all your bases along the pipeline, but you also need to make sure you’re covering all your protocols and all your use cases. So having a standardized approach for everything from API to monolith like we just talked about, but also what’re all the protocols you’re covering from HTTP to JavaScript to SAP and Citrix? So having an approach that works for all the protocols and across all those use cases, whether it’s from the protocol perspective or even the browser, ’cause those are two different types of performance tests but and also one that’s –the third thing I think about in terms of standardization is the skill set for the people who are going to be doing the performance testing. 

    So you wanna be able to not only have your center of excellence be able to performance-test, but as you move to devops, you want to be able to have a more distributed model for who can participate in the performance-testing process and create more of a self-service approach so that a lot of times – if they can access a browser, they can run a performance test. They can share results. And that encompasses having the approaches both for performance testers who want to build within CI pipelines with an as-code approach or a CLI or for the groups that want to use more of a no-code approach with a GUI tool. So those are the three things that I would say mean – what we mean when we think about holistic.

    Alan Shimel: Love it. Thoughts on that, team, panel? Agree, disagree? You wanna add?

    Andy Grabner: I wanna add something. Again, I’m not a native speaker, so maybe the word holistic means also something different to me. But I wanna add one thing and then add a second thing. But the 1st thing, what you said, Kristen, is I think in the beginning you said developers need to understand actually how their code is doing with 1 user and 5 and 10 and 20 users. I think what we’re talking about here is people understand where are the breaking point and where are the scalability issues, because I think if you are building new code, however small or big it is, if you put it under different sets of load – I mean, you don’t have to go to the millions of users, but if you look at it at 10, 100 and 1,000, you immediately know where are your connectivity issues between your components and issues scaling the load, where things may break apart and where don’t they scale, because obviously we can’t throw a lot of hardware on a problem and we somehow get performance but at a certain cost. So I think it’s very important, as you said, from the beginning on make developers understand where are – where they may have some bad architectural decisions that will later on cost them a lot of money in order to scale this. I think that’s one thing.

    But for me, holistic also means not only looking at it in development and starting early, but for me holistic means I first need to understand what are my real performance goals. If I’m developing a new feature, a new app, I should sit down with whoever comes up with the idea and trying to get their thought on what do you expect from my software? How should it run under certain load? It’s like our nonfunctional requirements in production. And then really take this and then break it down into, what does this mean for me as a developer? To give an example, if we’re building a new mobile app, and let’s say there’s a feature to log in, how long do we expect the login to take? Let’s say a second. Okay, if it is a second under 10,000 users, what does this mean for me as the developer that implements 2 or 3 APIs in the backend? 

    So I think the term of a performance budget is something that I also hear and have heard over the years. So if you break down performance as we agree on with the business, if we have performance goals, and then we can break it down into more technical goals to individual teams. Then we, I think, take a holistic approach, because then everybody can really work on their component and really always make sure that their component is working and operating within the context of their performance budget that they have so that there’s a higher chance that in the end, when all the components are put together in production they’re actually meeting our business and our performance requirements in production. So I think these are kind of the two things, right, that I wanted to add.

    Donald Lutz: Yeah, I’d like to add one thing. The thing I think about a lot is ’cause I’ve been building a lotta micro-services over the past ten years, and thinking about synchronous versus asynchronous communication and how that plays out, because if you have too many APIs, you have to use things like circuit breakers. There’re a lot of things that can affect that. So if you start looking at things like Kafka, where do I split my workload so it’s asynchronous? How does that work? What patterns do we put in there? That makes a big difference, because most developers are always thinking synchronous, and I find that to be a real difficult issue, because you know what? We could put this in the background. When you look at Amazon, just ’cause you place an order doesn’t mean that actually went in and got billed against your card immediately. That whole synchronicity concept has to be embedded in the concept of performance.

    Andy Grabner: Yeah, true. Yeah, it’s also a nice decoupling of components, right? I mean, that’s the event-driven model, as you call it, right? You put a queue in the middle, but it’s basically an event-driven architecture and very important piece. And because the event-driven architecture also allows you to better test and also performance-test components in isolation and then also come up with beta capacity-planning models, right, because you know how many events fall out of the first component, when you put a certain load on it, it means, how do we need to size the queues or wherever it ends up, and then what do we need on the other end to work on the queues? I mean, that’s a very good point.

    Mitch Ashley: Maybe that’s why holistic is being overused, Alan. The topic has not only evolved. I think it’s grown, because I remember one of my first experiences working with Donald was on ISS and TP Gateway server, a third-party product, and he was new to me, and he knew how to tune it. We called it tuning then, right, but the load, the capacity, the scalability, and we’ve added onto that customer experience or user experience goals, metrics. How long does it take to log in, that kind of thing, with the experience to get back a response on a mobile device versus on a Web browser, whatever that might be? What’s our API performance goals to partners and third-party services, things like that? So I think that’s made the world a little bit more complex, maybe a lot more complex to deal with. But it also has brought us closer to what the end result is we’re trying to accomplish with whatever system or software is. Deliver this service or make this function happen for whatever it might be. Kinda help us also think across the system horizontally and vertically of what we’re trying to deliver.

    Alan Shimel: Yep. I think there’s another element, though, that I’m interested in your all thoughts on. When I think back to over my career how performance testing has changed, what’ve been the big factors? Well, I think as Andy referenced, early on, man, it was hardware-dependent, right, because, I mean, if you wanted to scale performance testing, you had to be able to test it on the hardware that was running. And that got expensive quickly, and not only expensive for the actual cost of the equipment but from a people perspective. Right? And then the virtualization of performance testing, wow, what a godsend. We can just have Andy here working with, as he said, his left and his right index finger, and that was enough to break his – the app he was testing or the software he was testing at the time.

    And then I think with devops and dev testing and so forth, the idea of automating our performance testing, right, being able to shift it left into – further left into our development process, right, making – ’cause it used to be you did all your coding, and that took one month of your three-month cycle, and now two months of that three-month cycle were your testing cycles, right? And, man, by shifting left, I really cut that out a bunch. All of these profound changes, right, in performance testing – as we sit here today, can we say that there really is a best practices, holistic or not, approach to performance testing? And where’s the people part of it, right? There’s always people, process and technology. What’s the people part of that? Kristen, would you mind kicking it off, or –

    Kristen Webb: So, I think there is some approaches that are best practices-ish, and one of the first steps is really understanding where your priorities are in your applications and where the risky areas are, because you can’t test everything. So you need to really prioritize what to test first and where the issues are most likely gonna come up. And, two, after you do that, it’s about establishing what your SLOs are, your service-level objections – objectives, sorry – and understanding, what do you need to hit within what level of virtual users hitting that, within what response times, and what you want that end user experience to be like. And building those SLOs within the pipeline so that when you’re running the test in a continuous manner, you’re able to say, “This didn’t hit the SLO when we ran it against XYZ load,” and you send that back, and you have actions based on that result to fail the build, for example, send a ticket to Jira so that it’s integrated within your already-existing development process is a good way to go about it. 

    And then also taking in production feedback is a good part of this, too, to make sure that you’re understanding what’s actually going on within production, and is – are my tests mimicking the real-world experience that my users are having under what load conditions and making sure you’re updating your Kubernetes environments to match that level of code. Do you need a new cluster based on that information that you’re getting from either APM tools like Dynatrace or other monitoring tools like Prometheus or Microsoft Monitoring. And bring that observability data back into the test definitions and updating them continuously to make sure you’re keeping up as things change, because in reality things do change. I mean, we have seasonality, or we have new marketing campaigns that may be a business that went digital. Now they need to keep up with their spikes in load. So you wanna be able to stay ahead of that instead of reacting.

    Alan Shimel: Agreed. Panel, thoughts?

    Donald Lutz: The telemetry idea has become – really the past two years I’ve been doing a lot of open telemetry so we can know what’s happening at every point. We put it in L. We put it in Datadog. We put it all over the place, but also the whole Kubernetes cluster thing, how do you monitor it correctly? What’s the right thing? There’re a lotta tools that I’ve used, but there’s – the whole Kubernetes things opens up a larger can of worms because of the way the control loop works in Kubernetes. So you have to kinda figure out how do you wanna deploy them? What do the environments look like? What’s the appropriate load-testing there? That’s why I’ve got into a lot of chaos engineering, breaking things in production, seeing what happens. I just turned this service off. It doesn’t talk to Slack anymore. Where’s all those messages going? Did we notice this not working? That whole idea I think is really valuable. Surprisingly, it makes developers very neurotic. They don’t like it a lot, because you’re basically saying – it’s sorta like doing improv, because we’re just gonna do it and turn stuff off, and they’re like, “Well, I think it works.” So it’s sort of a very strange response.

    Alan Shimel: It is. Andy, you’re at Dynatrace, right? This is kinda right up your alley there of what you guys do.

    Andy Grabner: Exactly, yeah. And so to add what you already said, both of you already said, on a very mature scale, I think of people at IC, they just go always straight into production and maybe using canaries or future flags and just deploy their new codes and then expose it to, let’s say, a small percentage of users. And I’m saying about the very mature, this is what we would love obviously more people to do, but the reality is just a small number of organizations can really do it. But it’s the ideal scenario. You deploy. Then you use your telemetry to figure out, did that code change now? Does it actually behave better or worse than what’s maybe currently out there?

    What I wanna add I think also what Kristen said. I think what we need to do is we need to get closer to the developers from the beginning. I know that’s different terms, and I’m just throwing one more term out there, performance-driven development, because I think we’ve taught engineers – and I’m an engineer by trade as well, right? We’ve taught them over the last 10, 20 years to do test-driven development, where you write your unit tests and functional tests to cover functionality. I think we should also educate them to do performance-driven development, which means you are – as you write your new micro-service that exposes five APIs, then write your API test that you can run once or can run continuously or with multiple virtual users to actually generate some load. And I think, too, they’ve become much more developer-friendly. Kristen, again, pointing to you, I know you have a great product where you actually allow developers to define their stuff as code, right? And code could be something like JavaScript, whatever it is. But I think as the tools have matured and we are making it easier and more natural for developers to also write these types of tests, I think we will also get more at option. I think that is very important, because we always talk about shifting left. It’s a great term, but shifting left in the end, if you think about it, if you take everything and shift everything left, we put all the burden on the developers. And I think this is nothing that is sustainable. Therefore, we need to make it as easy as possible also for developers to do all the things that we ask them to do. 

    So that means we need to give them tools that are natural to them in their habitat, which means in their ID, right? They need to be able to check in code, and as part of their commit process, they then will automatically not only get feedback on code coverage and functional coverage but also, “Hey, your code change now has slowed down your performance by 20 percent. Are you aware of this, or are you consuming 50 percent more memory? And, by the way, then bringing Donald, what you said also, learning from production – then you can correlate that with your production data and said, “Hey, your service runs in production with a certain amount of instances, and if you are making this code change, it means you have 50 percent more memory consumption. Are you aware of the additional costs?” So there’s a lot of things I think that we need to do, but it starts with really enabling developers just to do more in their natural kind of environment that they’re in, yeah.

    Kristen Webb: I’m gonna build on what you’re saying, Andy, because I wanna make sure I’m clear about what I mean about shifting left, and I do think it is bringing it to the developer but as a service. So I think of it as building out a self-service rather than putting the onus on the developer to build the performance testing within the pipeline. So if it’s automated in the pipeline that they’re operating within, then it’s really up to the performance engineer to build out – and the automation engineer to build out that testing platform for them so that really they’re just kind of functioning, like you said, within their IVEs and within their – whatever they’re using to check in. 

    And, really, they’re just getting the feedback once they do so that they know how to act in the moment about how their code’s performing for that one user to start. And then later, as they get further on, they get more information about an increase in load to a few hundred, maybe, once they have, like you said, a micro-service that might expose more APIs. And once you’re distributing your code like that, how is it going to impact other code, and how is other impact code and endpoints going to impact the new code that you introduce, so really kind of delivering that, and that’s what I was talking about earlier in terms of creating a self-service approach so that more people can participate in a process, but the performance engineers are still the masterminds behind building that.

    Mitch Ashley: I have a question for the panel. I’m curious. How do you think about this aspect of it? It may be for me a better word than holistic is systemic, and I’m thinking about how all parts fit together to contribute to the performance you’re delivering, as well as other things. It’s not just testing our app and our app code. It’s testing the whole stack, vertically and variations of that, different environments that it might run in. And a lot of it’s not our code. Donald was talking about Kubernetes, just as one great example. Is that part of what we mean by holistic as well?

    Donald Lutz: I think so. To me, one of the things I think about the holistic problem is that you get all these CICD pipelines built, but you don’t have a gitops process that keeps the platform aligned. You’re working on that, so fundamentally you don’t have the cluster. You’re not doing infrastructure as code where the cluster is effectively as you need. Therefore, when developers deploy code through their – runs all the tests, but fundamentally part of the cluster didn’t get – so I’ve been thinking a lot lately in my current position, how do we get across our whole organization, gitops deployed in all elements of our groups so we’re using that effectively with everything else we do, ’cause that is the one piece that is happening. Argo CD’s a great example. It works really well, but just getting that to happen and realizing you’re building a platform is also a thing that people need to think about.

    Alan Shimel: Agreed, agreed. You know what? I just wanted to throw another log on the fire. So, cloud. Game-changer? Makes no difference? Easier? Harder? Donald, you’re kinda the voice of the developer here, as well as IT. What do you think? And cloud, you work with a public cloud provider. What do you – 

    Donald Lutz: Yeah, I mean, public cloud is what we focused on fundamentally. That’s what we’re doing for all our customers, and cloud is simpler but more complex at the same time, ’cause they’re – fundamentally companies are used to having their various people within their data center. And when you move to the cloud, it’s upsetting. They have to figure out how to move all the workloads, but it’s also – one of the things that cloud gives that I’ve been thinking a lot about is if you can work with all three public clouds, you start increasing your reliability in everything, but how do you contain the costs so I can run this in GCP, this in Azure, this in AWS? Companies wanna go there, but they’re sort of always going, “How do I do that? Why do we do that? What do all these terms mean, and how do you sorta get the various executives to understand, ’cause we’re trying to sell them on sorta the advisory services. This is why you should do this. This is how you get your devops working. This is all these things. This is what you should do with open-shift.” It’s a really complicated soup, because they feel like it’s sort of like what happens to a lot of industry. They’ve outsourced it to all these people, and what’re all these people doing? Are they really making a Pinto, or are they making a fancy car? What are they doing?

    Kristen Webb: I mean, I’m curious, Donald, how you guys do performance testing for the public. But I will say that cloud is a game-changer in a lotta ways, because it’s not eliminating risk, right? It’s just moving it from one place to another. It’s shifting it from on-prem. to the cloud and also introducing new risk that – new considerations that didn’t have to be made before. And with auto-scaling systems, sometimes people assume that moving to cloud means that implicitly they don’t have to worry about performance anymore because of auto-scaling. 

    And the concern there is that when you’re in the cloud, you’re really bumping up against a lot more services. And you can also run into noisy neighbors and a lot of different scenarios that will introduce bottlenecks from distributed systems. I mean, you could have your SaaS application located in France, your hardware located in China and your middleware in a third location. And you need to make sure that a hybrid system like that is gonna perform, and it can be assumed that it would, just because it’s the cloud. And you really need to make sure that your – whether you’re migrating apps or re-platforming ’em that you have a baseline of performance tests that you know you’re measuring against to make sure that you don’t regress when you move to the cloud and that you’re able to test those again once  you do move there.

    Donald Lutz: And I have another thought I’d like to add to that, ’cause I’ve sorta done it. You run all your services in – pick it AWS, Azure or GCP. And then there’s the other thing where you say, “Well, I wanna run all my services in Kubernetes in all three public clouds. I don’t really wanna consume the services directly from the provider. There’s some new, cool APIs that’re out there, where I just wanna consume it in Kubernetes. So you’ve changed the idea that your hybrid is really Kubernetes, wherever it runs. So then you’re not really consuming it in the public cloud; you’re consuming the services through the cluster. So that also changes the whole discussion.

    Andy Grabner: Maybe what I wanna quickly add – and my first response to your question, Alan, was it doesn’t matter, because it – or it shouldn’t matter, the same with cloud native. When we talk about cloud native, cloud native doesn’t mean your cloud-native apps have to run in the cloud. Cloud native really means how you architect your apps, and they can essentially run anywhere, right? So it’s not where. Cloud native doesn’t define where it runs but how the system runs. And this is why I think, also to Kristen’s point, you don’t get, let’s say, performance for free, or you cannot sign up for performance as a service or for resiliency as a service just by checking a box on your favorite cloud provider, and then all of a sudden you have magic happening. But you still need to factor all of these decisions into your architectural decisions that you make, and you have to do the proper testing in the end. I also think that the cloud was great, because all of a sudden we got a lot of services that we could build upon and really focus on. It’s a business value that we could generate, because we didn’t have to invest time in, I don’t know, maintaining a database and certain stuff like this, because somebody took care of it. 

    So I think overall, the cloud was a great thing. From a testing perspective, to add one more thing – and I think also, Kristen, you said it again, if you have to make smart decisions where your software runs, because you always need to have in mind where your end users are, where your consuming services are, because that also means you need to test from those locations, because you may now have different latency. You may have different costs out of a certain data center, out of a certain through provider. I think these are some of the additional considerations, but in general for performance testing and scalability testing, in theory it shouldn’t matter whether my application that I’ve architecture well runs in one cloud, in three clouds or on premise. That’s kind of my answer. It shouldn’t.

    Mitch Ashley: Alan, too, I think one of the, I think, real game-changers about the cloud is just access to resources. And in the organization, when you do it internally, the two greatest bottlenecks are acquisition of hardware and firewall rules, to be straight about it. And you can kinda control your own environment, whether it be resources or security, whatever it might be. But that flexibility gives you more – not just more options. You can rethink how you can automate how you set up an environment, “Let’s configure it this way,” your permutations, or, “We’re thinking about changing it in some specific way,” and you can automate how you test that. So it seems that it gives you a lot more flexibility. Sometimes flexibility means complexity, too, but that to me was one of the biggest game-changers of moving to the cloud.

    Kristen Webb: Yeah, I mean, with hardware being the most expensive part of performance testing and – like you said, it’s difficult and time-consuming to go through IT to procure resources, to get them provisioned, to make sure you can access them at the right time and there’s no conflicts. So what you’re talking about, really, is more the app development, app testing within a cloud CI system, which is a whole other level, in addition to application deployment in the cloud. And that’s really exploding, too, and it does minimize – with neo-load SaaS, you can get up and start it and run a performance test within five minutes now, because it’s a fully managed service using AWS and Google, and we do that for you. So it is a game-changer in that way, too.

    But also, this is where I do disagree with Andy a little bit. Wherever your app is, it has to perform. It has to run well, but the cloud does introduce more risk, because – well, first of all, it’s shifting the risk from on prem. to cloud, but it’s also – you’re going to hit a lot more services now, particularly where you have a new architecture, where it’s a modernized architecture, and it could be a – what are they calling it, a microlift now? So more services are gonna be affecting you in that architecture. It could be really unrelated, and when you have that kind of a distributed system, you might not know where the bottleneck is coming from.

    Alan Shimel: I mean, I think the cloud does introduce more complexity, if you will, but there’s – I mean, look. The advantages of cloud I think far outweigh the disadvantages of cloud, right? I think that there’s chips on both sides of that scale. But you know what? I mentioned in the beginning that in addition to this prerecorded Devops Unbound episode February 24th – we do have the live roundtable for our audience. So I’d like to invite everyone that’s watching this, if you wanna learn more about what to consider in building a cloud performance-testing strategy, we do have this live roundtable. We have folks from Dynatrace and Tricentis and more joining us on February 24th. The roundtable, funny enough, is called “Strategies for Performance Testing in the Cloud,” and if you go to devopsy.kinsta.cloud under the webinar section, you can sign up for this webinar right there. We’re calling it a webinar. It’s a live roundtable. You will have a chance to have your questions answered, to speak to the panel members directly via chat, and help you with your strategy. So don’t miss that, February 24th, just a few weeks from now.

    We’re running low on time. I’d like to throw one other kinda question out at the three of you for our audience’s benefit, right? Right, okay, you convinced me. I need a holistic approach to performance testing. Other than listening to the three or the five of us on here today, can you point me to some good places, if I’m in the audience, where I can go find out more about this, where I can get smart quick? Donald, we let Kristen lead off everything, so if it’s okay, I’m gonna ask you to go first on this one.

    Donald Lutz: All right. Well, I mean, there’s a couple books I like that aren’t necessarily about performance testing, but one of them, it’s – I always forget the name. It’s over there, Building Micro-services by Sam Newman. It’s a really good book about – it’s a second edition came out. There’s another one that came out by the guys at – oh, God, I can’t think of where they were, but to me that’s a great reference, because it covers everything from culture to how you build your micro-services, how to performance-test it. I like a lotta written things. There’re various videos that’re out there. There’s a couple that Martin Fowler – that talk about this in particular. So those’re kinda the things off the top of my head.

    Alan Shimel: So I think Sam Newman, like Martin, were with ThoughtWorks, if I’m not mistaken.

    Donald Lutz: Yeah, he’s independent now. He went off on his own, and now he consults.

    Alan Shimel: Yeah, yeah, they did leave. I remember. Yep. Andy, how ’bout you?

    Andy Grabner: Yeah. So I would say, and this is a little commercial on what we do on the side of Dynatrace, we have a holistic approach to SLOs, to service-level objectives, with our CNCF Project Kaptn, spelled K-A-P-T-N. It’s a CNCF project, and what we do there, we are providing events-driven orchestration to actually embed performance engineering as part of your delivery process but also as part of your operational processes. And there’s a great integration also with Neutis, with neo-load, so that means we actually provide a framework on top of Kubernetes to enable developers to simply check in their code, and then Kaptn is orchestrating the deployment, the testing like triggering and neo-load test and then automatically evaluating your SLOs and then pushing it forward all the way into production but always evaluating SLOs, so always evaluating your performance criteria, your resiliency criteria, your business criteria. So if there’s one thing, check out Kaptn, our CNCF project, because I think it will definitely contribute towards having a more holistic approach to performance engineering.

    Alan Shimel: Thanks, Andy. Kristen, I saved you for last.

    Kristen Webb: Thanks. So a couple things. One is we have a performance advisory council that is run through Tricentis, but really it’s not about product as much as it’s about approaches, and it organizes all the performance experts from around the world, including – Andy, I think you participated in it a lot. And Henrik, who is gonna be joining me on the webinar later in the month, used to run those performance advisory councils, and he’s at Dynatrace now. So he’s a great resource as well.

    But we have a site for the performance advisory council, where you can see all the recordings of experts around the world telling their stories about what they found worked for them and what their learnings were and how they integrated with various development processes. In addition to that, on Tricentis.com/neoload there is a ton of information about the problems that neo-load is addressing and how we’re addressing ’em, the integrations we have across traditional tech stacks and the devops tech stack and how we work with Dynatrace to help shift right and bring that production feedback, along with all the monitoring tools for that observability we have. And we also have a trial that’s available to learn more.

    Alan Shimel: I love it. Hey, Kristen, thanks very much. Again, just to reemphasize, Kristen mentioned it, February 24th, “Strategies for Performance Testing in the Cloud” with some really great, smart people, including Kristen. Check it out on devopsy.kinsta.cloud. You can register, and you do need to register to attend that live roundtable, though. Hey, Mitchell, I’m gonna let you take it home.

    Mitch Ashley: Well, thanks, Alan. I was just reflecting and really absorbing what our panelists had to say today, and the thing I take away is I’m impressed with the sophistication of how we think about – and the sophistication of the people who work in testing now. Long gone are the days of testers are people who didn’t like to code, right, who were developers that didn’t like being developers. We’ve got some extremely brilliant thought leadership happening in testing, whether it be in the products that’re being created, people that’re trying to solve both complex problems and sometimes fun ones, too. So it was kind of a renaissance for testing time for me. It’s a great time to be a tester. It’s a great time to be a QA person and a software engineer working with test. So it’s a fantastic topic, and I hope people will check out the resources that everybody suggested.

    Alan Shimel: You’re right. It is. Is it an old Irish proverb, “May you live in interesting times,” or something like that? It’s great times to be a tester. Anyway, Donald, Andy, Kristen, thank you so much for being on our panel today. Mitchell, as always, thank you. To our audience, thank you. We hope you found this interesting, and if you did, again, I’ll beat the drum one more time: February 24th, “Strategies for Performance Testing in the Cloud.” Sign up for it. Don’t miss it. I think it’s gonna be a great one. But until then, this is Alan Shimel for Devops Unbound. Many thanks to our sponsor, Tricentis. Thanks to all of you for watching in, and we’ll see you soon on another Devops Unbound.

  • EP 13: Observability and Performance Testing

    EP 13: Observability and Performance Testing

    In this episode of DevOps Unbound, Alan Shimel is joined by Christine Yen of Honeycomb, Paul Bruce of Tricentis and Mitch Ashley from ASG/MediaOps to discuss how to effectively test the performance of your applications and how bringing observability into testing environments helps DevOps teams identify and resolve issues early in the SDLC. The video is below, followed by a transcript of the conversation.

     

    Alan Shimel: Hey, everyone. I’m Alan Shimel, CEO of MediaOps, Editor-in-chief of devopsy.kinsta.cloud, Security Boulevard, Container Journal, and you’re watching DevOps Unbound. DevOps Unbound is a biweekly video series where we have some of the leading lights in our community talk about topics of interest around DevOps. We’re lucky enough to be sponsored, DevOps Unbound, by our friends at Tricentis, so many thanks to Tricentis for their sponsorships. But this is a media ops event.

    Let me introduce you to today’s panel and then we’re going to jump into our topic. Let me first introduce the guy with all the robots in his background there: Paul Bruce, with a 404 shirt. Paul, welcome. Why don’t you introduce yourself to our audience?

    Paul Bruce: Sure. Thanks, Alan. So, my name is Paul Bruce, as you said. I’m on the nerdy side. I’m a performance and reliability geek. That’s just a place of complexity that I love to – it’s just what – it’s just my bag; it’s just what I like to do. On the other side I’m a community organizer. I work with DevOpsDays Boston and the Boston DevOps Meetup. I am hosting an event along with Liz Fong-Jones this year called o11yfest around observability, a vendor-neutral and also – community-focused but also the open telemetry project-focused two-day event. It’s half days so that we don’t burn people out. And I work with the Tricentis team since the NeoLoad acquisition – again, performance reliability. I was with Neotys and NeoLoad for years now. I really loved that team. And I love my new one, the broader one at Tricentis. So, that’s me.

    Shimel: Very cool. Thanks, Paul. And then, joining Paul today is – we’re very lucky to have her – someone I’ve had the pleasure of interviewing more than several times now over this past year of Covid but hopefully soon to see in person, my friend Christine Yen. Christine is CEO of Honeycomb. Christine, welcome.

    Christine Yen: Hello. It’s wonderful to be here. Alan, you shared my title, but my background is as a product engineer. Honeycomb, for anyone who isn’t familiar, is a tool who – a tool for observability. And I love working on it and I love talking about this topic because even though I tend more towards the software engineering side I have done my fair share of breaking production, and so this topic is near and dear to my heart for software engineers to do that less and find out what their code really did more quickly.

    Shimel: Very cool. Thanks, Christine. It’s great to have you here. And then last but not least is my cohost of DevOps Unbound. We’ve worked together for probably longer than either of us want to admit, but it’s hard to believe we’re both only 25. But CTO here at MediaOps, CEO of the Accelerated Strategies Group, Mitch Ashley. Hey, Mitch. Welcome.

    Mitch Ashley: Thank you, Alan. But the best 25 – this year again. Twenty-five again, right?

    Shimel: Yeah, 25 again again.

    Ashley: Good to be here.

    Shimel: Anyway – yep. Thanks, Mitch. So, today’s show, really, we’re going to explore the intersection – or maybe it’s a border between performance, performance testing, and observability. What – how do they play with each other nicely? What is the interaction? What is the relationship? And for those in our audience, you may be looking at it and saying, “Well, observability is kind of almost post-deployment. Hopefully we’re doing some performance testing pre-deployment and then post-deployment.” But how – I don’t know if I see a nexus right away but there’s – in my mind anyway there’s an obvious nexus. There’s an obvious connection.

    So, let’s talk about it at a high level. How is observability and performance testing connected? And how can they – how can we get a one plus one equals five or four out of performance testing and observability? Christine, if it’s okay, I’m going to ask you to kick off with that and kind of lay out the framework, the ground rules, the – and we’ll all jump from there.

    Yen: Well, laying out the framework and ground rules is a little bit of a big ask for early in the morning, but I’ll do what I can.

    Shimel: Okay. I’m sure you’ll do great.

    Yen: I’m wearing the wrong shirt for this. I often – I think I’ve come on one of these interviews with my “test in production” shirt, but it’s a phrase that too many folks – it can be interpreted in many ways. What does testing in production mean? There is a version of it that means, well, I’m not going to run tests beforehand; I’m just going to see what breaks in production and try to fix it after it’s impacted users. Obviously, that’s not what any of us mean. And there’s a version of it that means, hey, look, when you write preproduction tests, when you write any sort of tests, what you’re trying to do is you’re trying to compare actuals versus expected. You’re trying to form a hypothesis, observe reality, and then think about that difference. Isn’t that really just a different phrasing of what we’re trying to do when we’re looking at production, where we’re using our logging or monitoring or observability tools to see what actually happened when our code is in production?

    And so, I love – I think it’s a huge intersection, a huge overlap between things like performance testing and observability because we are all using the same skill set, we’re all using the same brain sequence, but there’s – people seem to think that observability is – can be more exciting because it’s incidents and downtime and alarms are going off. I don’t think it is. I think it’s all the same. It’s just at different points in the development life cycle. It’s on different timelines. It’s with a different level of urgency. But it’s the same thing we’re all just trying to do to come up with hypotheses, validate them, and learn.

    Ashley: I really like, Christine, the way you kind of intersected them together because the environment that we’re doing all of this has changed substantially. It wasn’t that long ago where it was kind of a static flow of writing codes, we’d test it, we’d CI/CD, we’d test it, we’d deploy it into production. And DevOps helped speed that up with automation and tools, and of course tools of automation for testing. But now the software stack is fluid. The infrastructure is fluid. The code is fluid because we may have introduced three new changes to containers, for example, in a cloud-native application since we’ve really had an opportunity to go and debug or determine what the source of that was. We also have dynamic applications that start up and go away, and those things may be long gone by the time we actually look at them. So, I think this key to observability is also giving you insight into an environment that may not exist at the time that happened, and so you need that information to be able to understand “This is really something I need to fix, address” – a bug, a feature, whatever it might be.

    Bruce: Yeah, and I think there’s a lot of intersection between putting pressure on systems, whether that’s through actual users and risking revenues and all sorts of things or doing prerelease type testing or testing in production. There’s a – performance is about how does this system perform to expectations? And there are a number of different people with a number of different expectations. There’s the technical expectation, maybe articulated – hopefully articulated in something as legitimate as an SLO or an – and then measuring them with SLIs and stuff. But there’s also user expectation. There’s the CEO expectation. There’s B2B. If you’re in some kind of regulated industry and that SLA is actually part of a legal requirement that becomes really important. Like, we saw that unemployment sites – I don’t mean to pick on that kind of work, but that was a mess. Same thing with various different – trying to get the vaccines scheduled and stuff. And it’s like why are we still suffering from these systems that are out there and they’re good enough maybe for the day to day but have never been exercised, have never been – the concept of that being – that scaling has never really come about for that system.

    Okay, well, what about systems that do by default have scalability as a first class citizen? Going back to some of the stuff that Christine said – and actually, Christine, I love – your cofounder Charity has a phrase and I’m going to butcher it, but “It’s never not a good idea to have your glasses on when you go driving.” That idea that if you can’t see what’s going on that’s a big problem.

    So, a lot of people traditionally would have used something like “Let’s just throw all our APM tools at production.” And that’s great. But going back to that original thing where I was saying pressure on systems really shows us how well we’re doing engineering, the impact of that pressure matters too. So, as a performance engineer, performance and reliability engineer, I’m constantly not just trying to – as my French team would say – make load on a system, put load, put pressure on a system, but I also care deeply about being able to measure the impact of that.

    I’ll pause there because we probably some other questions. But there’s more to go into about that. It’s not an either-or. And it’s not about just production or preproduction. It’s about what’s not a good idea to have visibility. Isn’t it a good idea to have visibility on a thing, whether it’s putting pressure before release and having visibility or doing that in production? We’ve got a lot of customers who do testing – who do load testing in production on production systems. This is not an impossible thing, folks, you know?

    Shimel: So, let me try to put this in some kind of context that we can jump on. So, here’s what I say Christine saying, which is – and maybe I’m taking it up a couple notches, getting out of the SLO woods – at the end of the day what do we all want? We all want our apps, our infrastructure to run better. We want to have good predictability, visibility into how things are performing. And whether that is an aspect of performance testing, or you want to call it performance monitoring, or do you want to call it observability, at the end of the day the aim is the same, which is let’s understand how our stuff is running and make sure it’s running the way we think it should be running. So, at a very high level it’s almost equating performance or observability – I mean, it’s all with the same goal, which is let’s make sure our stuff’s running good, as the best we can.

    In my mind – and Christine, I’ll defer to you – certainly over the last year, year and a half, maybe two even, observability has taken on – as it’s become more hyped and a real word, a real thing out there, has taken on almost an even bigger mission than that, where it just doesn’t equate with – the goal may be “Hey, let’s make sure things are running the best we can make them run and how we expect them to run,” but there – observability has a whole uber mission of things that people want to do with it or use it for. Paul, you mentioned APM. Kind of observability subsumed APM, AI ops, all of these things. But yet, wait, there’s more. Observability does more than that. It’s become this whole big thing out there. And maybe it – maybe that’s right, maybe that’s wrong. I’m not here to judge.

    But that, I think, is really the crux of this. Yeah, we all have the same goals. Is observability – part of what observability does helping the performance engineer? Absolutely. Is there more to observability? I think so. Christine, you’re the observability expert. I’m going to ask you.

    Yen: You know when you say a word enough times and it starts to lose its meaning and you’re like “This is starting to sound funny”?

    Shimel: Yeah.

    Yen: We – I think you’re – there’s – we are definitely approaching that with observability a little bit. And whenever I get to that point I like to pause and remind folks “Let’s look at the – let’s take a deep breath and look at the English word we are using to describe this. It’s not a bucket full of buzzwords. It’s not a bucket full of types of data. It is an ability to see. And it’s the ability to see into our production systems. What do you want to do with that? What can you do with that if you have an improved ability to see?”

    Okay, well, now we have the laundry list of all the things that we can do once we have the ability to see into these systems that, as Mitchell mentioned, are so different than they were five or ten years ago.

    Shimel: Oh, yeah.

    Yen: And that to me is – that zooming out behavior is what re-centers me when it feels like we’re trying to do all the things. And you’re like “Well, it kind of makes sense. I want to have my glasses on when I’m driving.”

    Shimel: Yeah. Paul?

    Bruce: Christine, you’re definitely right about a buzzword merry-go-round. I have experienced that with “DevOps.” I have experienced that with – oh, man, I can’t believe I’m saying it again but I’ve got to because people will know – “shift left.” These terms that just get all the things. And we go at these things, these different terms, we latch onto them, we try to make it our own. Oh, man, vendors love to do that. We’ll take a word and we’ll make it ours and we’ll try to align it to our product strategy. And at the end of the day it’s like there’s 150,000 different versions of this thing, which as a performance guy I’m kind of like “Well, it’s not bad to have a big sample set,” but the sample set of what’s going on in the delivery chain from good idea to working software that’s making you money is not just in production.

    Let’s take an example of Nike, for instance. This is a known thing that they ship the watch, the watch that you open up on Christmas Day, and you go to connect to the internet and because the servers were swamped you don’t have a good Christmas experience. That’s not the only – I’m just picking on… But that kind of situation is a situation where there’s a lot of stuff you can do to prevent obvious faults from getting to the point where that’s the bad experience. And you also need visibility on the day where your production is having problems. And it’s not just the day; it’s every day. Every day you have a certain un-zero amount of events and issues in your production systems. How do you address those things? Well, there are plenty of situations where if you’re only thinking about observability as it only applies to production – which, by the way, production is where – what makes you money. If code is not sitting in production doing something useful for people you are not making money off of it necessarily. And production isn’t just out for consumers. It could be all the different constituents in your larger organization. So, even private systems are production. And so, if something is not out there then it’s not making money.

    So, is that the only place where we should pay attention, where we should have good visibility on logs, traces, and metrics, on understanding how the business is impacted, long and complicated queues and delays in these systems? No. I mean, yes, in our edge and final production systems, yes, of course we will want that because we don’t want to be in a bad situation not having the right visibility into problems when they’re happening in production. But how do you think problems come about in production? Well, there’s the emergent ones that we can’t possibly know about. Ooh, there’s just so much time in the day. But then there’s a whole bunch of other stuff. Every line of code is not just an asset; it’s a liability. So, as you’re constantly shipping these things out there’s plenty of things you can do to prevent obvious – and I mean dumb and stupid and obvious things from getting out there, causing toil, waste, risk, and loss of brand, revenue, and all that stuff.

    So, I think the observability for me is not just in production. It’s really useful to have classic monitoring in preproduction environments except for that it’s super expensive. Oops. And then, observability, pieces of observability, which Christine would probably be better to go into, all those things that you can do and what you get out of that, and now we can have use cases, that also applies to preproduction situations. That’s why I’m so excited about that open telemetry project and the community over there, this notion of being able to emit information from your systems, to either build it in directly from your systems or put it on sort of after the fact, sort of replacing some of the obvious early agent type stuff that monitoring used to be the only thing that could do. That open telemetry stuff now makes it a standard that we can all benefit from no matter which environment. How about all environments? That would be super nice. And to get tracing and traceability from – all the way from the Web app that somebody is touching all the way down to the database and the 30 different APIs that it touches.

    That’s really useful, not only to firefight in production but to see “Am I risking dependencies? Am I go wildly off my architecture diagrams?” You know what I mean? Those things slide. Your conceived architecture diagram is never what’s actually running in production. So, to actually be able to have visibility on that is really important.

    Ashley: Well, you know, Paul, the lines between production and, let’s say, tests are blurred, to use a phrase – are really kind of blurred, and oftentimes when we adopt whatever new technologies or approaches we’ll attempt to do what we used to do just using a new technology to do it. So, we’ll test the way we used to. And just what sort of clicked with me with cloud early on was how Netflix was doing their rolling upgrades and being able to flip back and forth. The same is really true for testing and performance testing because your availability to resources generally is not an issue, or not the issue it would be normally in an environment where you’re not in the cloud or at least partially in the cloud. So, there’s a lot of things you can do not just in your current testing environment but to set a pretty elaborate – with resources to do different load tests, performance test scenarios, in addition to what you experience in production.

    And I think one of the points that you made is salient, is if you’re paying attention to this you now understand your systems, your applications, your environment enough to identify “Well, we may be able to handle the number of unemployment claims we’re getting today but I know when we reach the next peak these are the three things it’s going to impact. I know those are the things we have to go adjust or fix or whatever it might be.” Because you’ve already instrumented it well enough and you have the information through observability to be able to do that. So, I think that’s a different mindset of how we think about performance testing.

    Shimel: Yeah. So, I tell you, I think one of the big breakthroughs of DevOps has been to create our “testing environments” to be more lifelike, to be more real lifelike. I mean, because prior to DevOps, the world I grew up in, the classic thing is the developer developed, gave it to the ops guy, the ops guy puts it up and says, “Wait a second, this stuff don’t run.” And he says, “Hey, developer, this doesn’t run.” And the developer says, “I don’t know, dude. It ran on my machine.” And so, there was that disconnect between what the developer wrote and ran it on or they tested it on versus the real life production environment. And one of the great things about cloud and virtualization and all of this stuff is that we can theoretically really duplicate our production environments and test environments and we can increase loads and we can do all those things theoretically so that there’s no or less surprises when we go live in production. And that – look, that’s – thank you, DevOps. That’s part of what this whole DevOps thing, I think, was.

    But I don’t know, is – Christine, is that really – does that dog hunt or is that just DevOps urban myth? You know?

    Yen: I think you’re on – right on the ball. I mean, when Charity and I started Honeycomb she came right – that story you told, I was that dev; she was that ops. I did the whole “It works on my machine; I don’t know what you’re talking about.” And when we started Honeycomb we thought honestly we were going to be talking to more of the Charities of the world. We were like “Oh, this is a tool for ops people. They’re the ones who understand the pain.” And as Honeycomb grew and as observability grew it became more and more obvious: “No, this is for the Christines of the world too.” This is for the people who need to understand what happens beyond that testing environment. This is – the boundaries are blurring or – I like to think of it as dev and production are coming closer together because there are more and more things we just can’t test in a test environment. As good as we make the test environment, we just can’t.

    Shimel: I totally agree.

    Yen: And there are so many things that can be learned – the same – by thinking of production as part of the development environment. With feature flags we can start to take code that is really not quite ready for production but test it out in a safe way and learn from it. And that’s so cool. It’s – there’s so much for developers to be able to learn when everyone kind of gets over this mindset of “Well, there’s a wall between development and production.” There isn’t. There shouldn’t be between people or the software. And that’s where all the exciting parts live.

    Shimel: I don’t disagree. I don’t disagree.

    Bruce: So, Alan, one thing that you said – you painted sort of the stage so that we could have part of this conversation. I’m not a big fan of setting up huge staging environments. In classic world it was like, okay, well, here’s production and it uses 36 Oracle back-ends and – if we were going to run a proper performance test of course we needed 36 on our side. And before the cloud that was incredibly expensive and you’d fax your IT person and they’d get back six months later with the right hardware. And I think there’s a myth that, well, yeah, you need to be realistic at some point, especially when you’re putting pressure on a system, to answer the final question, which is – what? – is it ready enough for me to be – what? – confident enough that this thing is going to transition like we talk about in standards, the transition process, that that’s actually going to go smoothly? And not in a waterfall way, just in a – to get away from this notion of “It worked on my machine” and now the ops person is putting out fires and doesn’t know how to operate the thing.

    But I’m not a big fan on spending a ton of money on this staging system which ultimately even if – even if at a very root level it’s exactly the same as the production system there’s always that jerk in the corner going “Yeah, but it’s not production.” And it’s like “Okay, you have a point but you don’t know what goes on.” And the point is I think almost like a – I’m going to do my idiot thing and pull in a mathematical and then probably get it wrong, a mathematical concept of the limit. You remember limits? And the idea is we need to be able to express are we talking about the very ends of things? No, it’s a continuum.

    So, there’s a lot of companies that I work with that actually do have requirements, that they go through a particular amount of testing and particular things before they can transition this to production. They don’t have the luxury of treating production like a dev system. There is a ton of people in the world, and it’s not their dysfunction – that’s not a dysfunction, just because the unicorns can fart rainbows and sneeze glitter and launch whatever they want. I see that happening in Boston all the time in some of the startups, and they do actually put themselves at risk. And even when you don’t do that, when you have an extreme amount of maturity and you’re working with relatively complicated technologies like Kafka things can go wrong pretty quickly. And the question is do you have the people and the process and the technology and the knowledge and the experience and the expertise to handle those when those things do come up in real time?

    How do you get there? How do you get to people who know how to use your monitoring and observability tools really effectively? How do you know what those systems, how close to your perceived architecture versus your actual in production, how do you know how much delta there is there? How often do you exercise the process of disaster recovery is one of those other classic questions you might ask yourself.

    And it gets back to who would be involved when there is a firefight or a last-minute thing like what we’ve done with some of the companies that I worked with very closely through the NeoLoad side of things, is when the education system, when colleges shut down and they finally said, “We are shutting our doors to the people that are paying us money,” that was a scary and real and significant flag for the rest of our US education system to go “Holy crap. We’re going – we have to provide virtual not as a stopgap for the past few months but this is going to be a serious reality for us for the next year.”

    And so, a lot of the vendors that help the education system have the right platforms in place. They go “Holy crap. We really need to test for 10X the size that we’ve ever tested before.” So, they’re testing in production on nights and weekends in various different places and doing it at a smaller pace. But who do they have on the call? Not just the Ghostbusters, but the devs, the ops. There’s people from infrastructure, the DBA teams. They have 20-plus people white-knuckled on the call, like [makes quivering sound] – white-knuckled on the call, and that’s a lot of money. And by the way, you’re asking them to do from 10:00 PM to 2:00 AM to 3:00 AM work. And so, they’re not going to be available for all those fancy meetings, architecture meetings that they should be stakeholders at.

    So, when you get to the point where you’re doing those massive things sometimes it’s necessary to go massive. But the vast majority of the exercises, you go to the gym – not so much me, but you go to the gym to exercise. You go and you get on your bike and that’s an exercise. You don’t expect to run a race without exercising first, without knowing that path a little bit before you just run a 5K race. So, why would you expect to do that with your systems and your teams?

    And that’s where some of the testing, the lower order performance testing comes into play. It’s systematizing the stuff, making a process that can be executed and re-executed no matter which environment it’s pointing to. And the telemetry that you’re getting out of it aligns in each of those environments. If all of a sudden we have really great telemetry in a pre-prod environment but we don’t have it in prod that would be a big problem. Why was it put in here and it’s not represented in production? What if we need that? Or vice-versa: We’re only doing things in production, and so now there’s only – there’s stuff that’s only in production that has no representation of how it would show up in lower environments.

    So, keeping those things in synchronous but also keeping the process and the exercised skills in place is why this isn’t just a big environment at the end kind of a situation.

    Shimel: Again, I think “Thank you, DevOps” where we have been able to say, okay, not only do we need those or can we use those testing dev environments, but as Christine said, with things like feature flags and some of the other technologies, processes that we use, it is possible to continue that – the feedback loops and iterations in real time while using the – while in production. And that again is one of the things that allows us to continually update, continually iterate, continually – and feedback loops was kind of an original concept as part of this DevOps thing. We’re going to have those feedback loops and we’re going to iterate and reiterate.

    But where we’ve gone with observability with that and with performance testing and these things with that have really just opened the floodgates in how we do these things now. I mean, just think about how – when I first started devopsy.kinsta.cloud eight years ago, I mean, there were the unicorns who were updating multiple times a day. But for many people in the world, for many organizations in the world, look, moving from once a year to twice a year, twice a year to quarterly, quarterly to monthly was huge. It was huge. It’s not so huge anymore. It’s common for people to be updating their code daily or more than once a day now.

    I saw – I did an interview this week, a recent survey of developers who they claim that they have sped up their deployments by over 100 percent in the last year and a half. That was – something like 70 percent of developers said that. Think about it. I mean, that’s – a billion here, a billion there, you’re talking real money. Seventy percent of developers say they’re going 100 percent faster. Wow. Wow. What a golden great time to be living. And it’s because of things like observability, DevOps, our better performance testing. Anyway.

    Guys, we’re coming up on our time limit here. I wanted to kind of – let’s wrap it up. Let’s – what advice – for our folks listening in, watching in here, what can we give them? What can we tell them about this nexus of observability and performance that will make their life better? Paul, I’m going to – if you don’t mind, I’m going to put you on the hot seat and ask you to go first.

    Bruce: Sure. Well, there’s a couple things I’ve been working on for a while and then there’s a couple things that I just want to give a shout out to. I’ll start with – Christine doesn’t get to do the pitch thing but I do. Honeycomb is awesome. You see that thing in play and it’s awesome because the team behind it is awesome. You know what I mean? It’s kind of the Conway’s law situation where – the version of it I hear most is the systems are a result of the teams that build them. So, definitely check that out.

    Same thing with some of the other tools around there. But don’t get too bought up into the whole observability – don’t just Google “observability” and look at the first one because most people are paying through the nose for SEO placement there. Really actually look at what’s available, and then also dig into the team, the blog, the spirit behind that thing.

    The second thing I’d suggest is we just released – I was one of the members of a working group for a standard on DevOps principles and practices that applies to highly regulated industries. It’s IEEE 2675-2021, which we’re hoping to get adopted in ISO so it’s global as well. And what it does is really align what is – how are each of the important processes that can be applied continuously through many different life cycles as they’re going along? You know, that DevOps eternity symbol means we’re all going to be stuck in hell forever, that thing is happening, all the things are happening all the time but there are precise things that need to go on in highly regulated industries, and even not. So, we’ve been working on that for four years. And you can reach out to me on LinkedIn, on Twitter – although LinkedIn is probably a better way to go – if you want to know more about that.

    But essentially it’s a body of work that a lot of people have been putting time and effort into to really say, “Hey, look, this is not about what DevOps is. This is about how to do this in these complicated situations.” And you know me; as a performance geek I tried to – I was involved in QM/QA, verification, validation, risk management process, those kind of things. And I tried to make sure that evidence-based decisions, that – which is a hook to basically say visibility, telemetry, the proper SLOs in place, those are definitely in the standard along with other things.

    So, definitely check those two things out: Honeycomb and the IEEE 2675.

    Shimel: Excellent, Paul. Christine.

    Yen: Thank you for that plug, Paul. The one piece of advice I’d like folks to internalize, we’ve talked quite a bit about – or, I’ve talked a bit about developers in production and developers in observability. An asterisk there is that that is not – the practice – the muscles and the practices should transfer well but there are a lot of things in the DevOps world in production that are, well, in some cases outright hostile to developers and in many cases just kind of scary and unfamiliar. And so, if this is something that’s interesting to you, if you’re like “Ah, yes, I would also like to bring development and production closer together,” take a step back and look for things like that. Do your production tools primarily talk about AWS instances and CPU and memory use? Those may be things that might scare your developers off. How can you make the vocabulary that your production tools talk about more familiar to developers? How can you help them bring the concepts and nouns that they’re used to in testing – customer ID or endpoint or logic, something that feels more familiar to the developer world, how can you have that exist in your production tooling as well so that developers can show up and be like “Oh – oh, this isn’t so different”?

    I think that there’s a lot of things that are encoded in certain practices because we assume that a certain persona is the one using them. And those walls are blurring – or those walls are coming down; those edges are blurring. There’s a little bit of work left to do to facilitate it.

    Shimel: Absolutely. Hey, Mitchell, you want to bring it home?

    Ashley: Yeah, I’m going to wrap it up this way because there’s some great practical advice – and by the way, both companies have fantastic products, so please check them out. I think we have this mental model, this habit of thinking of things in one state. Matter has four states – well, five states if you count Higgs boson – Bose higgson. It’s not just solid. It is also fluid. I mean, think of our systems. Don’t think of it as software tools, all the layers of it. Combined together they operate more like a fluid, in a state that’s changing, constantly moving. Things are happening. And that causes you to rethink developers and production, doing production – doing performance testing in a production environment. And the flow of software through that DevOps tool chain is really part of that – the fluidity of that state.

    So, I think we like to think things – of things like “Let’s make everything a solid so it doesn’t change, so we can look at it, observe it, do something with it.” It’s not really that way. That’s not the world we live in today. But if you think about it as something that’s under constant change like a fluid, then I think we have a much better chance of figuring out better ways, whether it’s through technology, new paradigms, new ways of working, of how to make our software the best it can absolutely be.

    Shimel: And at the end of the day that’s what we all strive for. Right?

    All right. What a great way to end this, then. This is a wrap. I think it’s episode 13 of DevOps Unbound. But it’s a wrap on whatever number this was because it’s fluid anyway. It’s a wrap on this episode of DevOps Unbound. Many thanks to Tricentis for sponsoring us on DevOps Unbound. We will be back in two weeks with another great episode. Stay tuned. We also have a big roundtable coming up this month; check that out.

    Paul, hey man, congratulations on joining the Tricentis team as part of the acquisition there.

    Bruce: Thank you.

    Shimel: Christine, they’ve all said great things about Honeycomb, but well deserved. Say hello to Charity for us as well.

    Yen: I will. Thank you.

    Shimel: Keep doing what you’re doing. I hope to see you all soon or a couple months from now in person. Maybe we will do a live DevOps Unbound at some time somewhere. But until then, this is Alan Shimel for MediaOps. You’ve just watched DevOps Unbound.

    [End of Audio]

  • Using Incident Response for Continuous Testing

    Using Incident Response for Continuous Testing

    Incident response tools offer the ability for organizations to not only implement continuous testing but to also shorten the feedback loop from continuous testing back into planning and development

    At this point, you should be able to say the word “continuous” to any technical team, drop the mic and leave. Yes, the idea that we want to do more delivery, more testing and more interactions isn’t always novel. The reason we use phrases such as continuous testing and continuous improvement is to have the conversation about the unique set of tools and practices required to run these processes in production, and not just as part of continuous integration (CI). Part of supporting continuous testing is having a highly effective incident response process—arguably, it’s required.

    Continuous testing is used in the context of functional testing, performance testing and vulnerability scanning. All three come from different disciplines, but all suffer from the same challenge that they’re processes designed to be run during pre-release, not in production.

    Functional testing is the process of running automated tests of the application as if the test were a user, from the outside in. Performance testing is the process of putting artificial loads on the application to simulate high transaction volume to see how the application responds. Vulnerability scanning is the process of scanning application code to make sure components don’t have known vulnerabilities.

    All of these application quality processes are generally run in continuous integration (CI) environments and pre-production. If an organization were to move them to production, they get several benefits:

    • Full parity with production infrastructure. When you run these tests in CI, the environment it’s run on isn’t a one-for-one comparison with the infrastructure used for production. By running tests in production, you get a true picture of what is going to happen.
    • Better relation to production data. By running these tests in production you are running aside real user activity, which gives a more accurate picture from the outcome of the tests.
    • Reduced reliance on CI. Continuous testing allows you to streamline and even reduce pre-release processes, allowing more code to get to production faster. It also reduces the reliance on synthetics, mocks and service virtualization.
    • Specifically for vulnerability scanning, the ability to build DevSecOps workflows into production for vulnerabilities that show up at a later date.

    The mechanisms for running the tests in production are the same as CI, just with a different target environment. The problem is, when something breaks in production, it’s much more serious. So, to support continuous testing, you need to know what to do if there’s a test case failure or a failure in the application as a result of running the test.

    This is where incident response comes in. Today, most incident response tools and processes are used by SREs and developers to be alerted when something breaks. But, the same tools and approaches can be used for running tests as well. The only difference is, not only will the application be a data source of an alert, but so are the testing tools. This way, quality engineering and DevSecOps teams can confidently run their test suites and get alerted if something goes wrong.

    In particular for vulnerability scanning, continuous testing allows SecOps folks to get alerted when a new vulnerability is detected, which can result in patching holes long before the application is exploited.

    If an organization embraces continuous testing, they need to know:

    1. If a test fails. The effort to run tests, both in terms of human and compute time can be high. To wait for a result can also impact downstream processes. Therefore, it’s important for application quality and security to know that the tests themselves are running successfully. And, if they break, the QE team or SecOps team needs to be alerted so they can re-run the tests.
    2. If the tests break something in production. Not only do the teams who own the testing process and tools need to be alerted but if you’re on-call, you need to know as part of the context of an alert, that the incident was directly or indirectly impacted by tests being run. This can save a lot of time by killing tests versus chasing down issues with the application that may not be there.

    Incident response tools offer the ability for organizations to not only implement continuous testing but to also shorten the feedback loop from continuous testing back into planning and development. This can be done simply by reducing the amount of time it takes to get details from an incident back to the appropriate teams, but also for non-critical incidents that indicate potential issues in the application. Issues can be made more visible to everyone and communicated to product owners faster and more effectively. This is the other continuous, continuous improvement.

  • What It Really Takes to Build a Reliable App

    What It Really Takes to Build a Reliable App

    What makes an app reliable? If you ask most IT professionals that question, their minds immediately go to uptime. That’s not surprising; after all, it’s fashionable for software and infrastructure vendors these days to boast about how many nines of uptime they guarantee.

    To be sure, uptime is one component of delivering a reliable application experience for developers and end-users. But it’s only one. In order to build reliability into your application patterns, you must think beyond uptime alone.

    Keep reading for an overview of all the factors that go into achieving reliability.

    What Is Reliability?

    A reliable application is one that meets the needs and expectations of everyone it serves. While those needs and expectations will vary from case to case, reliability is characterized by the ability of an app to:

    • Be accessible when needed.
    • Respond within the time frame needed.
    • Be updated or modified as needed.
    • Provide security and privacy to the extent needed.
    • Meet the needs and expectations not just of end-users, but of everyone else who helps create or support the app.

    Maximizing Reliability for Cloud-Native Apps

    Achieving these features for modern, cloud-native applications requires a multi-pronged approach. The following are the core considerations to address in order to build reliability into an app pattern:

    Uptime

    We’ll start with uptime, which is the most obvious aspect of reliability. Uptime refers to the amount of time that your application is available, at least to some extent (as we’ll discuss below, merely being available does not necessarily mean that the app satisfies other requirements of reliability).

    Maximizing uptime typically involves solutions such as distributing workloads across different servers or data centers (so if part of your infrastructure fails, others remain available) and using automated failover to move a workload to new infrastructure if it fails in one location.

    Culture and processes are part of the picture, too, since you need to make sure your team is prepared to respond quickly to any incidents that arise, in order to minimize downtime.

    It’s worth noting, by the way, there can be such a thing as too much uptime. If you reach the point where adding more uptime doesn’t deliver any additional value to your organization, then it’s probably time to stop. Adding another nine to your availability, just because you can, might be a poor use of resources. So, be sure to factor this part of the equation into your uptime calculations and strategy.

    Performance and Efficiency

    In order to meet stakeholder needs and expectations, an application must not only be available, but also able to respond within the time frame required by those stakeholders. A website that is up 100% of the time but takes 20 seconds to load each page is not a very reliable website.

    This is why performance testing and monitoring must be built into your application delivery chain. You should also ensure that you rightsize infrastructure (for example, by choosing the right types of cloud instances) in order to guarantee that your applications have enough resources available to perform adequately. (Of course, this priority must be balanced with cost-control.)

    Accessibility and Usability

    An application that is available all of the time and responds quickly may still fail to meet stakeholder needs if it is difficult to work with due to poor design.

    From an end-user’s perspective, user-experience testing is the most obvious way to help mitigate the risk of poor accessibility or usability within your applications. But keep in mind that you also need to think about usability from the perspective of your own team. Make sure that access-control systems, infrastructure architectures and documentation can be navigated easily. You don’t want an application or a delivery chain that is too complex for your team to be able to support effectively.

    Security and Data Privacy

    A reliable application is a secure application. There are many obvious ways to help secure applications, such as using vulnerability monitoring tools. But remember security is not just about finding vulnerabilities as they arise or deploying certain tools. You must also build security into the design of your infrastructure, processes and culture.

    Backup and Recovery

    You don’t need to be a seasoned IT professional to know that backing up data is important for achieving reliability. When something goes wrong–which it occasionally will, despite your best plans and efforts–having a backup in place often means the difference between experiencing a blip in service and a major catastrophe.

    The thing that can be easier to overlook is the importance of having a disaster recovery plan in place as well as a backup routine. Simply backing up your data isn’t enough; you must also know how you’re going to restore it to new application instances quickly if disaster strikes. If, for example, all of your cloud-based virtual machines go down, what is the exact process you’ll follow for standing them back up? Identifying the steps ahead of time–and, ideally, scripting them so the recovery process can be as automated as possible–is crucial.

    Also important is quantifying how often you need to back up data, which is determined by a metric called Recovery Point Objective (RPO), and how quickly you need to be able to recover it to avoid serious business disruption–determined by Recovery Time Objective (RTO). Along similar lines, error budgets, which define how much time you can tolerate your production systems being down, can help you define the available time monthly for making system improvements.

    Modifiability

    Few apps are deployed and then never modified again. Instead, they must be updated or scaled constantly to meet changing needs and demands. That’s why designing an application pattern that can be easily modified is critical for achieving reliability over the long term.

    In practice, modifiability entails having the right tools (such as automated deployment solutions) and the right processes (such as clear feedback loops between ITOps and developers) in order to decide efficiently what modifications to implement. It might also involve taking advantage of infrastructure technologies (such as containers) that make it easy to update a running application without imposing downtime on users.

    Conclusion

    Reliability is more complex than it may seem. No matter how many nines are included in your SLAs, you are not guaranteeing true reliability unless you also address requirements such as performance, usability and modifiability.

    This sponsored article was written on behalf of Eplexity.

    — Chris Tozzi

  • DevOps Chat: Performance Testing with SmartBear’s Keshav Vasudevan

    DevOps Chat: Performance Testing with SmartBear’s Keshav Vasudevan

    In this DevOps Chat we speak with Keshav Vasudevan, product manager for performance testing at SmartBear. Keshav talks about the move to “end-to-end DevOps,” the importance of shifting left with testing and the latest state-of-the-art in performance and load testing with SmartBear.

    As usual, the streaming audio is immediately below, followed by the transcript of our conversation. Enjoy!

    Transcript

    Alan Shimel: Hey, everyone, it’s Alan Shimel, devopsy.kinsta.cloud. You’re listening to another DevOps Chat. Joining me in this DevOps Chat is Keshav Vasudevan – and I’m sure I mispronounced that; we’ll let him correct it. Keshav is with SmartBear and he’s our guest in this DevOps Chat. Keshav, welcome.

    Keshav Vasudevan: Hey, thanks, Alan. So happy to be here and, yeah, I will correct it – it’s actually Keshav Vasudevan, so that’s how you say my last name. And I’m – I currently work at the –

    Shimel: Vasudevan, okay.

    Vasudevan: Yeah. I work –

    Shimel: I’m glad you _____ –

    Vasudevan: Uh-huh?

    Shimel: Well, give us your – okay, so – and we’ll call you Keshav for the rest of the podcast today. But, Keshav, you’re with SmartBear, but why don’t you give our audience a little background? What’s your own personal journey here?

    Vasudevan: Oh, of course. I mean, personally, I’m coming from an engineering background. Yeah, I love all things code. I love building applications and, in my spare time, I just love building mobile apps and Web-based apps as just hobby projects, which is why it felt like a natural fit to be at SmartBear Software. I’m incredibly passionate about quality as a whole and I understand and know the importance of having consistent quality to ensure the best optimal end-user experience.

    So, at SmartBear, currently, I’m the product manager for performance testing and specifically in the LoadNinja application. And I help communicate the value of shift-left testing in the Agile- and DevOps-based ecosystems that typically we’re seeing the world shift towards. And, of course, I’m responsible for the product management and execution of our innovative, new, revolutionary platform in the performance-testing space, essentially allowing people to do real browser-based load testing at scale, which is unprecedented so far.

    Shimel: Very cool. So, Keshav, you’re right in the heart of it of what SmartBear’s about, but SmartBear is a company – you know, when we look at the DevOps space, the move is obviously towards “bigger is better.” We have all these companies who are trying to do end-to-end DevOps and complete-life-cycle DevOps. SmartBear is a company that, for as long as I’m familiar with them, have had multiple products and plays – you know, I’m not saying you’re end-to-end DevOps or that’s what you aspire to be at SmartBear, but SmartBear is definitely a company where you aren’t singular product, singularly product-focused on any one area. SmartBear – you know, there was a lot of testing products, but there was a lot of other products too.

    And, recently – well, historically, each of those products almost had their own identity, as they should, but the SmartBear moniker was almost secondary to the individual products. And, recently, we’ve seen that change, right? Where SmartBear has made a broader effort to bring all of these disparate products into a cohesive type of vision of going to market under “SmartBear.” You wanna elaborate on that a little bit? Or, better yet, give our audience kind of the breadth of all the different solutions SmartBear can help with.

    Vasudevan: You bring up a great point, Alan. So SmartBear’s been around for almost ten years now. And, since our inception in 2009, we’ve grown into a global company, which testers and developers and architects and designers have come to trust with their overall software-development needs. Our initial focus, when we first started, was around software collaboration and testing, but, eventually, of course, as the company grew and as we added more talented people to the company and also as we grew in user base, we realized that we could actually solve much more broader functional use cases.

    And so, since our inception, we right now have 11 global offices. We are a big advocate of open-source platforms and tools, and so a combination of our open-source tools, which is SoapUI, which is one of the most popular API-based testing tools, and Swagger, which includes, of course, the Swagger UI, the Editor, the Codegen, and the commercial SwaggerHub, are all part of our ecosystem. And so, in total, we have over  6.5 million users and over 22,000 customers of our commercial platforms. And, since we’ve started, we have over 500 employees. So that is history of SmartBear and where we are in its current state, but you’re absolutely right. We have a breadth of different products, that each essentially cater to different aspects of the overall software development life cycle.

    And so, if you look at the overall life cycle, we have tools that cater to solving and solving use cases and problems and seeing the design phase of the software journey, the actual development and testing and collaboration aspect, cross-functional and performance testing. We’d integrated a bunch of our partners in the deployment phase, with AWS, for example, or Kubernetes. And, finally, in the actual post-production and post-deployment, we actually have monitoring tools as well. So we essentially play in the entire software development life cycle, and we cater to different audiences and our tools overall cater to different use cases in those journeys.

    Now we’ve gotten a lot of good feedback for each of these products, but we also recognize, at the end of the day, that, today’s day and age, Agile and DevOps is the way products – or software-development teams are moving towards. This is primarily, again, because software development has evolved in order to meet the growing demands of consumers. And consumers right now, today’s consumers of software applications, are looking two important things. The first is they want features, right? The switching cost to go from one application to the next is going lower and lower, so, if I, as a consumer, am not getting the best features on a regular basis or new updates or enhancements on a regular basis, I might get frustrated and I might just move to another vendor. And the second thing is we have started to expect a lot of good quality in all the things that we’re consuming because, again, as we’re digital consumers, we know that, every day, we spend over 11 hours in front of our computer and looking through different applications. So we have come to expect a certain standard of quality.

    And all of this ideal of fast development and incorporating testing and quality into every aspect of this journey is achieved with the ideal of incorporating Agile and DevOps into your workflow. And so we know that, to go across all of these different functions in a seamless and automated fashion, you have to essentially integrate all of the different tools that we have that cater to all of these individual use cases, in a seamless fashion as well. And so – oh, one other thing that we pride ourselves on is we, from a product level, we have a seamless integration across all of these different verticals, right?

    So, for example, we have the ability in the performance-testing space to essentially integrate with Jenkins, with LoadNinja, that essentially now allows you to automate your load testing with real browsers at scale, meaning with 10 virtual users or 10,000 users. You can be rest assured that is the most accurate representation of load. All of this can be integrated and automated using Jenkins with a simple plug-in. Right? And this also then integrates with other tools. For example, we have an integration with our design tool, which is SwaggerHub, with our API-testing tool, which is SoapUI. So then you can essentially easily design your API, architect it easily, design the API, make sure it solves the end-user use cases, and then push it to the tester and developer to actually test out each of these functionalities. So we wanna make sure that this process, this ideal of DevOps, is actually achieved in execution with the seamless integration.

    Now one level higher is the actual story and the marketing and the branding around it. And we’re proud to say that SmartBear recently unveiled its new brand that gives our customers and prospects and users a more cohesive understanding of how each of these tools fit together, feel proud of the fact that they’re now part of the SmartBear ecosystem, and allow them to, essentially, seamlessly move from one tool to the next because of maintaining the branding and user experience across each of these tools. And that was a huge undertaking that we did and we just unveiled it last year at our user conference, Connect. And we’ve gotten lot of, lot of, lot of good feedback about our new brand, our logo, and everything else around that. So it’s a long–winded way of saying, “Yes, you’re absolutely right. And we’re making sure that that we are achieving that as well.”

    Shimel: Absolutely. And you know what? I have one of the shirts with the new logo they sent me too, so thanks for that. But, you know, the interesting takeaway here – I hear from so many and I recently received an e-mail from a fellow in the field who said, “Where do you see – we need to be moving to platforms. We need platforms to build on. And how do you build a platform? And where do you see the need for a platform?” And then you look at, as you’ve just laid out here, SmartBear and you take these tools and individual solutions, point-solutions that you guys had put together over the years, and showing how integration among them, as well as integrating with best-of-breed kinda tools out there, like a Jenkins and some of – and we were blessed in DevOps to have a lot of open-source solutions as well, but integrating with a lot of these open-source. I mean, this is how you stitch together a platform. This is how you get “one plus one equals three.” Right?

    Vasudevan: Yes, exactly. Absolutely.

    Shimel: Yep. So, Keshav, we’ve waste – we didn’t waste but we’ve spoken an awful lot about kind of background on SmartBear. I really wanted to spend our time talking about what’s new and what’s going on with you and your team there, so why don’t we dig down and peel the onion back a couple layers on that? What do you have – imagine you may – you know, you alluded to it earlier but let’s dig in: what’s happening?

    Vasudevan: Absolutely. So one of the things, as I mentioned in my introduction, as something which we as a company are really passionate about, is ensuring quality. Right? And, over the last 15 to 30 years, over the last – well, let’s say over the last 15 years, we as users – and when I say “users,” anyone – me, you, our friend; it’s essentially consumers of applications – have started to expect a certain level of quality. And this is how software development has evolved, in order to meet this demand.

    And, as we have touched upon, this is why Agile has evolved, which is essentially moving fast, allowing developers and engineers to build features in a much more faster way and deploy them seamlessly so that the end users get them in the quickest way possible. Right? And we’re always listening to the end-user feedback and updating the platform. Then there’s DevOps, right? Which is, again, trying to follow the same ideal and essentially having a much more collaborative approach towards testing, operations, and development together.

    Now let’s go dissect quality, the testing aspect of it. Right? So Agile, to allow for Agile- and DevOps-based testing, functional testing tools have done a great job of keeping up with the times. Right? For example, we have two tools like that, which is SoapUI and TestComplete. And they’ve done a phenomenal job in terms of allowing people to quickly come in and create their test scripts, make sure it all works, make sure to write the test cases really quickly because they have features to do that, and then, again, automate the entire process, using maybe a REST API or, of course, using an existing CI/CD tool.

    Performance testing, though, which is a huge – which is a big business KPI in today’s day and age, right, is something that people are still, to this day, scared to do. We talk to product teams and engineering teams on a daily basis, who tell us how important they know performance testing is. For example, we know that, if consumers take more than – if it takes more then 3 seconds for a certain e-commerce page to load, for a customer, they’ll leave. They’ll just go to another platform. The switching costs are getting lower and lower and people are getting more impatient, so, if it’s gonna take a while to do a certain transaction, people will leave. And that is a huge business loss at scale for your company, for your platform, and as an organization as a whole.

    So product and engineering teams, Agile teams, want to do performance testing. However, performance testing, to this day, has not evolved to keep up with the growing needs of Agile and DevOps-based workflows. To this day, it takes such a long time, for me as a performance tester, to create a test script. I have to essentially learn – and, if I was a developer or functional tester wanting to do performance testing, I have to forget about it. I have to hire a consultant because my learning curve is gonna be so steep. I have to allocate a lot of time in my day-to-day operation in order to create a simple test script. This is because, over the last 30 years of performance testing, the technological process has not evolved at all. To this day, if you’re creating a performance test script, you have to record all the transactions between the browser and the server. You’re doing this under the protocol level. That is typically how you actually create a performance test script.

    Now, as you know, the responses and the requests between server and client will have certain dynamic characteristics, like session IDs, cookies, and so on. So, in order to play this back across 1 user or 10,000 users to do the performance testing, you will have to do this programming and dynamic correlation. This process takes anywhere between several hours to a few days to even become successful, for the most basic transactions. Now imagine doing this for the complex applications that we have today, some of the AJAX applications which are very client-rich, in terms of actions and allowing users to do multiple things. The effort that is involved to do this multiplies threefold. Right?

    And so this is why performance testing is still, to this day, seen as something which no one wants to touch. They’ll hire a consultant; they’ll have a centralized function to do this. Then there’s, of course, the actual process of emulating and creating the load itself because, to this day, we still use emulators to generate the load, which is not necessarily representative of the end-user experience.

    So this is something we saw over the last one year and we decided to do something about it, which is what – you know, our engineers came together. We said, “We are passionate about this. We face this issue ourselves. Let’s do something about it.” And so, essentially, we productized a new approach to doing load testing, essentially allowing users or testers or developers or functional testers – anyone who’s passionate about performance testing, anyone who’s behind an application, be it a marketer, a product manager, a functional tester, or a performance tester – to essentially come in, record, and instantly play back the transactions that they record in the test script, without doing any programming or dynamic correlation whatsoever. Right?

    And, from here, of course, you can – and take the script that you have and spin up tens of thousands of real browsers to go ahead and do the load test, based on these transactions. Right? This is a – I don’t use the word lightly here, but a revolutionary approach to actually doing performance testing because this is unprecedented, to essentially create browser-based test scripts without doing any sort of protocol-based recording, which allows you then to create test scripts out of the box. And then simulate tens of thousands of real browsers to run these scripts on them. So, as a user, as a tester, you’re, one, going to save over 50 to 70 percent of your time, doing the actual load testing, because the scripting process has become so much more easier. And you’re gonna get results that are coming straight from the browser, so you can be rest assured that this is the most accurate and realistic representation of the performances that your application will be showing for end users. And this is what LoadNinja is, as a product.

    And, over the last five months, since we launched in October, end of October, during our user conference, we’ve seen tremendous traction in the market. We’ve seen so many customers come to us, sign up for annuals and partner with us, to essentially allow them to do load testing. And it’s just phenomenal, as a product manager, and it’s like seeing the vision come to fruition and actually seeing the people who are behind products – product managers, functional testers, all of them – coming and saying, “Hey, we can now do performance testing by ourselves, without necessarily having to get a certification with an expensive tool. Without having to spend so much more money and dollars trying to get a consultant.” They can do this all by themselves and that’s the most gratifying thing I ever heard. So, yeah. So there’s a lot happening, but the LoadNinja’s primarily something that we’re super proud of, as a company. It was built in house by us. The revolutionary technology to do this it’s something which performance testing has never seen to this day.

    Shimel: You know, listening to you, all I can think of is back to my own days as a entrepreneur and developing security solutions, and we’d have to go get performance testing done. We were selling to DOD – it was large, large networks – and this is pre-DevOps, obviously, and pre-automation and pre-continuous. And, my god, the budget for the performance testing was bigger than the budget for the development team. It was nuts. I mean, it was – so, when I hear now about how this stuff is being done in the cloud and “automated” and “scalable” and the price points, it’s just crazy.

    Vasudevan: It is. It is. We’ve come a long way. And, to this day, there’s still – performance testing is seen as a monolithic and centralized function, right? And so, to this day, what you saw years ago, many of the factors are still there. So, yeah. So you’re absolutely right and it’s good to see the cloud coming in, but as a performance-testing industry and tool vendors, we can do a lot more to push the boundaries and keep up with the growing demands of engineering and quality as a whole.

    Shimel: Yep. Got it. Got it. You know, Keshav, I told you when we started things get out of control. We were supposed to go 15; we’re at 20 minutes.

    Vasudevan: [Chuckles]

    Shimel: We’ll have to continue our SmartBear discussion on another DevOps Chat, at another date. We’ll have you back on soon. But why don’t we put an end for it right here? But, before we do, people listening, they like what they heard; they’re interested. Where can they go get more information?

    Vasudevan: Oh, absolutely. So the best place to go is loadninja.com, so L-O-A-D-N-I-N-J-A-dot-com. And you should have all the required information to become successful and get started. One of the things we pride ourselves, as a product and engineering team, is our turnaround for new features and enhancements. We deploy almost every week and, again, using the – many of the learnings, we learned from your website, Alan, in the DevOps world, to essentially continuously integrate and deploy every now and then, every week, in order to get the features and enhancements that users require. So go to loadninja.com; you’ll have all the required information to become successful.

    Shimel: Fantastic. Thank you very much for being a guest on this DevOps Chat. And I am serious – we’ll have to have you back on here – but, for now, I think we’re gonna pull the plug on this episode. Thanks, everyone, for listening. This is Alan Shimel for devopsy.kinsta.cloud, Security Boulevard, Container Journal, Digital Anarchist. You’ve just listened to another DevOps Chat. Have a great day, everyone.

    — Alan Shimel

  • Sauce Labs Combines Functional and Performance Testing

    Sauce Labs Combines Functional and Performance Testing

    Sauce Labs announced it is now moving beyond functional testing, adding a front-end testing tool it has dubbed Sauce Performance to make it easier to accelerate testing within the context of a DevOps process.

    Lubos Parobek, vice president of products for Sauce Labs, said the goal is to enable developers or testers to begin testing both how well application functions work and perform much earlier in the DevOps process using the same testing tool.

    Parobek said that as organizations embrace modern application development architectures based on microservices, it’s become crucial to test the capabilities of any module within an application because the number of interdependencies between modules continues to increase. That approach accelerates the rate at which applications can be developed. However, any flaw that impacts how the application works or performs can have a debilitating impact on any number of microservices that make up the application, he noted.

    Sauce Performance makes use of debugging and performance trace logs to identify the root cause of an issue in addition to capturing metrics such as Time to First Meaningful Paint, Time to First Interactive, Page Weight and Speed Index. Sauce Performance also employs algorithms to automatically establish a baseline that can be used for regression testing.

    Parobek said Sauce Performance serves to streamline testing processes as well. Most existing front-end performance testing solutions require integration with a load/stress testing tool or a separate application performance monitoring (APM) tool. However, Sauce Performance allows developers to use their existing Selenium test scripts to capture both functional and performance test data.

    In addition, Sauce Performance has been designed to integrate with multiple continuous integration/continuous deployment (CI/CD) platforms to make it possible to feed test results directly back to developers, which can then decide to prioritize issues that need to be addressed.

    Sauce Performance is available as part of the Sauce Labs Continuous Testing Cloud.

    Parobek said organizations want to be able to make it easier for developers to test their own code as part of their DevOps best practices. That doesn’t eliminate the need for dedicated testers for evaluating functions, but potential performance issues today are being addressed often long before applications are deployed in a production environment.

    One of the reasons applications are not as thoroughly tested as they might be is that many organizations require developers to learn how to use tools that have different user interfaces and then switch between testing tools. The result is a complex testing process that makes it more tempting to short-shrift elements of the testing process as application delivery deadlines loom.

    More challenging still, many organizations still don’t continuously test applications after they are deployed to ensure new functionality does not adversely impact the user experience.

    For as long as applications have been built, tension has existed between the developers who create applications and the people who test them. That debate may never be resolved, but everyone agrees in this age of DevOps that it’s better to test early and often.

    — Mike Vizard

  • The Art of Software Performance Testing

    The Art of Software Performance Testing

    When users turn away from applications or have critical feedback, it’s often because the application is slow, hangs/freezes or, worse, it isn’t available when needed. In this era of limited—or, zero—patience for app instability, delivery teams should ensure that their performance testing capability is sound. First though, let’s start with definitions. Despite popular opinion, performance testing is not the same as load testing. Load testing checks how systems function under a heavy number of concurrent users performing transactions over a certain period of time, while performance testing is much broader in that it checks how the system behaves and performs. Performance testing examines responsiveness, stability, scalability, reliability, speed and resource usage of your software and infrastructure.

    Performance testing doesn’t always get the attention it deserves. Testers have a tendency to focus on features and component functionality, even when verifying performance on application architectures designed leveraging APIs. As software development methodologies and application infrastructure evolve, so should performance testing. We observe that in Agile teams, performance testing typically executes at least one sprint behind other testing methods. Performance testers don’t start testing until the application’s features are deemed stable. They operate separately from the delivery team. Yet, performance testers should run tests as soon as new code is available, which in turn helps developers receive real-time feedback on issues that they then can fix immediately.

    To ensure a successful strategy in validating the performance of an application, here’s a look at three fundamental performance test categories:

    • Endurance: This involves running a transaction or scenario continuously for a period of time to detect memory leaks or anything else that causes a system to slow down.
    • Breakpoint: The goal here is to increase the load on a system until it reaches a threshold, after which it crashes. These tests are critical to understand at what point the system or underlying components will buckle.
    • Scalability: By increasing the number of concurrent users, instances or database size, you can measure how applications will handle growth.

    Performance Testing: Recommended Tools and Skills

    Performance testing is difficult without automated tools that can simulate scenarios and user activity so that you can test comprehensively. Many good tools are free or available as open source. Some of the popular ones include JMeter, Grinder and Locust.io.

    To be successful, performance testers need a DevOps mindset. Technical skills are a must, since understanding software code behaviors and interpretation of hardware and software utilization is necessary. An understanding of how to interpret the technical concerns observed from the business perspective is also a great skill to build. Tests should always answer a “what if” scenario and occur within the sprint. Hence, the ability to apply a continuous testing approach as part of the holistic testing strategy is a great skill to learn! Finally, learn how to provide real-time feedback to developers, as a form of hypothesis about changing code to support better performance tracking.

    Guidelines to Make Your Performance Testing a Success 

    These steps will  help structure your performance testing to achieve results for the business success of the delivered application:

    1. Map your tools and environment. You’ve got to understand the environment infrastructure that will host the application under test. The ability to quickly configure, build and tear down the environment to test is a crucial time-saver.
    2. Set acceptance criteria. Getting concise goals of application performance among all stakeholders will chart your path and allow you to gauge success. An example metric is page load times for your mobile application.
    3. Define KPIs. The acceptance criteria will dictate the KPI goals for performance tests. These may include percentile response times, throughputs, garbage collection performance, heap utilization and resource utilization.
    4. Set up test runs, execute and monitor. After completing the preparatory steps above, you can define test scenarios and create the test cases. Don’t forget to incorporate monitoring. This entails creating alerts in the testing environment to ensure that monitoring services are working as expected.
    5. Analyze, repair and assess. After each performance test cycle has completed you’ll want to assess the results against your acceptance criteria and fix any problems immediately. Over time, acceptance criteria will change and so should your test scenarios and anticipated outcomes.

    As with all testing activities, early involvement and collaboration with developers, analysts and business stakeholders will save time and headaches later. The more you know about the technology stack and upcoming application changes, anticipated maturity of the application and evolving business goals, the better prepared you can be for any testing need as it arises.

    In the evolving shift to a modern software development environment, performance testing has become central to building confidence in software. It’s time we give it our full attention.

    — Mush Honda