Project Overview
This project is a microservices-based news platform demonstrating containerized application architecture and orchestration. It is built as a proof-of-concept for Internet Scale Applications coursework, thus doesn't have completed security features. It does showcase my ability to design, partition, and deploy a distributed system using DevOps practices.
Timeline: 2 weeks | Course: Internet Scale Applications
System Architecture
Technology Stack
- Containerization: Docker
- Orchestration: Kubernetes (single-node cluster)
- Database: MongoDB
- Routing: Apache (reverse proxy configuration)
- Deployment: pod-based architecture with service discovery
System Design
- Microservices Architecture: Decomposed monolithic application into 4 independent services
- Service separation: Each functional domain isolated for scalability and maintainability
- Container Orchestration: Kubernetes-managed deployment with pod-level isolation
- API gateway pattern: Apache reverse proxy routing requests to appropriate service endpoints
Services
- Articles: Manages articles including creating, updating, and linking to users
- Comments: Controls user comments left on articles
- User Authorization: Authentication and access management
- Ads: maintains ads and collects impression data
Implementation
The application was architected following domain-driven design principles, with each service:
- Maintaining its own data model and collection
- Exposing RESTful API endpoints
- Utilizing CRUD operations when interacting with the database
Infrastructure Design
- Cluster Configuration: Single-node Kubernetes cluster
- Nodes: Single node with 6 Docker images for each pod
- Pod Architecture: Individual pods per service and 2 additional for Apache configuration and frontend
- Routing Layer: Dedicated Apache pod handling ingress traffic and service routing
- Port Management: Internal service discovery with external port mapping
Learning Outcomes
System Architecture
- Designing microservices boundaries based on domain
- Implementing service-to-service communication patterns
- Benefits and drawbacks of distributed systems
DevOps and Infrastructure
- Container lifecycle and management
- Kubernetes orchestration: pods, services, deployments
- Reverse proxy configuration for API gateway functionality
- Port mapping
Full-Stack Integration
- End-to-end system design from database to frontend
- Cross-functional service coordination
- Database schema design for distributed systems
Back to Top