In parallel computing, fork–join is a way of setting up and executing parallel programs, such that execution branches off in parallel at designated points in the program, to "join" (merge) at a subsequent point and resume sequential execution. Parallel sections may fork recursively until a certain task granularity is reached. Fork–join can be considered a parallel design pattern.
Name | Port | Description |
---|---|---|
bank-service | 9001 | Spring Boot Microservice |
user-service | 9000 | Spring Boot Microservice |
fork-join-demo | 4200 | Angular App |
api-gateway | 9500 | Zuul API Gateway |
clone the repository based on below maintained versions.
Branch/Version | Angular | Spring Boot | Spring Cloud |
---|---|---|---|
master | 7.0.0 | 2.1.2.RELEASE | Greenwich.RELEASE |
v1.0 | 5.0.2 | 2.0.3.RELEASE | Finchley.RELEASE |
v2.0 | 6.0.0 | 2.1.0.RELEASE | Greenwich.RELEASE |
- Clone the repository
git clone https://github.com/BarathArivazhagan/fork-join-springboot-angular.git
- Execute below script to build all the applications
cd fork-join-springboot-angular
./build.sh
- On windows, navigate to each applications and perform maven/webpack build
cd fork-join-springboot-angular
cd api-gateway
./mvnw clean package
cd bank-service
./mvnw clean package
cd user-service
./mvnw clean package
cd fork-join-demo
npm install
npm run build
- Start the applications
cd fork-join-springboot-angular
cd api-gateway
./mvnw spring-boot:run
cd bank-service
./mvnw spring-boot:run
cd user-service
./mvnw spring-boot:run
cd fork-join-demo
npm run start
Take advantage of docker compose to quickly build and run applications as containers.
- Build docker images
docker-compose build
- Run the applications
docker-compose up
To deploy the applications as docker containers inside kubernetes cluster
$ git clone https://github.com/BarathArivazhagan/fork-join-springboot-angular.git && cd fork-join-springboot-angular
$ kubectl create -f k8s/fork-join-deployment-k8s.yaml
configmap/spring-config-map created
configmap/api-gateway-config-map created
deployment.apps/user-app created
deployment.apps/bank-app created
deployment.apps/fork-join-api-gateway created
deployment.apps/fork-join-demo-app created
service/fork-join-api-gateway created
service/bank-service created
service/user-service created
service/fork-join-ui created
To deploy the applications as docker containers in openshift cluster
$ git clone https://github.com/BarathArivazhagan/fork-join-springboot-angular.git && cd fork-join-springboot-angular
$ oc login # login into a project
$ oc create -f openshift/fork-join-openshift-deployment.yaml
configmap "spring-config-map" created
configmap "api-gateway-config-map" created
deploymentconfig "user-service" created
deploymentconfig "bank-service" created
eploymentconfig "api-gateway" created
deploymentconfig "fork-join-angular" created
imagestream "bank-service" created
imagestream "user-service" created
imagestream "api-gateway" created
imagestream "fork-join-angular" created
service "api-gateway" created
service "bank-service" created
service "user-service" created
service "fork-join-angular" created
Note: Angular app uses nginx to serve static files. To run nginx as non root user in openshift, use fork-join-demo/Dockerfile.openshift to build angular app.
To delete all the resources created in openshift
$ oc delete dc --all && oc delete svc --all && oc delete configmaps --all