Challenges – the development environment
Another common challenge in distributed systems is the setup of a representative development and testing environment, especially for individuals or small teams. Ideally, in fact, the development environment should be identical to the worst-case scenario deployment environment. It should allow developers to test common failure scenarios, such as a disk filling up, varying network latencies, intermittent network connections, hardware and software failures, and so on—all things that are bound to happen in real time, sooner or later.
Large teams have the resources to set up development and test clusters, and they almost always have dedicated software quality teams stress testing our code.
Small teams, unfortunately, often find themselves forced to write code on their laptops and use a very simplified (and best-case scenario!) environment made up of two or three virtual machines running on the laptops themselves to emulate the real system.
This pragmatic...