I personally manage the CI/CD infra as well as the data infrastructure for my startup.
Here is my setup:
1. Self-hosted Drone.io instance connected to github(the instance is behind a firewall and can only be accessed via a self-hosted VPN. Github IPs are whitelisted so that auto build/deployment can be initiated via github hooks)
I have drone.io config that helps me manange the versioning, deployment to stage/production, run tests, do rollbacks etc.
for eg: merging to master on github auto builds the master branch on drone and deploys to staging along with pulling the latest db backup from S3 and adding to stage for testing
2. Self-hosted production and staging server that hosts my web/django app. It has a local postgres db and is encrypted and backed up on S3 every hour.
3. Self-hosted Elasticsearch cluster using Ansible playbooks with daily snapshot backups to S3.
beyond this, I self-host 3 VPNs to protect my entire infrastructure. read my old HN comment about it: https://news.ycombinator.com/item?id=28671753
All this is one time infrastructure setup and it all has been running smoothly for more than a year without any hiccups.
I would be happy to help you setup a similar setup if you want. hit me up at vikash@quantale.io