Building a next generation digital platform is a great challenge, there are a lot of moving parts that all need to be orchestrated to a single goal; enabling our user to upgrade their flights or hotels.
As a startup we could jump straight in to development, building a multi-tenant system that allows a user to log in, search and book an upgrade. It would enable us to deploy and prove the system in the shortest possible time. From there we would begin the scaling process, bringing in new clients and users. We could vertically and horizontally scale resources with Google Cloud Platform, replicating our application to new instances.
This would be great until we have to develop a new feature for the application. The application would need to be rebuilt with the feature included, if the app is already complex this may be difficult to achieve, if we're working on more than one feature we could end up working on conflicting code, and if our unit testing wasn't up to scratch there could be unknown errors created by the new feature.
What started as a simple application allowing a user to log in, search and book an upgrade, quickly escalates into complexity. Maintenance becomes difficult until you risk reaching a tipping point and face meltdown.
Getting the application back to a working state will be a tough struggle, moving forward with new features will increasingly become more difficult. The technical debt mountain becomes impossible to maintain and kills development.
Nobody wants that.
So what do we do?
Building a digital platform is more than just writing code. You need to develop a solution that is made of understandable components, a solution that can be articulated to your peers. You need to scale these components right from the start.
At Upgrade Pack, we are building a platform that will scale for the future, we know we will support large numbers of clients and users, and we will provide each with the high level of care you would expect from us.
We have a microservices architecture that enables us to decompose complex functionality to manageable services. For instance user preferences is a single service, all it deals with is whether the user wants to communicate through email or sms and what type of communication do they prefer. By building with microservices each service is an encapsulated block, like a Lego brick, that we can use to build our application. So when we need to build a new feature for our application we build it like a Lego brick, it has a new datastore and functions, each thoroughly tested through automation, and accessible through a well defined API. The brick can then be added to our other bricks to create the foundation of our digital platform.
Brick by brick we create our digital platform.