Multitenancy, microservices, and continuous delivery go together in cloud applications.
“In a multitenant environment,
everyone runs with the same version with the same built-in features,
and that makes it easy (well, easier)
to run automated tests before changes are applied.”
Sure, you can provide separate environments for everyone. But inevitably, separate environments will be customized and become increasingly difficult to run through standard testing.
Modern multitenant cloud environments don’t sacrifice security. With the right architecture, data can’t be shared between different companies – authentication against both user and organization is baked into into the public APIs and all the internal service calls.
Sharing resources and microservices in a multitenant system is efficient cloud usage – you can scale up microservices under load across all the tenants, so no single organization can ‘hog’ all the resources. You can run big data refactoring all the time without affecting end-user response times for any customer.
Continuous deployment requires automated testing to work. Install variations with customized monitoring, communications, operating systems, or technologies will mean incomplete test coverage. In a multi-tenant cloud environment, everyone runs with the same version, with the same built-in features, and that makes it easy (well, easier) to run automated tests before changes are applied.
Here’s an impossible to test Time Machine scenario:
Let’s just hop in the way-forward machine and move up three years. Looking back, which would you choose?
Continuous delivery = Thousands of gradual updates, hundreds of new features
You’ve seen updates every week and many more updates that are invisible but make your systems more useful and reliable. Very little training is needed for current users because changes are usually small, such as added features or options to things they already use. The accumulation of small changes adds up to huge new features and capabilities. Your data has been gradually updated over time, but the entire original event data is available in case new reporting features are added later. Other customers have ‘pre-stretched’ the system so when your volume goes up, the system scales easily.
Custom or on-premise delivery = 4 or 5 major updates, with pain each time
Major release upgrades that go online seamlessly and on-time are an exception. The usual story is a blackout period, data migrations, install scripts, testing and re-training your staff for the changes in the system. Or maybe the updates require a last-minute reversion to the previous version and a schedule to try again. The longer you wait between updates, the greater the costs. Any customizations that have been added to your systems have to be re-evaluated for each change in case they conflict with the updated software.
Back to the Present
The reality is that we all benefit from multitenancy and continuous deployment: You get a reliable system – it just works. You also get a lot more features over the same time period compared a more traditional on-premise solution. As a developer, we get a unified system that we can test continuously, deploy to continuously, predict scaling and costs accurately, and support into the future.
So why believe me? Because Interactive Intelligence has traveled both paths. We started with applications built on the monolithic approach. At the time it was, in its own way, advantageous. But as cloud technologies advanced we saw that this approach could not deliver the reliability, scalability, security, and fast, continuous deployment of functionality that businesses would require to stay competitive. So we started from scratch, building our PureCloud platform. It’s more reliable, offers more features over the same time period, you can test and deploy continuously, and you can predict scaling and costs more accurately.