3 ms·
> In my 28 years of professional experience working in 9 different organizations, only one of them did fully run the core system in development, and another two
by benlivengood 6y ago
> In my 28 years of professional experience working in 9 different organizations, only one of them did fully run the core system in development, and another two of them could have done that with enough time and effort. For the other six, there was no reasonable way to run the full system in development.
Only ~20 years here but I've worked almost exclusively on three or four large systems with test environments despite their complexity. I think it may be the nature of the companies/business that makes the difference.
Ancient (1980's code) hospital ADT+billing system (medseries 4 if anyone cares) on an AS/400. We kept the last generation of hardware around to run the test/demo environment which was end-to-end connected via HL7 to all the other test environments. That included the other thing I managed, Cerner Millennium, a hodgepodge of a medical records system on AIX and Oracle, where again the old hardware got used as the test and build systems. The test environment was critical because even though it was made up of a dozen commercial software packages talking to each other over HL7 and flat files (and serial for lab devices and who knows what else) it was critical to make sure the whole environment worked when doing upgrades or new development. We kept a full copy of prod data for final integration testing. The tooling for (most of) the software supported replicating environments.
The largest example is Photon/Ubiq at Google; end-to-end test environment running with deterministic sampling to save resources at all stages of the pipeline so everything from injection through logjoining and aggregation to the final database updates were continuously running the latest code for testing before a release to prod. Thousands of prod machines devoted to it. That was in addition to the integrated tests and unit tests during the development process.
At FB the statistical counter system I worked on also kept a continuous test pipeline running, again with event sampling to reduce cost, to ensure everything would work properly before a new release.
My takeaway is that where it matters companies are willing to spend the money and people to have full end-to-end testing, often in realtime, and have some leeway to save on resources with subsampling, smaller datasets, etc.
- jrochkind1 6y ago> We kept the last generation of hardware around to run the test/demo environment which was end-to-end connected via HL7 to all the other test environments. If I understand right (and I may not, both your description and the OP), this may violate the OP's prohibition I've quoted below. What do you think? > "Run an individual service in a shared stateful development environment running all the other services" doesn't count. A shared development environment will be unreliable as it diverges more and more from the real system. The OP seems to be awfully strict.
- benlivengood 6y ago"Run all the services that make up the system in an isolated development environment" was maintained in all the test environments. It'd be a moderate disaster to mix live patient/billing data between prod and test and so the test systems linked together with independent test/demo/prod HL7 gateways.
- jrochkind1 6y agoRight. If I understand it, it does seem to me to be an acceptable and reasonable solution, and I can't think of a better one. But isn't it the "shared stateful development environment" the OP is saying is unacceptable? Since every developer doesn't get their own "last generation of hardware"? But I may be misunderstanding the OP? I am not trying to critisize what you did; I am trying to understand and possibly critique the OP. The OP seems unrealistic to me, despite it's protestations that it really isn't; but I may be misunderstnading the OP.
- benlivengood 6y agoShared stateful development environment implies that "hard-to-test" things are not tested. In that sense, sure; we had one active directory, one physical network, one physical workstation to trigger commands, one office chair, no test version of me, etc. So if the OP's language is not careful then it could include things in "the development environment" that don't make sense.