This project is a blog application built using a microservices architecture, leveraging Spring Security and various technologies to ensure robust and scalable functionality. The application is composed of seven distinct services:
- user-service: Manages user data and authentication.
- auth-service: Handles security with JWT and stores tokens in MongoDB.
- email-service: Sends email notifications, including user registration confirmation, using Kafka.
- post-service: Manages blog posts.
- discovery-service: Uses Eureka for service discovery.
- config-service: Manages configuration settings pulled from GitHub.
- api-gateway: Acts as the entry point for all client requests, routing them to the appropriate services.
- JWT Authentication: Utilizes JWT for secure user authentication, with tokens managed and stored in MongoDB.
- Email Confirmation: Employs Kafka to handle email notifications for user registration.
- Service Discovery: Eureka-server is used for dynamic service discovery.
- Centralized Configuration: Configurations are centrally managed in the config-server, which retrieves settings from GitHub.
- Microservices Architecture: Modular design using microservices for scalability and maintainability.
- Spring Security: For securing the services and managing JWT authentication.
- MongoDB: Used for storing tokens and user data.
- Kafka: For handling email notifications.
- Eureka: For service discovery.
- GitHub: For storing and retrieving configuration settings.
- Spring Boot: For building and running the microservices.
-
Clone the Repository
git clone https://github.com/your-username/your-repository.git
-
Set Up the Infrastructure**
# Navigate to the infra-setup directory cd infra-setup # Start the services using Docker Compose docker-compose up
-
**Run the services in this order
-
config-server
-
discovery-service
-
security-service
-
user-service
-
post-service
-
email-service
-
api-gateway
- Overview of Architecture and Technologies
- Monolith, SOA, and Microservices
- Docker
- Spring Security
- Kafka
- Discovery server
- Configurations Management
Project interview and technologies used
An explanation of Monolith, SOA, and Microservices architecture, their differences, and use cases.
A brief description of Docker, its importance, and how it's used in the project.
An overview of Spring Security, its features, and its implementation in the project.
An overview of Apache Kafka, its features, and its implementation in the project.
An overview of Netflix Eureka, its features, and its implementation in the project.
An overview of Spring cloud,Spring cloud bus, its features, and its implementation in the project.
An overview of Spring cloud gateway, its features, and its implementation in the project.