Spring PetClinic Microservices, mapped from the code.
The Spring PetClinic split into Spring Cloud microservices: a config server, discovery, an API gateway and the customers, vets and visits services. Kuuhaku read its source at commit a05f4fb, with no configuration and no hand-fixing, and found 7 services in Java and 14 connections: 14 over HTTP. Each one below says how it was found.
Services
Every repo or deployable the scanner found, with how many connections leave it and reach it.
| Service | Stack | Role | Calls | Called by |
|---|---|---|---|---|
config_server | Java · Spring Boot | service | 0 | 6 |
discovery_server | Java · Spring Boot | service | 1 | 5 |
api_gateway | Java · Spring Boot | service | 5 | 0 |
customers_service | Java · Spring Boot | service | 2 | 1 |
vets_service | Java · Spring Boot | service | 2 | 1 |
visits_service | Java · Spring Boot | service | 2 | 1 |
admin_server | Java · Spring Boot | service | 2 | 0 |
Connections
config: the address is written in configuration (an env file, a compose file, a proxy route) and the call is matched to it. inferred: the call's path matches a route of the target and nothing contradicts it. Call sites count the places in the code that make the call.
| From | To | Type | Evidence | Call sites | How it was found |
|---|---|---|---|---|---|
admin_server | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml |
admin_server | discovery_server | HTTP | config | — | tcp://discovery-server:8761 in docker-compose.yml |
api_gateway | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml |
api_gateway | customers_service | HTTP | config | 10 | URL worked out at src/main/java/org/springframework/samples/petclinic/api/application/CustomersServiceClient.java:34 |
api_gateway | discovery_server | HTTP | config | — | tcp://discovery-server:8761 in docker-compose.yml |
api_gateway | vets_service | HTTP | config | 1 | URL worked out at src/main/resources/static/scripts/vet-list/vet-list.controller.js:7, through the /api/vet route in src/main/resources/application.yml |
api_gateway | visits_service | HTTP | config | 3 | URL worked out at src/main/java/org/springframework/samples/petclinic/api/application/VisitsServiceClient.java:42 |
customers_service | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml |
customers_service | discovery_server | HTTP | config | — | tcp://discovery-server:8761 in docker-compose.yml |
discovery_server | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml; tcp://config-server:8888 in docker-compose.yml |
vets_service | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml |
vets_service | discovery_server | HTTP | config | — | tcp://discovery-server:8761 in docker-compose.yml |
visits_service | config_server | HTTP | config | 2 | CONFIG_SERVER_URL defaults to http://localhost:8888/; http://localhost in src/main/resources/application.yml; configserver:http://config-server in src/main/resources/application.yml |
visits_service | discovery_server | HTTP | config | — | tcp://discovery-server:8761 in docker-compose.yml |
Left for a person
1 item the scanner would not settle on its own and put in the review inbox instead of guessing:
httpinapi_gateway: base URL assigned at runtime (src/main/resources/static/scripts/owner-details/owner-details.controller.js:7)
Other systems
- OpenTelemetry Demo: 23 services, 30 connections
- Train Ticket: 48 services, 140 connections
- Online Boutique: 12 services, 16 connections
- eShop: 19 services, 31 connections
- Robot Shop: 9 services, 12 connections
- Sock Shop: 8 services, 7 connections
- Bank of Anthos: 8 services, 9 connections
- Quarkus Super Heroes: 7 services, 6 connections
Your own system
Run npx kuuhaku scan . in a folder of repos: it reads the code on your machine and only the graph leaves it. Or connect GitHub or Bitbucket and let the hosted runner scan with a read-only key. The map, a page per repo, a review inbox and a check on every pull request follow. Start free.