New class of customer services are being driven by microservices and fast data
The weight loss industry leader’s new class of customer services are being driven by microservices and fast data
About the customer
The Weight Loss Industry Leader founder are a global wellness technology company inspiring millions of people to adopt healthy habits for real life. They do this through engaging digital experiences, face-to-face workshops and sustainable programs that encompass healthy eating, physical activity and positive mindset. By drawing on over five decades of experience and expertise in behavioral science, they build communities in order to deliver wellness for all.
The company is a prime example of how, as “software eats the world,” traditional businesses are forced to modernise with technology. Over the last decade, with the spawn of wearable devices and smartphones, countless thousands of consumer apps have been launched that tackle everything from weight loss to fitness data to food tracking. Consumers have become very savvy in using their phones to track diet, exercise, and analytics to measure their progress.
To remain a leader in the weight loss industry, they knew that it needed to deliver its proven weight loss programme and be the leader in delivering apps and digital experiences. For more than 20 years, the company had been slowly building out digital services to support its users, but competitive demands were accelerating the pace.
They had become a software company, where its competitive edge was staked on its ability to continuously ship new apps and functionality to attract new users and maintain its dedicated following.
But the old .NET monolith was dead weight
As competitive pressures mounted, they had some extra weight of its own that it needed to address: it’s legacy .NET monolith. The .NET monolith became increasingly difficult to scale through the years of software accumulation. And more concerning, the monolith was hamstringing the company’s ability to rapidly deploy new features to match the pace of its developer’s release cycles.
“We realised that the old way of doing business for us wasn’t going to work in the modern world. We made a commitment to modernise our stack to introduce new features faster, respond to customer feedback more quickly, and provide beta programs and testing with our members.”
Michael Lysaght, CTO
Microservices and NashTech bring developer agility
In 2015, the company embarked on a mission to modernise its software stack, to support the new realities of continuous development. At the heart of its efforts were a new website and a new mobile app that allowed customers to track the food they eat, input weight and lifestyle information, and give them real-time data to crunch and re-calculate customised weight loss programs for each member. From user conveniences, like the ability to barcode scan food at the supermarket and track meals, to more holistic considerations around how they would ingest data from other user devices. The re-platforming vision was a core set of microservices that would simplify developer creation of new services without the drag of monolith dependency and scale concerns.
They have created 12 different microservices — all written in Scala using the Play Framework and also using Akka, and built on top of the Cassandra database. Each microservice provides its own REST API to power aspects of client applications that allow customers to track food, enter data, and follow a calculated, customised weight loss program.
The team favours Play Framework for its simplicity and performance – it doesn’t require a lot of detailed knowledge to understand how to use it, and as a mature framework it’s very easy to get up and running. This made it ideal for building out their REST APIs as a set of highly available microservices.
The Actor abstraction provided by Akka offered a simple way for them to handle slow operations like external HTTP calls or writes to the database in a non-blocking, concurrent manner. Actors make it very easy to perform concurrent operations to avoid race conditions, unnecessary thread-blocking, and other common concurrency issues. They found Actors particularly useful for reading from/writing to Kinesis event streams.
What the company Like About …
- High Productivity – Simple concise syntax, rapid development, strong type system
- Great with concurrency – Because of immutability, Futures and Actors.
- Java interoperability – Allows re-use of Java libraries, JVM tooling, etc.
- Simple to use
- Great for creating REST APIs
- Highly performant in microservices and streaming data architectures
- Powerful multi-threading capabilities
- Concurrency abstractions are well-suited for event streams
- Capabilities to bulkhead code and scale without re-writes
- Easy/fast to implement monitoring
- Very useful for performance tuning of applications, identifying bottlenecks, etc.
- Integrates well with visualisation tools
- Very responsive
- Very helpful with deep knowledge of all aspects of the NashTech stack
- Great for general Scala advice
The modernised stack
Time to release updates
Typically 3-4 hours, often requiring application downtime.
< 20 minutes to release a service update with no downtime
Ability to scale
Scaling up is a very slow labour-intensive manual process, requiring cloning and customisation of hardware, code deployments and testing. This typically takes days to implement.
Can horizontally scale a service up or down in minutes as a fully automated process. Soon will be able to automatically scale up or down in response to demand.
A hotbed for developer innovation and a great culture for Scala developers
Today with its microservices architecture, they have become a nimble development organisation focused on expanding customer services based on real-time data and integrating various other devices. The company’s #1 engineering focus is its member experience and building best-in-class applications with emerging frameworks. As of Q4 2016, they saw five consecutive quarters of recruitment growth, with 2.6 million end-of-period subscribers.
“We want to continue to use Fast Data to be very responsive to our customers. We’re interested in all aspects of Fast Data – event streaming, data analytics, and real-time ingest. NashTech Reactive Platform and our microservices architecture enable us to pursue these new opportunities to bring value to our members.”
Nick Smith, Senior Engineering Manager