All the stats that fits on a dashboard
Hygieia (pronouced hi-GEE-ya, the name of the daughter of the Greek god of medicine and personification of hygiene and prevention of illness.
The name is adopted for an open-source software project created at CapitalOne (the credit card company) which displays in a single dashboard the various statistics of a software delivery pipeline.
Demos and videos
https://www.youtube.com/watch?v=WuPQOBMmzSE [4:01] May 10, 2016
Introducing Hygieia [4:53] Jul 17, 2015 on CapitalOne’s GitHub
https://www.youtube.com/watch?v=WZ3S1xOn8Wg (music, no narration)
Team Dashboard Widget View
Features and items in progress
Code repo (commits per day) – from GitLab
Builds from Jenkins
Quality of code from scans for compliance to rules for security and other aspects of coverage – from SonarQube
Deployments to servers – from Jenkins
with server status
QUESTION: Does the dashboard cover these 16 gates in the pipeline (10 Commandments in octal):
DOES16 San Francisco - DevOps at Capital One: Focusing on Pipeline and Measurement IT Revolution by Topol Pal, (Director, Engineering Fellow, Capital One)
- Source code version control
- Optimum branching strategy [Git and GitHub or GitLab, etc.]
- Static analysis [SonarQube]
80% code coverage
- Vulnerability scan
- Open source scan [Black Duck]
- Artifact version control [Nexus or Artifactory]
- Auto provision [Puppet or Chef]
- Immutable servers
- Integration testing
- Performance testing
- Build, Deploy, Testing automated for every commit
- Automated Change Order
- Zero downtime release
Program-level Pipeline Dashboard
Hygieia limits itself to just these environments:
commit > build > DEV > QA > INT > PERF > PROD
PROTIP: Symptoms of health should also include:
Cycle time from idea to production
Man-Months of backlog in innovations and defect fix effort
Man-Months of “Technical Debt”
Percent of work unplanned (“error budget”)
Percent of development (coding) innovation vs. repetitive work
Trends over time
Displays of trends over time are important to keep numbers in perspective, both to keep from over reacting to momentary anomalies and from under-reacting to underlying patterns that need to be fixed.
PROTIP: So it’s better to have a set of rotating dashboards (showing trends) than having just a number on a dashboard without context to whether that number is “good” or “bad”.
PROTIP: Have a projection of what was expected at each point in time, especially in the future.
Having an arbitrary target number can be counter-productive unless individual employees have a coherent approach that balances the many conflicting needs.
For example, an insistance on “100% all the time” can lead staff to prioritize caution over innovation.
QUESTION: Should trend information be considered during a Production Readiness Review (PRR)?
Executives and business managers typically focus on financials :
- Total cost per transaction ratio
- Total cost as percent of revenue
- Total revenue per employee
Bottom Line For Executives
Upper management need to manager a longer time horizon. So they need to see trends over time, especially those that reflect customer experience (not just internal processes):
- Availability of the system
Productivity of end-users using the system being developed, such as
purchases, invoices, or other business transactions processed during a peak hour.
Customer Net Promoter Score
- Employee satisfaction
- Employee turnover rate
Hygieia was written in Java to store data in a MongoDB database.
The Hygieia API server exposes REST APIs written in Spring Boot and mysema.querydsl.
The Hygieia core server provides the UI to data collected.
Fork https://github.com/capitalone/Hygieia to your own account.
Create a container folder to hold several related repositories.
git clone https://github.com/ My GitHub Acct /Hygieia
At the time of writing, this took up 131.1 MB of disk space.
git clone https://github.com/ My GitHub Acct /Hygieia –depth=1
At the time of writing, this took up 114.2 MB of disk space.
Download and build via maven using pom.xml file:
mvn clean install package
PROTIP: If you enjoy reading the deluge to the console, expand the Terminal width to avoid wrapping.
[INFO] Total time: 08:34 min [INFO] Finished at: 2017-03-18T21:11:46-04:00 [INFO] Final Memory: 108M/1581M
At the time of writing, after install the folder takes 1.23 GB of disk space.
- Install MongoDB for the API data store
- Run collectors with properties to connect to CI tools
Seteup Dashboard widgets & Visualize
QUESTION: Can only have one dashboard?
PROTIP: Have computer programs monitor servers and take automatic actions.