Monolith WG: 04/26/2017

Attendees

Adam Palay (Deactivated), Andy Armstrong (Deactivated)Brian BeggsEdwardF (Deactivated), JesseZ (Deactivated)Renzo Lucioni (Deactivated)Robert RaposaScott Dunn (Deactivated)Nimisha Asthagiri (Deactivated)

Meeting Notes

  • Definition of Done (5mns)
    • Consensus on long-term goal
    • Today's Problems/Observations
      • Developer Velocity
        • Pull request complexity
          • i.e., over interdependencies
        • Pull request wall time for tests
        • Developer onboarding
        • Disorganization
      • Quality
        • Clear seams and contracts for tests
        • APIs
      • Extensibility/Modularity
        • Open source community
      • Incremental Upgrades (Python/Django) - Future
      • Time to value
        • brittleness
        • time to deployment
    • Question:
      • Will a containerized/modularized monolith within the same repo give us the benefits we're looking for, as measured by our metrics?
        • With the exception of:
          • incremental upgrades
          • test time - unless we come up with a smarter test-runner
          • independent scalability/failure-recovery
        • Goal for this working group: get baseline metrics, begin this work and validate/invalidate the approach.
  • Metrics (30mns)
    • Before embarking on this project, what metrics can we use to validate our progress and success?
      • Collect metrics from the field
        • That extended around the monolith
          • Enterprise projects
          • Learner projects
        • That needed to deal with the monolith
          • Proctoring
        • That tried to modularize before working
          • Grades
          • Instructor Tasks
        • Which metrics?
          • Extensible Modularity - Repo lines touched (how many lines within the monolith needed to be changed for new features)
      • "Good metric"
        • Easy to measure
        • Actionable
          • validates/invalidates
          • not too many other contributing factors - so the metric is reliable for this project
      • Hotspots within the codebase
        • Which modules of the code have a lot of contention?
        • Number of commits touching the same file
        • EdwardF (Deactivated) to share Hotspot presentation
      • Code reviews (measuring modularity)
        • PRs that needed cross-team reviews
        • Number of reviewers that needed to be tagged
          • ?? can tag teams as well as individuals
          • Number of approvals may be a better proxy (to measure how many blockers on a PR)
        • Number of comments - (may be impacted more by other factors - such as the reviewer)
      • Pull Requests
        • Number of files touched
        • PRs that touched multiple modules
      • Complexity
        • Number of complexity-disabling pylint warnings
        • Complexity metric - trend line
      • Time-to-value (too many other contributing factors - may not be directly related to the monolith initiative)
        • Github branch age
          • Age of commits on branch - in case developers worked on it locally for long?
        • Release pipeline metrics - these are already available
          • Number of rollbacks
          • Disrupted deployments
      • Tests (may not be affected until tests are smarter or until code is actually pulled out)
        • Time
        • Number of flaky
  • Next Steps (10mns)

Action Items