Development
# 🚀 Deployments
This document outlines the deployment process, environments, and best practices followed at Darukaa to ensure smooth, reliable, and secure releases.
Deployment Environments¶
| Environment | URL | Purpose |
|---|---|---|
| Production | https://app.darukaa.com | Live environment for end users |
| Staging | https://staging.darukaa.com | Pre-production environment for final testing and QA |
| API Prod | https://api.darukaa.com | Production API endpoints |
| API Staging | https://api.staging.darukaa.com | Staging API for integration testing |
Deployment Workflow¶
- All deployments are triggered automatically using CI/CD pipelines on Google Cloud Platform (GCP).
- Pushes and merges to the
mainbranch trigger builds and deployments to Production. - Pushes and merges to the
developor feature branches deploy to Staging environments. - Deployment pipelines include:
- Running automated tests (unit, integration, e2e).
- Linting and code quality checks.
- Building frontend and backend artifacts.
- Deploying to respective GCP services (App Engine, Cloud Run, Cloud Functions).
Branching Strategy¶
- Use feature branches for development:
feature/<feature-name> - Bug fixes on branches:
bugfix/<issue-id> - Use pull requests (PRs) to merge changes to
developormainbranches. - Only approved PRs passing CI checks can be merged.
Database & Data Handling¶
- We currently use a single-instance database hosted on GCP.
- Be mindful when altering database schema or making migrations — coordinate with the backend team.
- Avoid any destructive operations without proper backups and approval.
Cloud Functions Deployment¶
- Cloud functions are deployed separately and automatically via CI/CD.
- Functions handle specific tasks and are triggered by events or schedules.
- Ensure that function code is isolated and includes necessary logging and monitoring.
Rollbacks and Incident Management¶
- Rollbacks can be triggered by redeploying the last known good version via the CI/CD pipeline.
- In case of incidents, notify the team immediately via Slack and start troubleshooting.
- Document post-mortems for significant incidents.
Best Practices¶
- Always verify deployments on staging before production release.
- Monitor deployment logs and health dashboards after each release.
- Communicate releases and changes in sprint demos or team channels.
- Keep deployment scripts and infrastructure-as-code up to date in repos.
If you have questions or want to improve the deployment process, please open an issue in the internal documentation repo.