Building Microservices With A Customer-Centric Philosophy
Media and entertainment companies are operating in a market that has been turned upside-down by technological developments and forever evolving consumer expectations. As linear television and traditional cable lose ground to online streaming, broadcasters and operators must find new ways to adapt and innovate in the highly disrupted and contested pay TV landscape.
What’s more, the recent global health crisis has ushered us into a phase of unprecedented technological innovation and growth, with a recent report from Raconteur finding that 81% of IT professionals believe the COVID-19 pandemic has created the biggest technology pressure their organizations have ever faced.
One of the main driving factors behind this is changing customer expectations, which are driving 80% of digital transformation initiatives. By embracing customer-centric principles and new innovative business models, media and entertainment players can more easily navigate the challenges and opportunities posed by the current climate, bringing greater flexibility and efficiency to their operations.
The New Age of Mass Customization
Mass customization has long been heralded as the key to producing consumer products cost-effectively, largely driven by innovators in automotive, electronics, and footwear manufacturing. It is defined as the ability to design and manufacture customized products with maximum production efficiency and speed.
Times have certainly changed since you could have a Ford in any color as long as it’s black, yet still today new car owners are limited to a relatively few number of product customization options such as upgrading the in-car infotainment system, choosing from a wide selection of colors or adding a "sports pack."
Software development has followed a somewhat similar path, in that the developer produces a framework solution set for any given problem, designs a product around that and then enables some level of customization.
This can cause fairly significant challenges over time, particularly when modifying the products of individual customers. This often causes them to branch away from the core codebase, meaning they no longer receive the benefits associated with the productized platform.
Within this development paradigm, customers quickly find themselves with a system that is no longer based on a solid codebase, meaning they cannot benefit from roadmap upgrades, shared innovation, and maintenance. Meanwhile, they also have a system that lacks the benefits of fully custom development, such as control and ownership over code and feature set.
Unfortunately, this traditional approach to software development has become the de facto standard within the media and entertainment industry, and it is broken. Fortunately, there is a better approach to app development that we have proven to work and is breaking new ground for our media and entertainment customers.
Putting the Customer First
Customer-centric design has become an increasingly popular philosophy for product developers over the past two or three years. While this may sound like a sensible approach, it is not always clear what it means in practice. I believe there are a number of principles that software developers should adhere to when building new products that will ultimately give them the flexibility and efficiency to grow and adapt in the highly disrupted industry we operate in.
First, when building out a platform to enable flexible productization it is important not to become too fixated by one particular technology or toolset. While a particular innovation may be the best solution on the market right now, that doesn’t mean it won't be supplanted by a better one. There is always a new technology around the corner that will one day deliver a significant increase in functionality, power, flexibility, and speed of development.
Second, while customization is great, it requires a sophisticated process and architecture to enable it to work at scale.
For a software developer, a high level of customization can be delivered through building apps as a collection of customizable microservices. This methodology sees an application as a collection of services, which are each highly maintainable and testable throughout the development cycle. Being loosely coupled together, microservices can be both independently and jointly deployed, making it possible to organize them around any particular business capability or need.
Putting Microservices into Practice
The microservices approach is a proven and deliverable model that is already helping software developers massively reduce the inter-component complexity and dependency created by code branching. So, how does it work in practice?
Take, for instance, a subscription-based video distribution company that wants to migrate from a profit to a non-profit model. The monetization of the app would require changing from a subscription model to a charitable donation model, with a one-off "for life" payment. There are some highly complex rules that have to be adhered to when accepting charitable donations, and this switch would be a significant undertaking for any traditional software developer. Under the traditional development model, there would be a requirement to implement new code directly in the application, which would require a lot more dependency testing and be expensive in both time and money. When more complex changes are made over the lifetime of the application this could ultimately compromise the architectural integrity of the application.
With a microservices approach, which has a minimum dependency between the services, a software developer would be able to replace just the components that are needed to change and make the switch very quickly. More importantly, however, is that this change could be made without the risk of branching the client's code away from the underlying production platform, so that moving forward they can continue to gain from future product roadmap developments.
Not If, But When
It is inevitable that, sooner or later, every company streaming video will have specific needs that are critical for their business. At the same time, 95% of requirements are shared among all streaming media businesses. By adopting a customer-centric approach based on microservices, software developers can deliver scale, innovation, and stability on these common needs, while also offering the freedom to break free by customizing the 5% of the functionality and codebase enabling the customer to differentiate themselves from the competition, or fulfill unique business needs.
Developing software based on the customer's needs with a microservices architecture is the future of software development. Its advantages are not necessarily obvious to potential customers until they need to make a critical pivot in business model, or another customized change. Planning for this evolution has already begun. Now it’s time to implement it.