Features of an Effective a Developer Environment
- Convenience and Productive
- Fast/Easy to install - everthing for development included by default
- Fast/Easy to start/stop/update/teardown
- Ability to reproduce and share environments
- Easy to manipulate multiple instances/environments and operate simultaneously
- (golden/dev/test/experimental), compare/contrast/diff environments
- experiment with federation and multi-site deployments in DevEnv
- Export/Import/shareable instances - reproducable in many contexts
- Share with others, publish, reproducable environment as part of bug reports, ...
- Reliability and Isolation
- Instances isolated from each other and the developers system and from on-line requirements
- Encapsulated - full environment enclused in the developer environment
- Run multiple clusters in a laptop in an airplane disconnected from internet
- Intentional upgrade process - avoid breaking auto-update
- (not automated), encapsulated (minimal dependencies on external system/tools)
- Accuracy and Portability
- Represents the 'production' implementation of the system as closely as possible
- Run in all popular developer laptops/system/OS combinations
- Windows, Linux, Mac, ...
- Developments in DevEnv are directly applicable to production systems
- Support development at all-levels as closely as possible
- system-level, operations-level, apps, user-facing, and development at all levels
- Extensibility - Ability to extend and customize the platform as well as the developer environment
- I.e. no specific tool or model lock-in, freedom to change
- Network - emulate multiple physical networks, ability to change k8s network plugins
- Distributed - Emulate multi-site, multi-instance in dev
- Federation, Distributed/federated/multi-site/edge-oriented development and testing
5 minutes to a running multi-node cluster that can run in your laptop. VBox machines running CoreOS on host-local networking, not exposed to internet. Notes below for other options.
...