MyUW in 2016 - by the numbers


This post considers MyUW in 2016 as framed by metrics.

Unless otherwise stated, all numbers are about calendar 2016. Point in time numbers are about December 31, 2016.

(See also minimalist slide deck. One use for this post is as notes to support presenting or consuming that deck.)

MyUW as production service

10 million sessions

Per Google Analytics, MyUW served around ten million user sessions. MyUW serves a lot of traffic.

Users followed a link in MyUW out to something outside MyUW more than 8,000,000 times, including four million launches of Office365 and two million launches of the course dashboard. MyUW eases navigation to other systems.

100,000 notifications displays

Users viewed their full notification page around 100,000 times. Besides helping users navigate to other applications, MyUW helps users understand what they need to do and where they might need to navigate.

100,000 searches and app directory browses

MyUW presented the directory of applications around 100,000 times and provided search results in around 100,000 user sessions. Not all MyUW content relevant to all users can fit on default home pages, so MyUW supports users searching and browsing the available content.

100,000 home page modifications

Once you’ve searched or browsed to something interesting, you can add it to your home page. Users modified their home pages almost 100,000 times, including adding the new Wiscard Balance widget almost 6,000 times.

Releases every 7 days

MyUW releases to production every 7 days, in our 5am to 7am Tuesday morning release window. We rarely incur downtime even during this service window. We aspire to release more often, with better automation and evolving local culture to support and sustain this. Still, we’re already releasing relatively frequently. Releasing frequently allows us to ship less change more often to get feedback sooner and to incur less release risk.

We occasionally add additional release windows to ship urgent change. Our blue-green deployment practices allow us to do so without incurring service downtime – mostly no one notices.

5 tiers

We have 5 tiers:

  • predev: Infrastructure and framework development. Content is relatively stable.
  • test: Content development. Infrastructure is relatively stable.
  • qa: Stable, tagged, versioned releases of all components. The purpose of this tier is to demonstrate specific, promotable versions working correctly together.
  • stage : Production in all ways except it runs the latest production build (the build “staged” for release) and no my.wisc.edu traffic is routed to it. Exactly the Docker image that’s running in stage is promoted to prod in the release process.
  • prod : Production. Runs a specific, deliberately-released version of the whole bundle. Typically a bundle precisely as it was validated in stage.

Five tiers mean more opportunity for various development efforts to not step on one another’s toes, more opportunity for quality assurance and testing, and more opportunity to co-opt an environment to test e.g. a major upgrade of an external dependency.

Five tiers also helps make breaking changes and complicated upgrade paths painful enough that we look for ways to avoid breaking change, to simplify upgrade paths, and to change gracefully. Components coping better with more versions of dependencies yields a more stable solution, gives us better options in the rare case where we do need to drop back to an older version of a module, and yields more adoptable and supportable software products.

4 production VMs

We have 4 production VMs running 8 virtual MyUW nodes of which 4 are typically in service at any time. This provides sufficient capacity to handle peak load, allows one or typically even two nodes to fail without significant adverse effect to service experience, and allows blue-green deployments with zero service downtime.

160 apps

We had ~160 “real” items in the app directory, including

  • ~50 apps for Madison students or applicants
  • ~25 administrative tools (both portal administration and some business function administration)
  • ~20 apps for Madison staff
  • ~20 apps for Madison constituents in general
  • ~5 apps supporting advising
  • ~5 apps supporting research

We update this content frequently, with 261 changes to app directory content in 2016.

( git log --since=2016-01-01 --before=2017-01-01 --oneline | wc -l ).

MyUW as complex system

MyuW has ~50 items eligible to appear by default on the user’s home screen. (No real user sees 50 items by default. Group matching pares this down to items that may be relevant.)

There are ~90 groups available for targeting in MyUW, including 13 managed in Manifest, UW-Madison’s Grouper instance.

MyUW as growing and evolving

5 new notifications in 2016. Lots of potential in this feature, as yet un-realized.

MyUW as designed

MyUW implements responsive design, flexing across browser window sizes. This improves the experience across the breadth of devices using MyUW, including the 20% tablet or mobile phone form-factor traffic.

MyUW budgets for 0.75 FTE UX design from DoIT Communications.

~40 apps had interesting widgets, namely

MyUW as teams

Infrastructure team

5 dedicated staff

  • 3 full stack developers
  • 1 front end developer via ADI
  • 1 strategist

and a wider cast, including

  • .75 User Experience consultant
  • partial Site Reliability Engineer
  • 0.25 Tier ~2 Help Desk
  • and a wider cast

Dedicated, focused, invested staff in for the long term is key to MyUW success, to being a team, to delivering our quality, confident service.

0.25 FTE focused on escalated support cases, documenting known issues, digesting support into actionable product intelligence: working great, key to MyUW’s success.

Development teams

4 teams active developing MyUW frame-based apps

  • MyUW Infrastructure
  • MyUW Academic Applications
  • ADI - Integrated Applications
  • UW-Extension - Continuing Education, Outreach & E-Learning

Service team

Infrastructure Scrum team, plus

  • Service team lead
  • Cybersecurity liaison
  • MyUW Academic Applications liaison
  • ADI - Integration Applications liaison
  • DoIT Communications liaison
  • UX
  • Help Desk
  • Site reliability engineer

MyUW as serving the entire UW System

16 themes

System-targeted 25 app directory entries

  • ~15 apps for System staff
  • ~10 apps for UW Extension CEOEL students

MyUW and open source

Return on investment

The World Bank found a 200% return-on-investment in participating in open source. This is our strategy: build and collaborate on open source products in the hope of a positive return on this investment via collaboration, shared maintenance, and benefiting from the work of others. We develop more thoughtfully and more sustainably when we approach our work as building open source software products that are configured and adopted locally.

50 releases of 7 products

MyUW posted 50 releases of 7 MyUW-led open source products in 2016.

1 Apereo board member

MyUW team member Jim Helwig has long served on the Apereo Board of Directors. Taking a hand in the governance of Apereo is part of how we contribute to its sustainability and thus to the sustainability of the context in which we can realize a return on our open source investment.

2 uPortal steering committee members

MyUW team members Jim Helwig and Andrew Petro serve on the Apereo uPortal steering committee. Taking a hand in the governance of uPortal is part of how MyUW contributes to its sustainability and thus to the sustainability of a context in which we can realize a return on our open source investment.

425 commits by others

There were 425 commits in 2016 to Jasig/uPortal not by University of Wisconsin employees.

In summary

MyUW is

  • a high-usage production service
  • a complex system
  • growing and with not-yet-fully-realized potential
  • designed
  • a team
  • serving the entire University of Wisconsin system
  • practicing open source

Andrew Petro

Related Posts

Apereo CAS is now on Develocity

An overview of how Apereo CAS is using Gradle and Develocity to improve its build and test execution cycle.

CAS OAuth/OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software acting as an OAuth/OpenID Connect provider.

CAS Groovy Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software when using Groovy.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software acting as an OpenID Connect Provider.

CAS X.509 Vulnerability Disclosure

Disclosure of a security issue with the CAS software and its X.509 features.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS Spring Framework RCE Vulnerability Disclosure

Disclosure of the Spring framework RCE security issue with the Apereo CAS software.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.