Creativa - Fotolia
A cloud content services approach distributes core functions of the CMS to separate microservices units for use by modules of an integrated stack or independent applications using common APIs. Those units might include content tagging services, device-specific content rendering services or information rights management services governing who can see what content.
Microservices are the natural evolution of a reductionist approach to computer programming. Early programs, and hence applications, were monolithic -- built as large single units. As programming languages evolved, so did the idea of breaking the programs up in to smaller pieces, using capabilities known as subroutines and functions. These subroutines and functions could physically exist in different program files, each having its own development lifecycle.
Cloud microservices models take those subroutines and spin them off independently so that capabilities of applications are broken into small units and distributed throughout the computing resources of the cloud. These units provide specific functionality and cooperate through message passing.
Cloud content services emerge
Content management systems (CMSes) -- also, historically, server-based monolithic applications -- evolved along with industry trends. Vendors separated layers of the application, both between server and desktop, as well as across multiple servers for search, content storage and indexing.
The emergence of the web facilitated additional layering and standardization where application capability could be further distributed, leading to the idea of general-purpose web services with defined functionality and message passing rules.
Cloud computing facilitated and necessitated a more general-purpose distribution of computing resources, enabling virtualization of processing, memory and storage space. Software programming and application architectures continue to evolve, making use of this distributed computing environment and spawning the microservices architecture. Cloud content services today make use of that architecture, as IT-agile organizations take advantage of APIs and connections that move content from repositories to end-user devices. As content management is a mature technology, some companies using legacy systems are just starting with the microservices model.
Different types of microservices
Microservices tend toward single-function units, or modules, with well-defined purpose and interface definition -- the description of the messages (data and formats) that are passed between microservices.
The microservices interface definition is critical and analogous to specifications within the manufacturing industries. Anyone can produce any component of a car, provided the component adheres to an agreed specification, such as size, color, material and thread dimensions; and anyone can produce a microservice that works within a cooperating larger system, provided it adheres to a specification.
A microservices approach to building a web-based shopping site might consist of:
- user email address and password validated by the authentication microservice;
- buy-again recommendations determined by the shopping habits microservice;
- shopping categories menu options ascertained from the store categories microservice;
- similar items shown from the product matching microservice;
- items added to the shopping cart with the cart management microservice;
- credit card authenticity confirmed with the card payment microservice; and
- product star ratings set with the rankings
Microservices provide opportunities for software vendors and developers to produce generalized and reusable pieces of software functionality, either for their own use or use by other vendors and developers. Microservices also support a separation of the content from the CMS itself toward shared data lakes populated with information from potentially disparate CMS sources and available to be processed holistically by a variety of interested parties from marketing, e-commerce, sales and service areas.
Content microservices, often delivered through content services platforms, also enable technology for headless CMS, where the CMS itself is just the back-end repository and content processing logic, leaving developers to create their own interfaces on devices and channels relevant to business and consumer needs.
A microservices architecture approach requires many considerations, including:
- increased scaling, performance and resilience as microservices providing the same functionality can exist multiple times across different environments;
- added agility through smaller, simpler functioning program units with frequent releases that can be developed by different teams; and
- improved reusability by encapsulating commonly used functionality as a microservice.
- higher complexity needing to agree on message passing formats, error handling and overarching application design;
- complexity of testing and configuration management of the microservice estate; and
- maintaining data consistency as complex data transactions may be split and handled by different microservices.
A microservices architecture is not a panacea. It is an approach and natural evolution of techniques to solve the challenges presented in delivering performance, functionality, reliability and cost of service across business, commercial and social computing needs. Cloud content services, however, can help companies deal with the long-standing problem of serving lightweight content to a host of devices without forcing cumbersome loading -- especially to mobile devices.