General Information
The repository for this application (open on GitHub) has 666 stars and was forked 333 times. The codebase consists of 3117 lines of code and makes use of the following technologies:
Eureka Hystrix Maven Ribbon Turbine Zuul
Data Flow Diagram
Download the following model file here. Other formats are provided below.
{
"services": [
{
"name": "eureka",
"stereotypes": [
"service_discovery",
"infrastructural"
],
"tagged_values": {
"Service Discovery": "Eureka",
"Port": 8761
}
},
{
"name": "zuul",
"stereotypes": [
"gateway",
"load_balancer",
"infrastructural"
],
"tagged_values": {
"Gateway": "Zuul",
"Load Balancer": "Ribbon",
"Port": 8080
}
},
{
"name": "turbine",
"stereotypes": [
"monitoring_server",
"monitoring_dashboard",
"infrastructural"
],
"tagged_values": {
"Monitoring Server": "Turbine",
"Monitoring Dashboard": "Hystrix",
"Port": 8989
}
},
{
"name": "catalog",
"stereotypes": [
"internal"
],
"tagged_values": {
"Port": 8080,
"Endpoints": [
"/catalog",
"/{id}.html",
"/list.html",
"/form.html",
"/searchForm.html",
"/searchByName.html"
]
}
},
{
"name": "customer",
"stereotypes": [
"internal"
],
"tagged_values": {
"Port": 8080,
"Endpoints": [
"/form.html",
"/list.html",
"/{id}.html",
"/customer"
]
}
},
{
"name": "order",
"stereotypes": [
"internal",
"load_balancer",
"circuit_breaker",
"local_logging"
],
"tagged_values": {
"Load Balancer": "Ribbon",
"Circuit Breaker": "Hystrix",
"Port": 8080,
"Endpoints": [
"/",
"/form.html",
"/{id}",
"/line",
"/order"
]
}
}
],
"information_flows": [
{
"sender": "eureka",
"receiver": "zuul",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "user",
"receiver": "zuul",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "zuul",
"receiver": "user",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "turbine",
"receiver": "eureka",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "catalog",
"receiver": "eureka",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "customer",
"receiver": "eureka",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "order",
"receiver": "eureka",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "order",
"receiver": "catalog",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "order",
"receiver": "customer",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "order",
"receiver": "turbine",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "zuul",
"receiver": "customer",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "zuul",
"receiver": "catalog",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
},
{
"sender": "zuul",
"receiver": "order",
"stereotypes": [
"restful_http"
],
"tagged_values": {}
}
],
"external_entities": [
{
"name": "user",
"stereotypes": [
"user_stereotype",
"entrypoint",
"exitpoint"
],
"tagged_values": {}
}
]
}
Model Items
The Application consists of a total of 66 elements:
Element | Count |
---|---|
Services | 6 |
External Entities | 1 |
Information Flows | 13 |
Annotations | 46 |
Total Items | 66 |
Model Representations
Open the model in the following formats:
Traceability
Open the traceability information for all model items:
Security Rules
The following table shows the application’s adherence to the 17 architectural security rules. The last column provides model variants that adhere to the rule for each rule that is initially violated.
Rule ID | Verdict | Evidence | Model Variant |
---|---|---|---|
R1 | Evidence | ||
R2 | Evidence | Variant | |
R3 | Evidence | Variant | |
R4 | Evidence | Variant | |
R5 | Evidence | Variant | |
R6 | Evidence | Variant | |
R7 | Evidence | Variant | |
R8 | Evidence | Variant | |
R9 | Evidence | Variant | |
R10 | Evidence | Variant | |
R11 | Evidence | Variant | |
R12 | Evidence | Variant | |
R13 | Evidence | ||
R14 | Evidence | ||
R16 | Evidence | ||
R17 | Evidence | Variant | |
R18 | Evidence | Variant |
Evidence and explanations for rule decisions
R1
Rule is partially adhered to:
- The @EnableZuulProxy annotation is present,
- No Authorization Server present
- No Resource Server present
It is a single entry-point, nonetheless it is not authenticating/authorizing any incoming requests.
Artifacts:
- ZuulApplication.java: Line: 8
R2
Rule is violated: No authorization or authentication present due to no authorization
R3
Rule is violated: See rule 2.
R4
Rule is violated: See rule 2.
R5
Rule is violated: See rule 2.
R6
Rule is violated: See rule 2.
R7
Rule is violated: No mention of SSL, TLS, keystores or trust-stores in application.
R8
Rule is violated: See rule 7.
R9
Rule is violated: No central logging system is deployed.
R10
Rule is violated: See rule 9.
R11
Rule is violated: See rule 9.
R12
Rule is violated: See rule 9.
R13
Rule is adhered to: Hystrix Circuit Breaker enabled through @EnableZuulProxy annotation.
Artifacts:
- ZuulApplication.java: Line: 9
R14
Rule is adhered to: The gateway server uses load balancing via Ribbon to access dependent services through @EnableZuulProxy annotation.
Artifacts:
- ZuulApplication.java: Line: 9
R15
This rule is not applicable: Not a service mesh deployment.
R16
Rule is adhered to:
- Registry Service (Eureka Server) with @EnableEurekaServer present.
- Started in Docker Container through Compose, thus deployable on dedicated server
Artifacts:
R17
Rule is violated: No HTTP basic password listed in any YML-Configuration of format username:password@here-location-of-eureka-server at “eureka.client.serviceUrl.defaultZone”.
Artifacts:
- application.properties: Line: 6
R18
Rule is violated: No secret manager is deployed.