In this case study Keep Note Step 7, we will implement and deploy the application developed in step 6 as set of microservices communicating with each other.
The microservices should communicate with each other using Netflix-Zuul-API-Gateway and should be registered on nexflix-Eureka-naming-Server.
You should also use Netflix-Feign for microsesrvice communication and Netflix-Ribbon for client side load blancing .
In this step, we will create this application in five independently deployed Micro Services.
1. AuthenticationService
2. UserService
3. NoteService
4. CategoryService
5. ReminderService
######### Steps to be followed for implementing and deplying application as Micro Services
Select following port to run different MicroServices
Application Port
AuthenticationService 9100, 9101, 9102 User Service 9200 , 9201 Note Service 9300 Category Service 9400 ReminderRervice 9500 Spring Cloud Config Server 8888 Netflix Eureka Naming Server 8761 Netflix Zuul API Gateway Server 8765
=======================================
You should set following propertes for Microservices
spring.application.name= {{name of the application }} server.port= {{port number suggested above}}
eureka.client.service-url.default-zone=http://localhost:8761/eureka
#################################
To run application on multiple port
In Eclipse IDE -> Right Click application -> RunAs => Run Configuration
VM arguments
-DServer.port={{portnumber}}
--------------------------------------
Project should be created with Spring Initializer (start.spring.io) with follwing dependency
Web, DevTools, Feign, Ribbon, EurekaDiscovery , Zuul
JPA can be taken where persistance is required.
Note that For project EurekaNaming server
Port:8761
Spring Initializer dependency is Eureka Server and not Discovery
Step 1: Clone the boilerplate in a specific folder on your local machine and import the same in your eclipse STS
Step 2: Go thru the readme.md file and implement the code for AuthenticationService and run the test cases.
Step 3: Go thru the readme.md file and implement the code for UserService and run the test cases.
Step 4: Go thru the readme.md file and implement the code for NoteService and run the test cases.
Step 5: Go thru the readme.md file and implement the code for CategoryService and run the test cases.
Step 6: Go thru the readme.md file and implement the code for ReminderService and run the test cases.
Import point to be taken care in implementaion of MS
Step 7: All communication between different services should be done through Netflix-Feign and client side load balancing should be done using nexflix-Ribbon
The folders and files you see in this repositories, is how it is expected to be in projects, which are submitted for automated evaluation by Hobbes
Project
|
├── AuthenticationService // This is the microservice for User Authentication
├── NoteService // This is the microservice of Note
├── CategoryService // This is the microservice of Category
├── ReminderService // This is the microservice of Reminder
├── UserService // This is the microservice of User
├── .gitignore // This file contains a list of file name that are supposed to be ignored by git
├── .hobbes // Hobbes specific config options, such as type of evaluation schema, type of tech stack etc., Have saved a default values for convenience
├── .project // This is automatically generated by eclipse, if this file is removed your eclipse will not recognize this as your eclipse project.
└── pom.xml // This is the parent POM, which holds all the microservice projects.
PS: All lint rule files are by default copied during the evaluation process, however if need to be customizing, you should copy from this repo and modify in your project repo
-
Clone the base boilerplate in the folder assignment-solution-step7 of your local machine
git clone https://gitlab-cts.stackroute.in/stack_java_keep/KeepNote-Step7-Boilerplate.git assignment-solution-step6 -
Navigate to assignment-solution-step7 folder
cd assignment-solution-step7 -
Remove its remote or original reference
git remote rm origin -
Create a new repo in gitlab named
assignment-solution-step7as private repo -
Add your new repository reference as remote
git remote add origin https://gitlab-dev.stackroute.in/{{yourusername}}/assignment-solution-step7Note: {{yourusername}} should be replaced by your username from gitlab
-
Check the status of your repo
git status -
Use the following command to update the index using the current content found in the working tree, to prepare the content staged for the next commit.
git add . -
Commit and Push the project to git
git commit -a -m "Initial commit | or place your comments according to your need"git push -u origin master -
Check on the git repo online, if the files have been pushed
- We expect you to write the assignment on your own by following through the guidelines, learning plan, and the practice exercises
- The code must not be plagirized, the mentors will randomly pick the submissions and may ask you to explain the solution
- The code must be properly indented, code structure maintained as per the boilerplate and properly commented
- Follow through the problem statement shared with you
- You add the respective Mentor as a Reporter/Master into your Assignment Repository
- You have checked your Assignment on the Automated Evaluation Tool - Hobbes (Check for necessary steps in your Boilerplate - README.md file. ) and got the required score - Check with your mentor about the Score you must achieve before it is accepted for Manual Submission.
- Intimate your Mentor on Slack and/or Send an Email to learner.support@stackroute.in - with your Git URL - Once you done working and is ready for final submission.
*** Release 0.1.0 ***
- Right click on the Assignment select Run As -> spring boot app to run your Assignment.
- Right click on the Assignment select Run As -> JUnit Test to run your Assignment.