Dynamic environments

Scaling development across multiple teams is a hard challenge, one of the ways to keep developer velocity high as well as increase robustness of delivered software is to "shift testing left". Hence we established a new technique for working with platform - "Dynamic environments".

Developers fell in love with the POC (yes, we built a really scrappy POC to win their opinions). We then implemented full product and rolled out across engineering org within next 3 months and never looked back ever since.

Dynamic environments

How to achieve

  1. Containerize apps

    Update apps that constitute a platform to be cloud native an container-friendly. Define and implement service discovery, configuration, logging, 3rd party integrations

  2. Data preparation

    Automate preparation and distribution of production-like sanitized data. Complexities here involve scrubbing all Personal Identifiable Information (PII data) whilst maintaining common sense links between data, keep duplicated fields between database schemas in sync and also automating other storages, like Elastic as a search index

  3. Infrastructure automation

    Using infrastructure-as-code techniques we're defining our "environment" in code and then utilizing tools to provision however many copies of the environment we want.

Developer's workflow

  1. Start working on a feature in a local environment

  2. Commit and push changes to git repo

  3. Create pull request when you think you're done

  4. This automatically kicks off provisioning of "dynamic" environment

  5. Isolated environment is ready within the next 30 minutes and is available on domain dedicated to your feature branch. Again for developer experience, we picked domain to be in form jira-123.dyn.myshop.com which corresponds to the card in JIRA (can be any issue tracking software)

  6. Kick off automated tests to run against dynamic environment, if tests pass it means environment is ready for QA to verify changes, if test fails developer reviews the failing test to confirm the reason

  7. Acceptance verification and PO approval happening in this environment and then

  8. When PR is merged in master, environment is destroyed

Conclusion

Ability to use dynamic environments allowed us to effectively scale development and were pivotal for successful migration of the Stella & Dot brand to the new multi-tenant social selling platform.

Subscribe to Brilliant Consulting updates