“The art of life lies in a constant readjustment to our surroundings.” —Kakugo Kakuro, The Book of Tea
With digitization, interconnected systems, and agile becoming the delivery norm, designing connected automated ecosystems that can respond to change and are intelligent enough to generate their own environments and data is critical. This was emphasized in the recent World Quality Report 2018 (WQR2018) where 61% of our respondents stated that keeping up with automation was a challenge due to application changes in every release. Another 48% of respondents stated that test data and environmental challenges are the biggest impediments to automation.
This reflects the challenges that one of our major financial services clients was facing for their critical wealth management system. The project involved enhancing and migrating their existing wealth management system, with more than one million users, to a microservices-based architecture. Time to market was key, so the organization decided to adopt Scrum and deliver features to production in two-week sprints.
This tight timeline mandated automation of the client’s entire lifecycle. Automated testing integrated with development and deployment played an essential role from a speed-to-market standpoint. It was also vital for the client to design their automation in a nimble fashion so that they could run automated scripts in test and production as well as handle user interface (UI) and data changes on the fly.
The solution was to build a connected ecosystem that could integrate requirements, design, build, test, and deploy features as part of their assembly line. This connected ecosystem was also completely adaptive and self-reliant. It could generate test data in real-time. Test scripts, on the other hand, could handle any kind of UI changes and run in QA and production. Most importantly, business users could also roll back their code base instantly in case there were any defects in production.
Key technical design considerations of this connected ecosystem are outlined below:
1. Adaptive test scripts that respond to changes in UI. Scripts are designed using a proprietary protractor and Jasmine framework with enterprise test engineering solutions as a wrapper. All actions are sent to the browser using the JSON web driver protocol, which enables the handling of UI changes at runtime. Since these scripts are used by business users during the run in QA and production, there have been zero post-production defects which resulted in greater confidence from business.
2. Real-time test data generation. Test data is orchestrated from production systems using REST API calls. Each REST endpoint is fed from JSON files and the resultant data is consumed using custom written data value methods.
3. Automated code resiliency. Using an Apache-based code snapshot tool, a virtual image of code can be deployed in production environments. If a release candidate fails, the code base can be rolled back to the previous version in a matter of seconds.
4. Continuous monitoring. Continuous validation and health check of services are run to detect issues real time in production.
5. Continuous delivery. Requirements in the form of user stories, configuration management, coding, testing and monitoring activities are integrated into the assembly pipeline through an orchestration engine.
In summary, as organizations scale, intelligent automated eco -systems are a must. It is not just change but the ability to anticipate,thrive and survive with the change in a connected manner that demands innovation in designing these systems.
Co-authored by Balaji Sudhakar Subramani and Priya Kulkarni.
Register for our upcoming webinar to learn more about trends related to intelligent, connected, and automated ecosystems.