9 Design a notification/alerting service
This chapter covers
- Limiting the feature scope and discussion of a service.
- Breaking up a service into platform-specific channels.
- Designing a system for flexible configurations and templates.
- Handling other typical concerns of a service.
We create functions and classes in our source code to avoid duplication of coding, debugging, and testing, to improve maintainability, and to allow reuse. Likewise, we generalize common functionalities used by multiple services. (Centralization of cross-cutting concerns.)
Sending user notifications is a common system requirement. In any system design discussion, whenever we discuss sending notifications, we should suggest a common Notification Service for the organization.
9.1 Functional Requirements
Our Notification Service should be as simple as possible for a wide range of users, which causes considerable complexity in the functional requirements. There are many possible features that a Notification Service can provide. Given our limited time, we should clearly define some use cases and features for our Notification Service that will make it useful to our anticipated wide user base. A well-defined feature scope will allow us to discern and optimize for its non-functional requirements. After we design our initial system, we can discuss and design for further possible features.