Major Cruise Line Operator
This major cruise line operator adopted a strategy of becoming more responsive to customers in terms of the range of options available to tailor their cruise experience to their preferences and budget.
However, as business grew, their technology team realized they needed to rethink the entire software infrastructure to enable a fundamental shift towards a more digital way of doing business. They engaged YoppWorks to take them on this journey and it is leading to impressive results.
Their software infrastructure had accumulated technical complexity and system dependencies that were beginning to negatively impact developer productivity. They had three different backend systems and five different code bases, which were monolithic, written in multiple languages, and presented a steep learning curve for developers. Adding further complexity, the company’s APIs had to support multiple clients, which made it difficult to model interactions between front and backend systems, and make changes safely.
The company also had multiple different deployment strategies for its different production environments, which made development cycles slow—it could take weeks to make even a simple change to the company’s website, and handling seasonal peaks in website traffic was a major challenge.
After a careful review of all languages and application architecture options, they decided to rewrite the code bases using Scala and Akka Platform. Scala’s type safety provides developers with useful documentation, and acts as a safety net for error detection and refactoring at compile time. Meanwhile, Akka Platform’s web framework makes it easy to develop stateless applications that decouple the need for particular servers to handle particular requests, minimizing the impact of server failures. It also enables their development team to make code deployments during the day with increased business agility. Scala and Akka Platform also made it easier to loosen the coupling between their three back-end systems and the web site and other endpoints, making it possible to implement changes in one system without impacting another.
Their monolithic legacy architecture is now a modern service-oriented architecture with well-defined boundaries. For example, they built service layers that allow isolation of its client applications from failures on the backend, so backend service outages no longer cascade to the rest of the system. Additionally, developers can more easily roll out new features and bug fixes with four times the frequency. They can now deploy during business hours, rolling out updated software one server at a time, without taking its entire service offline. In the past, the team was required to deploy after midnight to reduce service interruption.
In a 12-month period after the move to Scala and Akka Platform, the client completed over 65 code deployments with no major issues or rollbacks. They have been using Akka Platform for more than two years to manage the payments systems for the casino, arcade, and vending machines on its ships, without a single crash. In any case of failure on the backend, the devices just “wait” and are still fully functional for passengers. All this leads to better passenger experiences and new revenue opportunities.