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