App modernisation and new ways of working for leading SaaS provider
The opportunity at a glance
Modernised platform architecture, introduced infrastructure automation and CICD pipeline resulting in accelerated speed to market.
Our customer is a cloud-based omni-channel communication platform which is offered as SaaS. It enables users – typically governments and enterprises – to connect and interact with their customers and staff via text messages, voice messages, emails and social media exchanges. It facilitates consistent, targeted, personalised messaging across customer devices.
The platform provides a range of features, including messaging templates, geographical targeting, workflow automation, traceability and real time feedback and reporting. These features can be configured simply via drag and drop GUI. A rich API is also available to support integration with other platforms.
This ease of use and comprehensive feature set has resulted in significant adoption and growth; they now have over 500 customers, ranging in size from very small startups to large global enterprises, across a range of industry sectors, including those where messaging is mission critical (such as transportation, utilities and emergency services sectors).
A couple of years ago the organisation was faced with a massive growth in customer numbers, and increasing demand for new product features.
The core platform was still performant and considered an asset, but it had been under continuous development for around 17 years and as a result had become highly complex.
This complexity played out in a number of ways:
- Change – it was now difficult to change the platform; to add new features quickly and leverage new technologies and services
- Support – complexity made it difficult to use Agile delivery practices and quickly to onboard and scale up new software development teams.
- Product – the product design and development processes were moving at different speeds, and the two processes were becoming increasingly disconnected as teams regressed to a more waterfall like approach.
Collectively these issues were impacting on efficiency, responsiveness and speed to market. As a result, they made a decision to:
- Re-architect their core platform, breaking it down and decoupling key components to improve maintainability
- Develop a brand new user interface / customer experience
- Uplift their delivery capability, and to build an agile, high-performing product development team.
Cevo were engaged to support:
- The implementation of new ways of working – which included the implementation of new CI/CD tooling
- The modernisation of the platform architecture
- The improvement of User Experience
1. Modern Ways of Working
Changing the architecture of a company’s core product and modernising the user experience while minimising customer impact requires new ways of working.
The project was made up of approximately 30 people forming cross-functional teams of UX/UI Designers, Developers, Quality Analysts and Product Managers. Cevo embedded within these teams to implement Agile methodologies and build team capability through training and coaching, as well as providing the technical capability to help build the solution.
A new product development process emerged for feature implementation
- The process begins with customer research led by Product Managers and UX Designers, continuing on through until a MLE (Minimum Likeable Experience) is identified.
- This MLE is then broken down into multiple development, deployment and release strategies to aid the teams to continuously improve the new product streams.
The development process was supported using a fully automated CI/CD pipeline. This was created using a range of tools:
- Source code was managed using Atlassian BitBucket
- AWS EC2 infrastructure was configured and deployed using BuildKite and Terraform
- Weaveworks was also utilised to:
- implement automated deployment strategies
- report on Kubernetes and deployment tasks
It took around 5 weeks to establish a basic CI/CD Pipeline that covered the Pre-Production environments. After this, our customer undertook extended testing and QA to shakedown the solution and improve confidence in the approach. Once this had been successfully concluded, the CI/CD Pipelines were extended to cover production.
The process took about 18 weeks end to end to conclude, and as a result the organisation now has weekly iterations with continuous integration and deployment, with every commit to master going to production.
2. Modern Platform Architecture
As a result of anticipated significant customer growth and product development the organisation chose to build a new platform that was service oriented, modularised and open in structure that would provide scalability, high availability and high performance.
Cevo Architectural Review
Cevo commenced the engagement with a review of the proposed platform architecture in order to validate the approach and suggest pragmatic implementation steps. This resulted in:
1) Recommendations for a robust, reliable, containerised architecture, with overview as follows:
2) A set of four guiding technology principles which were used to guide the platform redevelopment:
- Containerisation – to ensure consistency and isolation of environments (Non-production, Production, On-premises & Cloud), immutability of code implementation and repeatability of delivery
- Infrastructure as Code – to create performant, flexible, consistent and scalable infrastructure that conforms to all available security requirements
- Process Automation – to ensure delivery confidence through short iterations, enabling fast and flexible improvements and shortening overall speed-to-market
- Microservices – to enable technology independence and functional isolation and simplify maintenance of the technology stack by allowing services to be built and updated independently of each other.
This architectural approach is based on industry best practices which allowed our customer to begin to leverage AWS Services and realise key cloud enablement benefits such as reliability, security and cost effectiveness.
The resulting technology stack consisted of:
- A new front end application to provide a new customer experience
- developed in React.js
- built natively on Docker
- deployed using Buildkite
- hosted in a Kubernetes cluster running on EC2, managed using KOPS
- distributed via AWS Cloudfront Content Distribution Network (CDN)
- Backend support for the application was provided by a range of featured developed using AWS Products; for example:
- A new Workflow engine developed to support the “Workflow” functionality, which used AWS Lambdas to trigger core platform functionality via AWS API Gateway
- A custom “Service to Service” authentication application developed using AWS API Gateway, AWS Cognito services & Lambdas
- All of these features are managed via the CI/CD pipeline approach per previous section
- Backend integration was provided by a Graph API which was developed on Apollo GraphQL.
- This was integrated into the core Platform (re-architected back end using a REST API)
- The REST API was hosted on Kubernetes on EC2 with an Amazon RDS database as a datastore.
- A range of Lambda functions were deployed to perform housekeeping and background operations on the platform.
3. Modern User Experience
The overall aim of modernising the User Experience was to simplify the process of creating visual workflows, templates, efficiently manage their contacts and contact lists, and introduce smarter reporting.
Cevo were embedded within a cross-functional team composed of UX designers, front and back end developers and integrators in order to create and deliver this improved user experience via the new application.
Our customer was able to realise a number of significant benefits as a result of this work:
- The core business objectives – to modernise the platform and development practices, without disrupting or impacting negatively on existing customers – were successfully achieved
- Uplifting the ways of working has enabled them to improve their approach to product innovation
- Product and Development teams are now aligned around a single unified process and technology set
- Barriers to testing and learning about new technologies, and to trial new product concepts, have been lowered
- The cost has been reduced
- Risks have been removed
- The time to develop and deploy new features has been
- The overall cost of innovation has been reduced
- The resulting architecture enables the organisation to leverage the advantages provided by a cloud deployment into AWS, including reliability, scalability, security and cost effectiveness.
- Improvements to user experience and support infrastructure enabled the organisation to continue their rapid customer growth, which contributed to a successful IPO.