2015.09.23 - IDA discussion

2015.09.23 - IDA discussion

Action items

@Joel Barciauskas (Deactivated) write the list of questions/considerations for starting new IDAs.

Notes

in-room: Mark, Ned, Nimisha, Peter Pinch, Joel, Steve, Clinton, Matt, Miki, Ed

hangout: Dave O, Felipe, Jim, Cale

  • What are things that are IDAs now?

    • edx-platform

      • LMS

      • Studio

    • comments service (aka forums)

    • insights

    • analytics api

    • ecommerce

    • student notes

    • notifier

    • xqueue

    • Drupal

  • What is not?

    • ORA

    • submissions

    • edX search

    • milestones

    • proctoring

    • teams

  • What should be an IDA but is not yet?

    • LMS

    • Studio

    • Search

    • Certificates

    • Student state storage

    • Users and Auth

    • XBlocks

    • Modulestore

    • Veda

  • Criteria for IDAs

    • Scale

    • Security

    • Group ownership, decoupling

    • Replaceability

    • Barrier to entry

    • Deployment

    • Isolation of failure

    • Velocity

  • Non-criteria

    • Don't be too granular

    • Doesn't have it's own data store?

      • why isn't that a library?

  • Be careful:

    • No need to introduce network hops just to get decoupling

  • What is "too many" about services?

    • operational complexity

    • need infrastructure and tooling

    • performance implications of network hops

  • Independently Deployable Libraries?

    • make stuff pip-installable, then release versions of your library.

    • we can also host our own pypi

    • people need to review all their requirements on a regular basis

  • Open edX

    • How do we help adopters with the complexity of micro-services?

    • Create a shim so you inline IDAs.

      • This is a common idea

      • but doesn't seem to exist in the Python world

    • Having both local and remote is extra complexity,

      • we don't want to have to test both/all configurations all the time

  • Many of our IDAs now are optional

    • Once we have a user service IDA, then everyone needs to use it.

    • can we have default implementations as alternatives to what edx.org uses?

  • Programs in particular

    • there's no point in programs without courses.

    • but there's no point in insights without courses, either.

  • Seems like there are more IDAs than we thought (more than 10)

    • Each new IDA should be discussed with the Arch Council

  • We have a spectrum of IDAs

    • think xqueue vs insights

  • Do we have incentives in place to split apart LMS?

    • new stuff is definitely separate

    • splitting lms and cms is in plan for this year

      • it's more than just moving code

      • it also means different data stores

      • it also means one-to-many studio/lms

    • putting interfaces into edx-platform could start cleaning up edx-platform (see Extending edX Platform)

  • There are simple things we can do:

    • Move XBlock and other pluggable requirements out of edx-platform, so we can update XBlocks without pushing edx-platform

    • Splitting common functionality into libraries

    • Pluggable interfaces give good isolation

  • Extracting existing code into a new library is a big job.

    • do we need separate projects to do clean up?

    • or do we budget it as part of the projects that need the separation?

    • we need patterns established

    • do we feel too much time pressure to do the clean up?

    • it's hard to estimate the clean up work

      • can we time-box it?

    • we aren't in a position to quantify the impact of debt on velocity

    • product has been reasonable about giving time where eng needed to clean up

    • engineers need to be able to market their changes

  • Follow-ons:

    • Operations technology that can help with this?

      • troubleshooting IDA constellations

      • will need coordination technology that can run locally and remotely

      • Clinton is working on templates and patterns for IDAs

    • Can deploys be just a pip install?

      • no one is working on this