June 3, 2025
Milestone M37 (May 19 - Jun 01)
Our existing usage-based billing system, built in-house, was becoming increasingly difficult to maintain and scale due to its complexity—especially in live data collection. We’ve now made significant progress in modernizing it:
Switched to Kubecost for accurate and reliable usage data from our Kubernetes clusters.
Discovered that Kubecost’s free tier is not viable for our scale and would require an Enterprise license.
Transitioned to OpenCost, a fully open-source alternative. It integrates well but still requires customization.
One limitation of OpenCost is its reliance on AWS for CPU/Memory unit costs. We are working on a mechanism to input custom unit pricing, factoring in AWS costs, system costs, and our margin.
OpenCost does not calculate charges for AWS services like Cloudwatch, so we are building custom modules to account for those.
Once finalized, the billing system will generate monthly email invoices for admin users.
Work on this module will continue in the next milestone.
Applications hosted on NeetoDeploy previously received internal node IPs instead of actual client IPs in the request headers—a long-standing issue. We’ve now resolved this by enabling Proxy Protocol, ensuring accurate client IP visibility for analytics, security, and auditing.
We dedicated this sprint to clearing a backlog of issues in NeetoCI, laying the foundation for upcoming work on the Onboarding module in NeetoDeploy. Key improvements include:
NeetoCI CLI: Fixed several bugs to improve usability.
Cluster Migration: Kubernetes was upgraded from version 1.28 to 1.31.
Performance Boost: Switched from kubectl to Kube Proxy for communication between the NeetoCI Dashboard app and the K8S cluster, significantly improving response times.
Stability: Resolved all Rack::Timeout issues, resulting in smoother operation.
The Slug Compiler (responsible for turning source code into deployable OCI images) experienced issues during rapid build triggers or sporadic restarts. We refactored the callback system to ensure:
Accurate status updates to the NeetoDeploy dashboard.
Reliable dyno restarts and GitHub status callbacks.
Overall stability in deployment tracking and state management.
Following our migration to AWS Cloudwatch, we addressed and fixed several outstanding issues:
Resolved missing logs and invalid log stream mappings.
Improved log security by hiding sensitive information from initial build phases—such as GitHub tokens and internal build details—making logs more relevant and secure for application teams.
Let's get started now.