The main goal of the CPN project is to create innovation in the way content creators can structure content production, distribution and in-depth interaction with audiences. To do this, CPN will realize an innovative Open Virtual Platform. This means that the platform will be 'open' to future third-party integrations and that it is not intended to be a physical system which media companies should install, but as a 'virtual' platform which can be adapted to the needs of media companies by connecting different services together.
These characteristics are very important because they will allow the platform to be reused even outside the CPN project and above all they will give the opportunity to enrich the CPN platform with more features in the future.
A reference architecture is a 'template solution' for an architecture implementation. It consists of a list of functions, indications and rules for interactions among the components within the architecture and with external services.
It is defined at different layers of abstraction and it is described through some 'views' that allow a better understanding of the architecture.
In CPN, the Reference Architecture document contains the guidelines and the template of the architecture that will be used to develop this Open Virtual Platform.
In particular the document describes the design and implementation choices to obtain a flexible and extensible architecture, and the guidelines for implementation, deployment and communication among components.
To talk about microservices, we must probably start talking about Service-Oriented Architecture (SOA). A service-oriented architecture is essentially a collection of web services, usable independently, that collaborate with each other to satisfy a business process.
Microservices architecture is a variant of standard SOA, that structures an application as a collection of loosely coupled services (microservices).
Microservices is an approach to application development in which a large application is built as a suite of modular services. Each module supports a specific business goal and uses a simple, well-defined interface to communicate with other sets of services.
After a thorough analysis and comparison of different architecture candidates, we have chosen the microservices architecture, which offers a series of benefits that are well suited for the CPN platform requirements:
- The microservices can be independently developed and deployed. This allows for the smooth integration of different components for platform functionalities, even if these are developed by different project partners, which will be the case in CPN.
- The microservices are designed to offer a range of 'micro' capabilities that group themselves to cover a variety of platform use scenarios.
- The microservices do not bind the platform to the use of a given technology stack*, but makes it interoperable with different operating systems.
- The microservices architecture lends itself well to both the creation of new services and the implementation of new processes, even after the deployment of the architecture. This meets the criteria of interoperability, flexibility and openness of the platform.
* A technology stack is a set of software providing the computers' infrastructure (for example the operating system)
Implementation of the microservices architecture
The image below is the 'Implementation View' of the CPN platform. This view is one of the possible views that allows to describe the architecture. In particular, it describes a possible implementation of the platform through microservices architecture. In addition to microservices, we can see the communication modules (Orchestrator for synchronous communication and Message Broker for async one) and the API Gateway, that allows external client applications to interact with the platform.
Finally, a blockchain instance is represented, which is used by some modules on the platform.
The implementation of the microservices architecture will follow specific design patterns to ensure the efficiency, stability and scalability of the system.
These tools, indeed, besides being open source, have a large community behind them and this will allow to make the platform more easily extensible.
In this article, we have seen the main goals of the CPN Platform and as a Reference Architecture document, it can be useful to reach them.
In particular, we have described the benefits of a Microservices Architecture and a possible implementation of the platform through this architecture.
Following this document and the instructions it provides, in the next steps of the project we will implement the first version of the platform.