| Evaluation criteria | h | Justification |
p1 | Database per service | 1 | Since Spring offers packages for connecting to and manipulating most existing DBMS, it is fully compatible with this criterion. |
p2 | API Composition | 1 | Thanks to Spring’s data-flow starter, it is possible to compose APIs to obtain data. |
p3 | SAGA | 1 | Thanks to the JMS and ActiveMQ starter, Spring software can manage the events (transmission and reception) necessary for this criterion. |
p4 | Domain Event | 1 | Thanks to the JMS and ActiveMQ starter, Spring software can manage the events (transmission and reception) necessary for this criterion. |
p5 | Event sourcing | 1 | Thanks to the JMS and ActiveMQ starter, Spring software can manage the events (transmission, reception, subscription) necessary for this criterion. |
p6 | Testing of service components | 1 | Thanks to the Spring starter, especially the MOCK tool. |
p7 | Service Integration Contract Testing | 1 | Thanks to the cloud-contract starter, we test the integration of services. |
p8 | Multiple service instances per host | 1 | As soon as a JVM is installed on a host, Spring software can be launched and the execution port is dynamically assigned. |
p9 | Service instance per container | 1 | Thanks to the web-starter, Spring embeds its own web server, making deployment in a container extremely easy. |
p10 | Serverless deployment | 1 | Thanks to the dependency managers that exist in JAVA, it is possible to send just its source code for deployment. |
p11 | Externalized configuration | 1 | By a simple modification of the Spring configuration file, it is possible to tell it where to go to get its configuration, depending on the execution that is done. |
p12 | Remote Procedure Invocation (RPI) | 1 | As Spring uses JAVA, it embeds all the remote procedure calling techniques. |
p13 | Message exchange (Messaging) | 1 | Thanks to the JMS and ActiveMQ starter, services can exchange messages and subscribe. |
p14 | API Gateway | 1 | Spring boot offers starters to return data in almost any format including JSON, XML. |
p15 | Backends for frontends | 1 | Thanks to different starters allowing to create controllers (MVC) according to the call method, we can have several APIs per client. |
p16 | Service Registry | 1 | Several implementations are available including the most used eureka-zuul of netflix. |
p17 | Client-side service discovery | 1 | Several implementations are available including the most used eureka-zuul of netflix. |
p18 | Server-side service discovery | 1 | Several implementations are available including the most used netflix service-registry. |
p19 | Self-registration | 1 | Several implementations are available including the most used eureka-client of netflix. |
p20 | Circuit breaker | 1 | Several implementations are available including the most used Hystrix from netflix. |
p21 | Access token | 1 | By combining the security starter and the jjwt dependency of maven, we obtain a secure system by token. |
p22 | Log aggregation | 1 | Thanks to the sleuth starter and RabbitMQ, Spring allows a centralized management of the Log. |
p23 | Implementation measures | 1 | Thanks to the Actuator starter, it is possible to have the health status of the software at any time; thanks to available URLs, REST. |
p24 | Distributed tracing | 1 | Thanks to the sleuth starter and RabbitMQ, Spring allows for distributed log management. |
p25 | API Health Check | 1 | Thanks to the Actuator starter, it is possible to have the health status of the software at any time; thanks to available REST URLs. |
p26 | Composition of the page fragment on the server side | 1 | Using the thymeleaf starter, we can do server-side fragment composition and make a view functional. |
p27 | Composition of the client-side user interface | 0 | Spring is server only. |
Total | h = 1, 26 times & h = 0, 1 time |