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.
8 million outbound links
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.
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.edutraffic is routed to it. Exactly the Docker image that’s running in
stageis promoted to
prodin the release process.
prod: Production. Runs a specific, deliberately-released version of the whole bundle. Typically a bundle precisely as it was validated in
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.
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
- Badger Headlines and NCAA D1 News
- Benefit Information x2
- Campus News
- Course Guide and its help
- Course Services
- DoIT planned and unplanned outages
- Google Apps
- Help desk notices
- HR, Payroll, and Benefit News x2
- Learning and Talent Development
- Local Contact Info
- Manager Time Approval
- My Courses
- Payroll Information x2
- Research Project Resource Guide
- UW-Extension CEOEL x11
- UWP news, UWRF news
- UWRF resources
- Weather x2
- Wiscard Balance
- Working at UW
MyUW as teams
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.
4 teams active developing MyUW frame-based apps
- MyUW Infrastructure
- MyUW Academic Applications
- ADI - Integrated Applications
- UW-Extension - Continuing Education, Outreach & E-Learning
Infrastructure Scrum team, plus
- Service team lead
- Cybersecurity liaison
- MyUW Academic Applications liaison
- ADI - Integration Applications liaison
- DoIT Communications liaison
- Help Desk
- Site reliability engineer
MyUW as serving the entire UW System
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
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
- a high-usage production service
- a complex system
- growing and with not-yet-fully-realized potential
- a team
- serving the entire University of Wisconsin system
- practicing open source