Wilson Mar bio photo

Wilson Mar

Hello. Hire me!

Email me Calendar Skype call 310 320-7878

LinkedIn Twitter Gitter Google+ Youtube

Github Stackoverflow Pinterest

All the stats that fits on a dashboard

Gitter

Overview

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=Iq8M3llEp0k

https://www.youtube.com/watch?v=WZ3S1xOn8Wg (music, no narration)

https://www.spreaker.com/user/pureperformance/012-automating-performance-into-the-capi

Info

https://developer.capitalone.com/opensource-projects/hygieia

https://gitter.im/capitalone/Hygieia

Team Dashboard Widget View

hygiea-screenshot-2848x1666
(Click for pop-up full image)

  • 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

  • Unit/Functional tests

  • 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)

  1. Source code version control
  2. Optimum branching strategy [Git and GitHub or GitLab, etc.]
  3. Static analysis [SonarQube]
  4. 80% code coverage

  5. Vulnerability scan
  6. Open source scan [Black Duck]
  7. Artifact version control [Nexus or Artifactory]
  8. Auto provision [Puppet or Chef]
  9. Immutable servers
  10. Integration testing
  11. Performance testing
  12. Build, Deploy, Testing automated for every commit
  13. Automated Change Order
  14. Zero downtime release

Program-level Pipeline Dashboard

hygieia-pgm-shift-left-600x219 *

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

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)?

Financial

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

Architecture

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.

Install server

  1. Fork https://github.com/capitalone/Hygieia to your own account.

  2. 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.

  3. 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.

    The response:

    [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.

  4. Install MongoDB for the API data store
  5. Run collectors with properties to connect to CI tools
  6. Seteup Dashboard widgets & Visualize

    QUESTION: Can only have one dashboard?

PROTIP: Have computer programs monitor servers and take automatic actions.