Spike: Determine our approach for building a Status Page MVC in 12.9

Purpose

Research and determine

  • technical requirements
  • possible solutions
  • recommended solution

for creating a system that would allow the public to view content from incident issues (Eg. gitlab-com/gl-infra/production#1597 (closed)) because we are moving incident issues to ops.gitlab.net and need a way to allow the public to view specific content from existing issues. This site will be used to display the incident issue comments and act as the MVC for status page. This will help the infrastructure team move their incident related activity to ops.gitlab.net so that they can operate effectively if gitlab.com goes down.

Technical limitations

  1. Status page needs to be hosted on a separate infrastructure (outside of gitlab) so that it can scale with web traffic independently of how the gitlab instance operates
  2. Because of technical limitation 1, we have determined that RSS feeds will not work because it will put too much load on the gitlab instance (or ops.gitlab.net in this specific scenario)
  3. Status page has to be scalable for thousands of users
  4. Webhook from the gitlab instance might be an option to post to the status page application to collect the incident information to render

Deliverable

Please summarize research, options and recommendations for implementation in the Outcome section below with a tentative plan on how we can build a minimal flow for %12.9

Outcome

  • ENG 3 approaches
    • API
      • requires manual user interaction
    • webhook
      • requires keeping state in a DB so there are 2 sources of truth: GitLab + DB
    • hybrid webhook + API
      • webhook alerts app to query API for state
      • store updates in JSON on CDN | bucket
      • Chose this approach for the first iteration
  • UX
    • First iteration
      • one page with all incidents listed unsorted
      • description-only details page first, then add comments
      • Use emoji to denote public vs private comment
    • See what Plan team ships for public/private comments in 12.8 to possibly use in the future iteration
  • Narrow down the scope for MVC - one release, multiple iterations (see how many iterations we can do in one release. Ideal expectation is doing iteration A and iteration B)
  • List of MVC iterations
    • Render incidents list on status page + get it from the API (triggered from webhook)
    • Render incident issue description on the status page
    • Includes images
    • Back it on a CDN
    • Comments support (either before or after CDN)
    • Add contact support button
    • Add RSS button?
Edited by William Chia