September 7, 2016
Meeting with devOps: @Kevin Falcone (Deactivated) and @MaxR (Deactivated)
Notifications Pipeline Configuration
Having a centralized notifications service for configuration settings adds much more complexity than needed.
version management, caching settings in each IDA, etc..
Conclusion: keep it simple.
If needed in the future, we can have the configurable setting be on the message object itself.
This also allows different pipeline steps for different message types.
For now, the pipeline steps (order and named queues) can be configured in each IDA.
As we don't expect this to change for a single open edX deployment.
Number of Recipients per message
Is there a use-case for having multiple recipient targets per message?
De-duplication of messages - in case a user is in more than on target type
However, this can be achieved using exclusion selectors / list instead.
Is there a need to support bulk sending?
Push notifications have some support of "channels" for bulk sending
However, these channels have to be pre-configured.
Issues when users have multiple devices and channels are not configured on all devices.
Doesn't support localization well.
Experience from the Bulk Email feature
Upon failures, messages are sent multiple times if failure happens at a later offset.
Conclusion: single "virtual" user at every step in the pipeline.
simplifies the interface
messages are smaller and easier to handle
After a certain step (e.g., User-Targeting), just create a new message per user.
Messaging technology
Starting with Rabbit
Amazon SQS
may be able to support this if we implement within constraints
Time-to-live
Use timestamp in UTC as expiration time
Verified by each step in the pipeline
Message dropped (though logged) once time exceeded
UUID
When messages branch off, keep track of parent UUID
Queues per durability/priority, also per version?
Will need to dig into this further.
Complexity possibly localized to the messaging layer.
Versioning of the libraries
- e.g., NotificationPipelineStep.Presentation.v2
treat queues as data models, similar to django migrations?
Conclusion: To avoid coordinated rollout of IDAs, important for the messaging format to be thought of as a public API