When a Lack of Cohesion Led to Missed Opportunities
The hospitality division of a multibillion-dollar company offered several successful property management software solutions — from rental space management, to online bookings, to service optimization. However, while these solutions were designed to increase bookings, improve guest experience and increase efficiency of hospitality operations, there was a catch: all of their products were monolithic applications. With individual front ends and back ends, each product had its own data and functionality, creating a lack of cohesion across the organization.
Customers would purchase two different products for two different purposes — for instance, one product to manage events at a hotel and one product to manage service requests at the hotel — but each product’s business data was stored separately. This not only created a missed opportunity to better leverage business data for reporting and analysis, but also required customers to access multiple systems for different purposes.
Uniting Data Under a Microservices Architecture
The company envisioned a series of containerized microservices working together to unify data and processes from multiple products. However, this type of architecture was new to the company and their engineers were already busy supporting existing solutions. Without the domain knowledge or capacity to take on such an innovative project, the initiative remained at an impasse.
Further complicating the proposed solution was the advanced innovation behind the idea. Since Microsoft did not yet support the ability for containers running in Azure to securely access data stored on a virtual private network, there were security and capability concerns stalling the project. The company wondered: was it even possible to do what they wanted to do?
That’s where Ascendle came in.
Doing What Had Never Been Done Before
In July of 2017, the company brought in Ascendle to build a small microservice to see how the proposed solution could work. Working closely with the client’s Cloud Team and Microsoft, the Ascendle team got to work.
The client started the engagement with a small application and a list of high-level features and acceptance criteria. Initially, we were given three sprints — a total of six weeks — to demonstrate value. Working with the client’s technical stakeholder, we broke the list down into detailed user stories that could continually be reprioritized based on business value as the engagement progressed. By focusing on the simplest possible version that would work, or the minimum viable product (MVP), we were able to determine what was absolutely necessary in this initial version and what would be nice to have in future updates. This helped us achieve our goal of building working software as soon as possible.
By the end of the first three weeks, we had basic functionality and could demonstrate a running microservice. Since the client had never built a microservice before, this was especially shocking progress and we received a standing ovation at sprint review.
To streamline the creation of future microservices, we collaborated with the client’s in-house teams to develop a template. The template serves as “plug and play” architecture that enables the microservices process to be quickly replicated, while still allowing for the flexibility to use other technologies. Throughout this process, we worked closely with the client and Microsoft as we attempted to achieve something that had never been done in Azure before. As an example, we deployed a microservice to AKS that accessed an on-premise database via a virtual network. Within several months, we were able to create the environment, pipelines and cross-cutting concerns — such as security, logging and monitoring, and resource management — that would allow microservices to run successfully in production.
An Evolving, Ongoing Engagement
At the writing of this case study, we have worked on 13 total microservices with the client. Throughout this continuing engagement, we’ve also seen the success and flexibility of the template as it evolved to serve other teams. In addition to driving efficiency on our own team, at least four additional development teams from the client have used it to replicate microservices and grow their platforms.
However, even with these continued accomplishments, the biggest success from this engagement was proving that what the client desired was not only possible, it could be achieved through a secure, efficient process. When the project began, the client wasn’t sure if having microservices running in the cloud, but communicating with secure data would be possible, much less whether it could be done quickly. Ascendle was able to come in and create a proven architectural approach that could be used again and again.
Further, we helped develop a clear process for efficiently replicating and deploying future microservices. This process can now be used to get a basic microservice in the deployment pipeline and working within two weeks — a timeline that was previously unfathomable to the client.
A Trusted, Continuous Partnership
Ascendle’s engagement with the client has continuously deepened into a trusted partnership. Now familiar with our willingness to innovate and find a solution whether one presents itself obviously or not, the client continues to look to us to try new architectural approaches. Recently, the client asked our CEO to give two technical presentations to support the development of other teams’ knowledge around architecture.
We’ve also been pleased to introduce the client to new, innovative technologies they had not previously used or weren’t familiar with using in this particular capacity. Deploying technologies like MongoDB, .NET Core, Docker, Kubernetes and AKS in a repeatable, scalable way has helped advance their ongoing development efforts.