Micro Update backend.md#1
Open
yogeshpm273 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Microservices-based E-commerce System
Introduction
This project implements a microservices-based system for a simple e-commerce application. The system includes services for user authentication, product management, and order processing. Key features include concurrency control, clustering for high availability, and database integration.
Microservices Architecture
Services:
User Authentication Service
Manages user registration, login, and authentication.
Technology Stack: Spring Boot (Java)
Product Management Service
Handles CRUD operations for products.
Concurrency Control: Implemented optimistic locking.
Technology Stack: Spring Boot (Java)
Order Processing Service
Manages order creation, retrieval, and updates.
Technology Stack: Spring Boot (Java)
Concurrency Control
Optimistic Locking:
Implemented in the Product Management Service.
Ensures safe read and update of product information without conflicts.
Clustering and High Availability
Technology Used: Docker Swarm
Docker Swarm employed for clustering microservices.
Demonstrated high availability by deploying on multiple nodes.
Database Integration
Database Used: PostgreSQL
Stores user information, product data, and order history.
Database Schema: Designed for entities - users, products, orders.
APIs and Communication
RESTful APIs:
Endpoints for user registration, product CRUD, and order management.
Synchronous and asynchronous communication supported.
Authentication and Authorization
JWT Tokens:
User authentication and authorization implemented.
Users can only access their own orders and authorized product information.
General Requirements
Code Quality:
Clean, well-documented, and maintainable code.
Follows Spring Boot best practices.
Version Control:
Git used for version control.
Link to GitHub Repository
Error Handling:
Comprehensive error handling and logging in microservices.
Testing:
Unit tests for critical components and concurrency control mechanisms.
Deployment:
Instructions provided for deploying and running microservices locally or on a cloud platform.
Bonus Features (Optional)
API Rate Limiting:
Implemented to prevent abuse and ensure fair API usage.
Message Queues:
RabbitMQ used for asynchronous communication between microservices.
Caching Strategies:
Implemented caching to improve system performance.
Monitoring and Alerting:
Prometheus and Grafana set up for monitoring and alerting.
Assumptions
Assumed a reliable network environment for synchronous communication.
Assumed a containerized deployment environment with Docker installed.
Assessment Criteria
Your assignment will be evaluated based on:
Microservices Architecture: Properly structured and divided by functionality.
Concurrency Control: Effective control and maintenance of data integrity.
Clustering: Demonstrated high availability and clustering capabilities.
Code Quality: Clean, well-documented, and maintainable code.
Testing: Unit tests for critical components and concurrency control mechanisms.
Bonus Features: If implemented, they should enhance system functionality and performance.
Good luck with the assessment! If you have any questions, feel free to include them in the project documentation (backend.md).