Supportability

There is an expanded set of capabilities that are also necessary when addressing non-functional requirements – those that are very relevant specially when your reusable component or service grows in popularity and usage. They fall under two categories: operational agility and fault-tolerance. Here are a few candidate capabilities in both these categories:

Operational Agility / Supportability:

  • Ability to enable / disable both services and operations within a service

  • Ability to provision additional service instances based on demand (elastic scaling)

  • Maintenance APIs for managing resources (reset connection pool, individual connections, clear cached data, etc.)

  • Ability to view Service APIs that are breaching and ones that are the risk of breaching operational SLAs

  • Model and detect out of band behavior with respect to resource consumption, transaction volumes, usage trends during a time period etc.

Fault Tolerance:

  • Failing fast when there is no point executing operations partially

  • Ability to detect denial of service attacks from malicious clients

  • Ability to gracefully handle unexpected usage spikes via load shedding, re-balancing, deferring non-critical tasks, etc.

  • Detecting failures that impact individual operations as well as services as a whole

  • Dealing with unavailable downstream dependencies

  • Leveraging time outs when integrating with one or more dependencies

  • Automatically recovering from component failures

It is also important to point out that both these aspects are heavily interconnected and influence each other.

Last updated