Challenges in Application modernization
In order to succeed in the modern world, technology companies have to solve unprecedented number of challenges. They have to modernize their applications to keep up with the ever-changing requirements. They have to add more functionality, fix bugs at a faster rate and scale up when there's more demand all while keeping customers happy and differentiating themselves from competition
There are 3 kinds of transformations happening across enterprises to support these scenarios
- Software architectures are changing from a giant monolith to Micro services, nano services, Serverless architectures
- The way teams work is changing from a Waterfall model to Agile and DevOps style with more frequent releases and updates
- Infrastructure which was earlier in the form of Physical machines is now changing into Virtual Machines and Cloud based
What adds more complexity is all these transformations are taking place at the same time
Role of Testing tools in modernization
It's not a simple task to modernize monolithic applications. It's very time consuming.
Testing plays a very crucial role in a product's journey to the Cloud. Testing tools also have to modernize themselves to support Cloud Native Applications. Testing tools not only need to support Monolithic Applications, Mainframes etc but also need to evolve to support modern technologies like Kafka, Docker, Kubernetes\
Shift left testing
Earlier, software development made use of what we now call "Traditional" On Prem tools which was then deployed onto various environments like Integration, Staging, Pre-Production and finally production. Testing was largely automated and performed relatively later in the lifecycle. This meant that defects were propagated across environments and found late
The emphasis now is on Shift Left Testing where Testing is carried out early in the Software Development LifeCycle. In order to be able to bring testing as early in the software development lifecycle, development teams must be able to mimic the application under test as much as possible and as early as possible. They should be able to recreate the various services or modules in the application under test. Many commercial applications will consist of various 3rd party services. They can include databases, API calls to external services or even consist of multiple micro services that make up an application. Shift left testing would mean that a lot of such functionality would have to be mimicked when test cases run early in the software lifecycle. Teams would then face issues because they would have to purchase additional licenses of the 3rd party services or tools that make up an application. This would add costs to the project team and would be a major deterrent for teams who want to pursue shift left testing. What can they do to overcome such a problem?
The answer is Service Virtualization. Teams largely would not need the complete functionality of a 3rd party service during testing as they aren’t testing the 3rd party service themselves. But they would just need to replicate the behavior of that service when it interacts with the Application under test. Service Virtualization tools help with that. Good Service Virtualization tools would be able to mimic a range of 3rd party services or protocols themselves without costing as much as their licenses. This would result in tremendous cost savings to the development teams. Investing in Service Virtualization tools would also help the development teams to spin up Virtual Services on demand and programmatically. This means that teams can create DevOps Continuous Integration, Continuous testing and Continuous Deployment pipelines which programmatically spin up virtual services in addition to the application under test thereby recreating the scenario of how the Application under test would behave when it is deployed.
Some teams even implement DevOps pipelines which run Tests when a developer checks in the code and prevent the code check-in if found to be toxic. This requires Testing tools to be run as a part of Continuous Integration and Continuous deployment pipelines.
To ensure faster deployment times of software applications with quality, teams have to sanitize any new code going in as early in the lifecycle as possible. This means running automated tests as early as possible and as frequently as possible in all DevOps pipelines
Fragmented ecosystem of tools
There are many tools for CI/CD pipelines available for a developer. Development teams are very much empowered these days. They decide what tools they want to use and what works for them. Some teams don't even like to be married to one set of tools. There are DevOps toolchains that support "Bring Your Own Tools" concept.
With the increased influx of both open source and proprietary tools, investing in tools or platforms that are able to stitch various tools together is becoming increasingly valuable to teams. Investing in tools that have integrations with many popular DevOps tools is also important. This gives teams flexibility and freedom to choose the tools they want and with which they can achieve their goals without having to tie themselves to tools that have been passed onto them by legacy. If tools or platforms can mine data from various other DevOps tools and project them in a meaningful way to the teams, it would further help them to make sense of what’s happening with their toolchains and pipelines
Role of Cloud in Testing
Cloud is disrupting the entire tech industry. Testing and DevOps tools not only need to support testing and deployment of Cloud Native applications but also need to support various kinds of deployment models. Customers are at various stages in their journey to cloud. Customers who’ve already started off with their journey to the cloud would have already made investments in various types of Cloud infrastructure. It would be a great value add to the customers if Continuous Testing tools they use help them to preserve their existing investments in Cloud Infrastructure.
Flexible deployment models like On Prem, Cloud Native, ability to run on multiple Cloud vendors with no effort would not only meet customers wherever they are in their journey to the cloud but also help in preserving their existing investments in infrastructure
Here are some webinars you might be interested in
Transform and accelerate your DevOps journey - https://tinyurl.com/yxmnj2sz
Advances in Test Automation and Service Virtualization - http://bit.ly/2Pphas0
Transforming from Testing Tools to a Testing Platform - https://event.on24.com/wcc/r/2204788/229B024BE03AD2186B2BBA0D407ECB03
Seeking Perfection By Optimizing and Automating DevOps Flow - https://developer.ibm.com/urbancode/2019/11/01/seeking-perfection-by-optimizing-and-automating-flow-devops-webcast-series/