Hi everyone! Given the challenges with developing on microservices, I have an idea for a framework and wanted to get feedback from the community on whether this would world or not, and how valuable it would be to dev teams. Your thoughts are much appreciated!
Problem:
Engineering teams often start with devs running the entire stack locally/in a personal cloud. As the infra grows in complexity and multiple services are created, some problems arise.
-
it’s too resource intensive to run the stack locally
-
it’s too expensive to run in personal cloud environments
-
can’t develop with prod-like data and resources.
-
mocking is hard to set up and maintain.
So the teams move to a shared dev env, but this leads to new problems:
-
delays caused by coordination and conflicts (merge resolutions, “sorry I broke the build, wait for me to fix it”)
-
slower iteration from the overhead of merging and pushing to dev to develop against dependencies
Idea:
A hybrid service management framework that allows you to run any subset of services locally, on a personal cloud env, shared dev env, or temporary env. You could mix and match in real time which services are pointed to which in a given instance of the stack. For example, you could run your own copy of service A & B connected to shared prod-like instances of services C & D. If you decide you need to make a change to service C, in a few clicks you could spin up a personal copy, all of the connections would be adjusted, and you could immediately iterate on it. Or you decide to test with prod-like data in service B, you could swap out the connection to point to the a shared prod-like db. Potentially we could get into helping to seed test databases and mock services. This would enable:
-
cost savings by only spinning up the necessary resources while leveraging shared resources
-
faster iteration and testing against prod-like data and services, without conflicts and without having to merge/deploy, as if everything was running locally
We’re aware of technical complexities involving VPC peering, two way request-based proxying, and data dependencies/shared dbs causing issues in this hybrid setup.
Alternatives:
Tools like Okteto, Releasehub, Docker Compose, Tilt offer the ability to spin up environments easily, but don’t allow you to mix and match connections between different environments during development/testing, so the above problems would appear to persist. Telepresence and
Garden.io seem to be closer to this, but aren’t complete drop-in solutions and aren’t flexible for managing subsets of services.
Would you pay to use something like this?