You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+74-55
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,56 @@
1
1
# Springy Store μServices
2
2
3
-
- This project is a development of a small set of Spring Bootbased Microservices projects, that implement cloud-native intuitive, design patterns and coding best practices.
3
+
- This project is a development of a small set of **Spring Boot** and **Cloud**based Microservices projects, that implement cloud-native intuitive, Reactive Programming, Event-driven, Microservices design patterns and coding best practices.
4
4
- 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 built and deployed.
5
-
-The project is using cutting edge technologies like Docker, Kubernetes, Elasticsearch Stack for logging and monitoring, Java SE 14, MySQL database, MongoDB, TDD, unit, integration & performance testing and Reactive Programming, and many more.
5
+
-This project is using cutting edge technologies like Docker, Kubernetes, Elasticsearch Stack for logging and monitoring, Java SE 14, MySQL, and MongoDB databases, all components developed with TDD in mind, covering integration & performance testing, and many more.
6
6
7
7
------
8
-
9
8
I am developing this project as stages, and all such stages are documented under project
10
-
**Springy Store μServices**[wiki page](https://github.com/mohamed-taman/Springy-Store-Microservices/wiki). Each of such stage will be a release in its owen, so you can go back and
11
-
forward
12
-
between releases to see the differences and how adding things solve specific problems we face.
9
+
**Springy Store μServices**[wiki page](https://github.com/mohamed-taman/Springy-Store-Microservices/wiki). Each of such stage will be a release in its own, so you can go back and
10
+
forward between releases to see the differences and how adding things solve specific problems we face.
13
11
14
-
For example; in the first stage (1st release) I just created project structure, basic services' skeleton, integration between them, and finally write integration testing as well as semi-automated testing for the whole services' functionality.
12
+
<u>For example;</u> in the first stage (1st release) I just created project structure, basic services' skeleton, integration between them, and finally write integration testing as well as semi-automated testing for the whole services' functionality.
15
13
16
-
At 1st stage the **Recommendation** and **Review** microservices generate local in-memory data
17
-
and **Store Service** calls the other three services (*Product*, *Recommendation*, and *Review*) statically to generate client aggregate response for a specific product. Therefore, in:
14
+
At the 1st stage the **Recommendation** and **Review** microservices generate local in-memory data and **Store Service** calls the other three services (*Product*, *Recommendation*, and *Review*) statically to generate client aggregate response for a specific product. Therefore, in:
18
15
19
16
- The second stage I will introduce **database integration**, then in (***done***)
20
17
- The third stage I will introduce **Dockerization** of our services and **docker-compose**, and in (***done***)
21
18
- The fourth stage I will introduce **service discovery**, and so on.
22
19
20
+
## System components Structure
21
+
Let's explain first the system structure to understand its components:
22
+
**Springy Store μService** --> *Parent folder.*
23
+
|- **config** --> *All system configuration files*
24
+
|- **docs** --> *All docs and diagrams.*
25
+
|- **store-base**
26
+
|- **store-build-chassis** --> *Super Parent POM, contains all build information*
27
+
|- **store-cloud-chassis** --> *Cloud services Parent POM, inherit from build contains all cloud libraries*
28
+
|- **store-service-chassis** --> *Parent POM, inherits from cloud contains all microservices common libraries*
|- **docker-compose.yml** --> *contains all services landscape with RabbitMQ*
40
+
|- **docker-compose-kafka.yml** --> *contains all services landscape with more instances working with Kafka with partitions*
41
+
|- **docker-compose-partitions.yml***--> contains all services landscape with more instances working with RabbitMQ with partitions*
42
+
|- **run-em-all.sh***--> Run all microservices in separate mode.*
43
+
|- **setup.sh***--> Install all shared POMs and shared libraries.*
44
+
|- **stop-em-all.sh***--> Stop all services runs in standalone mode.*
45
+
|- **test-em-all.sh***--> This will start all docker compose landscape and test them, then shutdown docker compose containers with test finishes (use switch start stop)*
46
+
47
+
Now as we have learned about different system components, then let's start.
48
+
23
49
## Getting started
24
50
25
51
The first stage aka (**Release v1.0**) is about creating and implementing a set of project Microservices.
26
52
27
-
### Creating a Set of Cooperating Microservices
53
+
### Creating a Set of Cooperating Microservices (Release v1.0)
28
54
29
55
The following topics are going to be covered in this 1st stage (other stages topics to be documented
30
56
in a
@@ -39,7 +65,7 @@ The following topics are going to be covered in this 1st stage (other stages top
39
65
- Adding automated tests of microservices in isolation.
40
66
- Adding semi-automated tests to a microservice landscape.
41
67
42
-
### System Boundary - μServices Landscape (Release 4)
68
+
### System Boundary - μServices Landscape (Release 4.5-Latest)
@@ -85,11 +111,9 @@ To build and run test cases for each service & shared modules in the project we
85
111
86
112
#### First: Build & Install Shared Dependencies
87
113
88
-
> This done only for the first time or any new version of shared modules.
114
+
> This done only for the first time or any new changes or versions of shared modules and POMs.
89
115
90
-
To build and install `store-build-chassis`, `store-utils`, `store-api`, `store-chassis` libraries
91
-
, from the root
92
-
folder `springy-store-microservices` run the following commands:
116
+
To build and install `store-build-chassis`, `store-utils`, `store-api`, `store-chassis` libraries, from the root folder `springy-store-microservices` run the following commands:
All the **services**, **databases**, and **messaging service** will run in parallel in detach
170
-
mode
171
-
(option `-d`), and
172
-
command output will print to the console the following:
195
+
All the **services**, **databases**, and **messaging service** will run in parallel in detach mode (option `-d`), and command output will print to the console the following:
173
196
174
197
```bash
175
198
Creating network "ssm_default" with the default driver
In browser point to this URL [http://localhost:5672/](http://localhost:5672/) `username: guest
190
-
` and `password: guest`, and you can see all **topics**, **DLQs**, **partitions**, and payload.
213
+
In browser point to this URL [http://localhost:5672/](http://localhost:5672/)`username: guest` and `password: guest`, and you can see all **topics**, **DLQs**, **partitions**, and payload.
191
214
192
-
1. For running 2 instances of each service and using _RabbitMQ with two partitions per topic_, use
193
-
the following
194
-
`docker-compose` command:
215
+
1. For running 2 instances of each service and using _RabbitMQ with two partitions per topic_, use the following `docker-compose` command:
0 commit comments