Proposed: Transition to Dokku from Kubernetes Proposal
Overview
This proposal outlines the transition of our backend services from Kubernetes to Dokku, aiming to reduce complexity and maintenance costs.
Context
Dokku is a minimalistic, open-source PAAS that provides a cost-effective alternative to Heroku. Our current use of Kubernetes has become prohibitively complex and expensive.
Problem Statement
We aim to migrate our backend services from Kubernetes to Dokku to simplify operations and reduce expenses.
Implementation Details
Services Migration
- PostgreSQL: Deploy using the Dokku PostgreSQL plugin.
- File Object Store: Implement an S3 compatible storage solution within Dokku.
- Elixir “Uro” Backend: Ensure seamless deployment and operation of our Elixir application on Dokku.
- Caddy: Set up Caddy as a web server and reverse proxy for secure HTTP and SSL management.
- RabbitMQ: Integrate RabbitMQ for robust messaging and queuing capabilities.
- Backups: Implement an S3 compatible backup storage solution.
- Telemetry: Use OpenTelemetry for monitoring and tracing by integrating it with Signoz as outlined in this guide.
Code Example
# Install Dokku plugins
dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
dokku plugin:install https://github.com/dokku/dokku-rabbitmq.git rabbitmq
# Create PostgreSQL service
dokku postgres:create my-database
# Create RabbitMQ service
dokku rabbitmq:create my-messaging-service
# Deploy Elixir application
git push dokku master
# Setup OpenTelemetry
# Follow the specific instructions from the Signoz guide
Benefits
- Cost Efficiency: Significant reduction in operational and maintenance costs.
- Simplicity: Streamlined management and deployment processes.
- Scalability: Adequate scaling capabilities without Kubernetes’ overhead.
- Security: Enhanced security features with automatic SSL through Caddy.
- Reliability: Dependable inter-service communication with RabbitMQ.
Potential Downsides
- Feature Limitations: Dokku may not support all Kubernetes features.
- Migration Challenges: Initial hurdles in transferring services and data.
Alternatives Considered
- Persisting with Kubernetes despite its drawbacks.
- Adopting other PAAS solutions like Heroku or AWS Elastic Beanstalk.
Special Considerations
Handling very high traffic levels might require additional Dokku configurations, which are inherently simpler in Kubernetes.
Project Management
The transition will be managed internally by our development team.
Current Status
Status: Proposed
Decision Makers
- V-Sekai development team
Further Information
- V-Sekai GitHub - Explore more about V-Sekai’s initiatives on social VR.
- V-Sekai Game Repository - Official repository for the V-Sekai game project.
- TigrisData
Assisted by AI assistant Aria.