3 ms·
I'm not convinced there is a solution to the problem. We will always struggle to bootstrap our environment, this is a symptom of trying to reproduce production
by bm1362 11y ago
I'm not convinced there is a solution to the problem. We will always struggle to bootstrap our environment, this is a symptom of trying to reproduce production environments on different targets. In the past I've been on a team that has tried:
* Invested a lot of work getting a set of services to run on our dev desktops (a 'onebox') and it was very painful. Lots of useless configuration, adding new services is hard and it doesn't scale well. Some external dependencies can't be run locally.
* Using a 'integration test' stack that you could hit from your desktop, but it was stateful and shared by 10 developers -- eventually causing us to have to block each other.
* We actually built a simulation to run our tests in, it simply replaced the networking layer of our external clients with a in-memory queue; it introduced more bugs because of implicit ordering and subtle differences from production.
Production is the only easy environment, because the configuration and code is immutable there. Testing and development are too nuanced, stateful and often require lots of mutation within individual binaries/services.
From all my experiences so far, just running a test stack of services was the easiest. SSH tunnels were important too, for things like service discovery.