System requirements
List functional requirements for the system (Ask the chat bot for hints if stuck.)...
1) track physical activities
2) set goal
3) monitor progress
4) user login and session management
List non-functional requirements for the system...
1) scalability
2) availability
3) low latency
Estimate the scale of the system you are going to design...
Define what APIs are expected from the system...
User Management
method:-POST
path:-/users
request
{
"name":"Atul",
"mobileNo":"7018191116",
"email":"[email protected]",
"password":"",
}
http status code:- 200(ok)
response
{
"usercreated":"sucess"
}
2.Get user for profile section
method:-GET
path:-/user/{mobileNo}
response
{
"name":"Atul",
"mobileNo":"7018191116",
"email":"[email protected]",
}
Activity management
POST /activitiesGET /activities/{activityId}PUT /activities/{activityId}DELETE /activities/{activityId}POST /goalsGET /users/{userId}/goalsPUT /goals/{goalId}DELETE /goals/{goalId}the database design i have used relation i have made three table
one for user that store user specific data like person details and
after that there is activities tables that store list of activities opted my user . there is activity record in this table i will store activity data point .
user_id (PK), name, phone_no, email, password_hash, created_at, updated_atactivity_id (PK), user_id (FK), activity_type, start_time, duration, distance, calories, created_at, updated_atrecord_id (PK), activity_id (FK), timestamp, heart_rate, steps, created_at, updated_atNoSQL Database
You should identify enough components that are needed to solve the actual problem from end to end. Also remember to draw a block diagram using the diagramming tool to augment your design. If you are unfamiliar with the tool, you can simply describe your design to the chat bot and ask it to generate a starter diagram for you to modify...
there are 6 micro-services with different
1.user service-:
this service is responsible for driving user related logic and it intra with data base to store user data .
databases used
user database
2.
Activity service
the purpose of this service is handle user activities and store them in appropriate place.
database used
1) Activity database SQL
2) Activity data NoSQL
3.Goal service
the purpose of goal service is handle goal related component and driving there logics.
4. Analytics service
the purpose of this service to handle analytical queries based on user and business requirement.
this service also connect with cache service for better user experience
5. notification service:
the purpose of notification service is to user nudge based on the triggers from different services
6.message queue: its like kafka for publish and subscribe events.
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
The request flow is simple mobile app will call api gateway and api gateway send authenticated request to activity service
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
there are 6 micro-services with different
1.user service-:
this service is responsible for driving user related logic and it intra with data base to store user data .
databases used
user database
2.
Activity service
the purpose of this service is handle user activities and store them in appropriate place.
database used
1) Activity database SQL
2) Activity data NoSQL
3.Goal service
the purpose of goal service is handle goal related component and driving there logics.
4. Analytics service
the purpose of this service to handle analytical queries based on user and business requirement.
this service also connect with cache service for better user experience
5. notification service:
the purpose of notification service is to user nudge based on the triggers from different services
6.message queue: its like kafka for publish and subscribe events.
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?