Arch Tea Time: 2020-07-30

Topics

  • Feature Toggle Status Report (sneak preview and input gathering)

  • History of python automated tests evolution in edx + current best practices? (requested by JJ, who will join late at around 2.30pm)

    • pylint, pep8, pytest, codecoverage → tox, celery ?

    • History

      • When edx started nose was popular so that was used.

      • nose stopped getting development and pytest became the new defacto standard. very featureful and default for most new python projects in the ecosystem.

      • tox lets you setup multiple test environments easily.

        • Commonly used for testing on multiple python versions or multiple django version

        • We also sometimes use it to multiple versions of other important libraries, eg. Django-rest-framework

        • upshot: tox will continue to be used and become more common because it makes it easy to keep up upgrades.

          • It reduces the incremental cost of doing upgrades once we have it in place.

  • History + architecture of ecommerce-worker (requested by JJ, who will join late at around 2.30pm)

    • Something like this? What other business functions is ecommerce-worker responsible for?

       

    • how do you run ecomm-worker locally? (readme hasn’t been updated since 2016 when it was using RabbitMQ and it doesn’t appear to be in devstack…)

    • History

      • ecom-worker has a handful of tasks

      • ecom-worker is slightly unique.

        • The celery functions live in a separate repo.

        • Ecommerce pulls in ecommerce-worker library to call tasks.

        • Ecommerce Worker uses the ecommerce-worker codebase without ecommerce service code.

          • Calls back to ecommerce service to do some work. It may send email itself.

          • They are stateless and pretty safe to kill (if not doing work).

             

Feature Toggle Status Report

BOM will provide a preview of v1 of a “Feature Toggle Status Report”, as first detailed in OEP-17. Some of the potential benefits to your team include understanding:

  • Does the status of toggles differ across environments (e.g. Prod vs Stage)?, or

  • Which toggles have served their purpose and can be removed?

Provide early feedback to help us set priorities.

  • Is there a standard for annotations?

    • The standard exists but is evolving right now as part of a blended project.

    • The report links to samples in our codebase.

  • Is there a place where we have docs on what all or ways of configuring are today and what our recommendations are?

    • OEP-17 has the concepts but not the implementation details.

    • edx-toggles is where this a lot of the code is being extracted for the reporting and will likely be where docs will exist in the future.

  • What about the values in devstack? Can we get that as well?

    • We will make it easier to generate these reports on demand so that we can get the data on demand for different environments.

    • We should also be able to compare across environments easily, including devstack vs production (as an example).

Data:

  • Total toggles: 118

  • Annotated toggles: 30

Toggle Report sneak preview