{"id":20471591,"url":"https://github.com/backbase/golden-sample-services","last_synced_at":"2025-07-27T06:39:07.035Z","repository":{"id":36988805,"uuid":"285543431","full_name":"Backbase/golden-sample-services","owner":"Backbase","description":"This project is a development of a small set of [Backbase Service SDK](https://community.backbase.com/documentation/ServiceSDK/latest/index), Spring Boot and Spring Cloud based Microservices projects that implement microservices design patterns, cloud-native recommendations, and coding best practices.","archived":false,"fork":false,"pushed_at":"2024-12-19T13:20:34.000Z","size":28321,"stargazers_count":43,"open_issues_count":26,"forks_count":21,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-02-08T00:02:50.644Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Backbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-06T10:38:13.000Z","updated_at":"2025-01-22T09:52:43.000Z","dependencies_parsed_at":"2023-02-19T03:00:31.540Z","dependency_job_id":"e7149969-be29-4e52-827b-29a91d50bec8","html_url":"https://github.com/Backbase/golden-sample-services","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fgolden-sample-services","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fgolden-sample-services/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fgolden-sample-services/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fgolden-sample-services/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Backbase","download_url":"https://codeload.github.com/Backbase/golden-sample-services/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238053511,"owners_count":19408702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T14:16:34.692Z","updated_at":"2025-02-10T04:02:57.722Z","avatar_url":"https://github.com/Backbase.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Backbase](logo-white.svg#gh-dark-mode-only)\n![Backbase](logo-black.svg#gh-light-mode-only)\n\n# Backbase Golden Sample MicroServices system\n\n- This project is a development of a small set of [Backbase Service SDK](https://community.backbase.com/documentation/ServiceSDK/latest/index) (**Spring Boot** and **Cloud**) based Microservices projects that implement cloud-native intuitive, Microservices design patterns, and coding best practices.\n- The project follows [**CloudNative**](https://www.cncf.io/) recommendations and the [**twelve-factor app**](https://12factor.net/) methodology for building *software-as-a-service apps* to show how μServices should be developed and deployed.\n- This project uses technologies used in broadly Backbase like Docker, Kubernetes, Java SE 11, Spring Boot, Spring Cloud, \nTestContainers and Liquibase among others, all components covering integration \u0026 performance testing, and many more.\n - This project is going to be developed as stages\n---\n## Description\n### System Structure\nLet's explain first the system structure to understand its components:\n```\nBackbase Golden Sample --\u003e Parent folder. \n|- config --\u003e All system configuration files \n|- config-server --\u003e Centralized Configuration server\n|- diagrams --\u003e All docs and diagrams. \n|-charts --\u003e Helm Charts for easy deployment in k8s\n  |- product\n  |- review\n  |- store\n|-database \n  |- assembly \n  |- docs  \n  |- product-db\n  |- review-db\n|-api \n  |- product-api  \n    |- src/main/resources\n       |- product-integration-api-v1.yaml\n       |- product-service-api-v1.yaml\n  |- review-service-api \n    |- src/main/resources \n       |- openapi-v1.yaml\n  |- store-client-api  \n    |- src/main/resources \n       |- openapi-v1.yaml\n|-services \n  |- product --\u003e Product Microservice \n  |- review --\u003e Review Microservice \n  |- store --\u003e Store Microservice \n|- docker-compose.yml --\u003e contains all services landscape including infra like MySQL, RabbitMQ, Zipkin, Prometheus, etc \n```\nNow, as we have learned about different system components, then let's start.\n\n### System Boundary - Microservices Landscape\n\nThe microservice-based system landscape that we will use it consists of two core microservices, the Product, \nReview and services, all of which deal with one type of resource, and a composite microservice called the Product Composite service, which aggregates information\n\n![System Boundary](diagrams/system.png)\n\nTo keep the source code easy to understand, they have a minimal amount of business logic. \nThe information model for the business objects they process is kept minimal for the same reason. \nIn this section, we will go through the information that's handled by each microservice, plus infrastructure-related \ninformation that microservices handle.\n\n\n#### Product service \nThe product service manages product information and describes each product with the following attributes: \n* Product ID \n* Name \n* Weight\n* Creation Date\n\n#### Review service \nThe review service manages product review and stores the following information about each review: \n* Product ID \n* Review ID \n* Author \n* Subject \n* Content\n\n#### Store service\nThe store service is a product composite service that aggregates information from the core services and \npresents information about a product as follows: \n* Product information, as described in the *product* service \n* A list of product reviews for the specified product, as described in the *review* service \n\n\n### Required software\n\nThe following are the initially required software pieces:\n\n1. **Backbase SDK**\n\n2. **Git**: it can be downloaded and installed from https://git-scm.com/downloads.\n\n3. **Java 21 EA**: it can be downloaded and installed from https://jdk.java.net/21/.\n\n4. **Spring Boot Initializer**: This *Initializer* generates *spring* boot project with just what you need to start quickly! Start from here https://start.spring.io/.\n\n5. **Docker Desktop**: The fastest way to containerize applications on your desktop, and you can download it from here [https://www.docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop)\n\n   \u003e For each future stage, We will list the newly required software. \n\nFollow the installation guide for each software website link and check your software versions from the command line to verify that they are all installed correctly.\n\n## Using an IDE\n\nWe recommend that you work with your Java code using an IDE that supports the development of Spring Boot applications such as Spring Tool Suite or IntelliJ IDEA Ultimate Edition. So you can use the Spring Boot Dashboard to run the services, run each microservice test case, and many more.\n\nAll that you want to do is just fire up your IDE **-\u003e** open or import the parent folder `backbase-golden-sample,` and everything will be ready for you.\n\nLombok plugin is required for your IDE: https://projectlombok.org/setup/overview\n\n## Playing With Backbase Golden Sample Project\n\n### Cloning It\n\nThe first thing to do is to open **git bash** command line, and then simply you can clone the project under any of your favorite places as the following:\n\n```bash\n\u003e git clone \n```\n\n------\nThis project will be developed in steps, and each such step will be a release in its own, so you can go back and forward between versions to see the differences and how adding things solve specific problems we face.\n\nThe main idea of the project for now is three microservices: **Store**, **Product** and **Review**. **Product** and **Review** microservices are CRUD applications saving data in a MySQL Database, and **Store Service** calls the other two services (*Product* and *Review*) statically to generate client aggregate response for a specific product. \n\n### Steps\n\nhttps://github.com/Backbase/golden-sample-services/issues\n\n- [ ] Step 1: create project structure, essential\n               services' skeleton, integration between them, and finally, write integration testing as well as semi-automated testing for the complete services' functionality.\n- [ ] Step 2 Add **openAPI** specs and generate code from them\n- [ ] Step 3 Add data layer\n    - [ ] **database integration** \n    - [ ] and **Liquibase**       \n- [ ] Step 4 Add **Dockerization** of our services and **docker-compose**\n- [ ] Step 5 Add **External config** using Spring Cloud Config\n- [ ] Step 6 Introduce **service discovery**\n- [ ] Step 7 Introduce Security via **Backbase Identity**\n- [ ] Step 8 Introduce **Multitenancy** via https://community.backbase.com/documentation/ServiceSDK/latest/multitenancy_configuration\n- [ ] Step 9 events and https://www.asyncapi.com/\n- [ ] Step 10 Introduce Resilience\n- [ ] Step 11 Introduce Helm Charts\n\n## Getting started\n\nThe first stage, aka (**Release v1.0**), is about creating and implementing a set of Microservices exposing a RestAPI \nand with Database access.\n\n### Creating a Set of communicating Microservices (Release v1.0)\n\nThe following points are covered in this 1st stage (other stages topics will be documented in each release notice):\n\n- Introducing the microservice landscape as a diagram.\n- Generating skeleton for **Store**, **Product**, and **Review** microservices.\n- Adding RESTful APIs.\n- Adding Data layer\n- Developing automated microservices integration tests in isolation.\n- Developing Blackbox automated tests to the microservice landscape.\n\n#### Resources\n- We will add more business concepts while keeping the project software stack updated to the most recent software versions. \nBesides, adding more use cases and problems, ours teams are facing in a day by day work.\n- The book [Hands-On Microservices With Spring Boot and Spring\n   Cloud book by Packt Publishing](https://www.packtpub.com/web-development/hands-on-microservices-with-spring-boot-and-spring-cloud).\n- [CloudNative](https://www.cncf.io/) recommendations.\n- [Twelve-Factor application](https://12factor.net/).\n- [Spring Cloud framework](https://spring.io/projects/spring-cloud).\n- [Spring Boot framework](https://spring.io/projects/spring-boot).\n\n#### Contributions\n\nPlease create a branch and a PR with your contributions.\nCommit messages should follow [semantic commit messages](https://seesparkbox.com/foundry/semantic_commit_messages)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fgolden-sample-services","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbackbase%2Fgolden-sample-services","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fgolden-sample-services/lists"}