Skip to content

Instantly share code, notes, and snippets.

@hectorv
Last active June 26, 2017 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save hectorv/311f278b7d4fe0851dd5c2750a4b4a1b to your computer and use it in GitHub Desktop.
Save hectorv/311f278b7d4fe0851dd5c2750a4b4a1b to your computer and use it in GitHub Desktop.

Microservice Review — {microservice-name} (self-evaluation)


Use the following legend for Status:

  • :heavy_check_mark: (:heavy_check_mark:) for "all good"
  • (empty) for "needs work" or if unsure
  • N/A for "does not apply"

Documentation

Item Status
Is there a README file?
Does the README file specify an owner?
Is the documentation sufficient to install and run the microservice locally?
Does the README state its dependencies on other microservices?
Does the README state its clients?
Is the API documented?
Is the architecture explained? (e.g. architecture diagram)
Are operational processes explained? (e.g. deployment, DB schema changes, data loaders)

Software Architecture, Code Quality, and Security

Item Status
Is data access cleanly separated from models, i.e. is there a DAL?
(*) What is the linter output on the codebase?
Is there no duplicate code?
Is there, in general, one way to do things?
Is there no dead code?
Are variables, functions, files, classes, etc. properly named?
Is the code performant? (e.g. avoids queries in loops, uses sets where appropriate)
Is the code architected to be scalable and flexible?
Is the API RESTful and well-designed?
Are there no passwords or keys stored in plaintext in the repo?
Is the code documented? (e.g. docstrings)
Does data (e.g. json, tables) have a schema?
Is there a pre-commit yaml and is it extensive?

Tests

Item Status
(*) What is the unit test coverage?
Are there appropriate integration and acceptance tests?

Processes

Item Status
Is there CI?
Does the CI run on every PR?
(*) How long does it take for PRs to be merged?
Are there no old outstanding PRs?
Does it use Galaxy (where applicable)?
Does it have a dev environment?
Does it have a stage environment?
Does it have CloudWatch alarms?
Does it have Rollbar set up?
Are Grafana dashboards complete?
Are application logs available in Kibana and are the fields properly parsed?
Is there a PagerDuty rotation in place?
Is code review taken seriously and done rigorously?
Are there quick smoke tests (e.g. curl one-liners) for local development to make sure that the environment is working as expected?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment