2015.09.23 - IDA discussion

Action items

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