Page MenuHomePhabricator

Services requirements for container-based infrastructures
Closed, InvalidPublic


NOTE: This is a WIP task description, please edit / comment %%%

Service Life Cycle

Development Requirements

  • cross-platform
  • must be able to run efficiently on the developer’s machine
  • focus must be on the development of the service/component itself
  • need a set-up for supported langs/environments: php, python, node
  • easy set-up of the infrastructure: selection of components or all?
  • mirror production as close as possible


  • service unit testing
  • integration testing - connected services and overall infra
  • test with multiple versions - current prod and next ver
  • testing both on merge and before build/release

Operation and Maintenance

  • release management: must be able to select what gets pushed into the build/production pipeline
  • security upgrades: transparent for the developers
  • automatic deployment: gradual replacement of old code with new code (canary deploys) handled by the infrastructure
  • stats collection - per container, and per service
  • health monitoring - per container, per service
  • logs

== Considerations

=== Automation
- no need for intervention from developers
- deployers should just specify the source branch/tag/SHA1 and the system should do it all
- tooling around metrics/monitoring to gain instant insight into the service’s functioning
- rolling “restart” of services

=== Configuration
- config changes are considered code deploys
- ability to template configs with complex values (arrays, hashes, etc)

=== Third-party Support
- easy, one-click-style install
- support for low- to mid-range VPS configurations
- guided configuration creation
- clear upgrade path for both code and configuration

=== Unified Specification
- developer must be able to specify all the service’s requirements in a single format
- have different engines for supported run-time environments: dev, staging, CI, prod, third-party
- integrated with config management to pick the correct one