ARCHITECTURE CANDIDATES Clause Samples

ARCHITECTURE CANDIDATES. As the CPN platform needs to offer multiple services to different client applications, as clearly explained in both the project objectives and the first phase of requirements elicitation, a service- oriented architecture needs to be defined. There are several types of services architectures: from the generic SOA (service-oriented architecture) to its more specific MSA implementation (microservices architecture). Figure 1: From monolithic applications to microservices5 We took these two types into consideration and analyzed what would be best choice for the CPN platform. 5 ▇▇▇▇▇://▇▇▇.▇▇▇.▇▇▇/developerworks/websphere/library/techarticles/1601_clark-trs/1601_clark.html A Service Oriented Architecture is a software architecture pattern, where application components provide services to other components via a communication protocol over a network. The communication can involve either simple data passing or it could involve two or more services coordinating connecting services to each other. Services (e.g., RESTful Web services) typically carry out some small functions, such as validating an order, activating an account, or providing shopping cart services. There are 2 main roles in SOA: a service provider and a service consumer. A software agent may play both roles. The Consumer Layer is the point where consumers (human users, other services or third parties) interact with the SOA and the Provider Layer consists of all the services defined within the SOA. Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. The microservice architecture enables the continuous delivery/deployment of large, complex applications, composed of small, independent processes communicating with each other using language-agnostic APIs. It also enables an organization to evolve its technology stack.6 In a microservice architecture a service should be independently deployable, or be able to shut-down a service when is not required in the system without affecting any other service. Both architectures have similar pros and cons and some differences. In both architectures, each service - unlike a monolithic architecture - has a certain responsibility. Thus, services can be developed in various technology stacks, which brings technology diversity into the development team. The development of services can be organized within multiple teams, howeve...