Technical Overview of the “AdventureTube”
Introduction
The AdventureTube project is a full-stack application that demonstrates my expertise in software development, DevOps, and cloud infrastructure. This project integrates a microservice-based backend with a SwiftUI iOS application, leveraging modern technologies for scalability, security, and performance.
Key Technologies Used
AdventureTube combines a range of tools and frameworks across different areas of software development:
Backend Development
- Spring Boot & Microservices: Modular architecture using Spring Boot with RESTful APIs.
- Spring Security (OAuth2, JWT): Secure authentication and authorization mechanisms.
- PostgreSQL & MongoDB: Hybrid database approach for structured and unstructured data.
- Apache Kafka : Event-driven architecture for real-time processing.
- Eureka & Config Server: Microservice discovery and centralized configuration management.
Frontend (iOS) Development
- Swift & SwiftUI: Native iOS development with a modern, reactive UI framework.
- Combine Framework: Handles asynchronous data processing efficiently.
- Google Maps & YouTube API: Integrates location-based storytelling and video features.
DevOps & Deployment
- Docker & Docker Compose: Containerized microservices for consistent environments, ensuring reproducibility and isolation.
- Jenkins (CI/CD) with master with agent: Automates build, test, and deployment pipelines with multi-stage builds and integration testing.
- Raspberry Pi : 100% self host without cloud but easy publish to AWS or other cloud using Kubernetes for container orchestration.
- NGINX (Reverse Proxy) & Traefik: Load balancing, API gateway security, and automated TLS certificate management.
- Grafana & Prometheus: Monitoring and observability for system health and performance tracking.
- n8n Workflow with Slack : This will remove any repetitive or tedious job for documentation or even build process to reduce working time .
System Architecture
The AdventureTube architecture follows a microservices pattern, ensuring scalability, modularity, and fault isolation. Key architectural components include:
iOS Client App
- Communicates with backend services via secure API calls.
- Uses OAuth2 authentication via Google Sign-In.
Backend Services
- Handles authentication, user management, geospatial data, and media processing.
- Uses PostgreSQL for relational data and MongoDB for flexible document storage.
Message Queue System
- Kafka and RabbitMQ handle real-time notifications and data streaming.
- Enables asynchronous processing between microservices.
Infrastructure & Deployment
- Hosted on AWS EC2 & Raspberry Pi, with Dockerized microservices.
- Uses NGINX and Traefik as reverse proxies to manage incoming requests.
Security & Authentication
- Implements Spring Security with JWT & OAuth2.0 for robust user authentication.
- Uses Google Sign-In API for secure user login and authentication.
- Follows role-based access control (RBAC) to manage different user permissions.