Skip to content

Development

The idea is to make it as easy as possible to develop and maintain modules and stacks in InfraWeave.

Responsibility

  • Platform team designs reusable small modules with security in mind
  • Platform team + developer teams designs stacks to fit general use cases
    • Platform team guarantees upgrades and tests works for stacks
  • Application team uses stacks

Workflow

Run CI jobs that sets up the module/stack using Python and performs relevant tests for the module.

  • Set up multiple parallel tests, one per requirement, this makes it easy to see what fails.
  • Some examples to test are:
    • Ensure it sets up + tears down without failure
    • Upgrading from previous version, does it replace anything -> is it marked as breaking?
    • Functional tests
      • ”Is a test service on the instance reachable?"
      • "Backup and restore of a database”

Important considerations

Not breaking: Modules are versioned entities, but a module can easily contain changes that would require a replacement of infrastructure, which would often make it breaking.

Descriptive: It should be well documented and easy to understand the meaning of a parameter.

Small modules: The larger modules you build, the more difficult they become to maintain and customize. Use stacks when applicable.

Testing: Another reason to keep it relatively small is to have good test coverage. Infrastructure needs more emphasis on integration-testing.

Usability: Make it easy to deploy and use, ensure a good balance of configurability

Workflow