Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 7.16 KB

boundedcontexts.md

File metadata and controls

66 lines (44 loc) · 7.16 KB

Overview

A high level view of the identified Bounded Contexts is in the diagram below:

Bounded Contexts

Camera Deployment and Management:

This context involves the setup, configuration, and maintenance of cameras. It includes registering new cameras to the system, managing firmware updates, and handling camera health and status. We will require the cameras to be programmed to accommodate the following functions:

  • Connect to a message broker of choice MQTT, AMQPS, Kafka
  • Send a Heartbeat message containing camera specific information (IP, device version, capabilities, geo location) at regular intervals
  • Send captured images whenever a "Movement" event was triggered
  • Connect to a specific message broker topic to collect updates - new ML model, new image to recognize, new software features

The Cameras will not have to expose any API or other interface, given their reduced computational power. We recommend that cameras are programmed to only connect to the message broker for both sending the information related to motion events and consuming messages containing firmware updates or configuration updates from a specific Topic, could be a camera specific topic or all camera updates having one Topic and multiple partitions depending on camera IDs.

Each camera is configured with a digital certificate signed by the Internal Certification Authority, to enable Mutual TLS for connecting to the message broker. This certificate will be maintained via the same mechanism as explained above.

Wildlife Monitoring and Identification:

This focuses on the ongoing monitoring activities, capturing events of interest (like wildlife movements), and identifying the species, behaviors, and other relevant ecological data.

We have identified the concept of "Observation", which encapsulates the necessary information regarding a wildlife identification such as: wildlife identified, geo location, time and date, link to relevant image, etc. The Observations the entities that Wildlife.AI and the commnity are most interested in. An Observation is created in the Wildlife Monitoring and Identification Context by the Observation components after it consumes a Motion Event generated by Cameras in the Events Broker. The Observation component will then create an "Image Tagging" event for every image in the "Motion" Event or a "Video Tagging" event for every footage in the "Motion" event. This component also consumes "Image Tagged" or "Video Tagged" events produced by components in the Image Processing and Analysis context.

This separation of concerns allows for Observations to be created and be available to users even if they are not fully completed, so that users can identify the wildlife or ensure the Observation is not useful, Motion Event was generated by a person moving in front of the camera or other such non-wildlife related events.

Image Processing and Analysis:

This area deals with the ingestion of images or footage from the cameras, processing them through machine learning models for wildlife detection and recognition, and other external image tagging systems.

The components in this Bounded Context consume "Image Tagging" and "Video tagging" events produced by the Observation component when required by the Wildlife Monitoring and Identification context. Once the Images or Videos are tagged the corresponding "image Tagged" or "Video Tagged" events are produced so that the "Observations" can be finalised and can also can be used to maintain the image repository ensuring that the images that are not wildlife related are removed by the "Self-Maintenance" component of the system.

We have also included the internal Machine Learning system for Image recognition in this Bounded Context as it is closely dependent on the imaged processed but it can also be a separate context if it needs to be evolving independently or the internal organisation has a dedicated department for it.

Key Responsibilities:

  • Image Reception and Storage - Handling the influx of images from various cameras. Secure and efficient storage of images for processing and archival purposes.
  • Image Pre-processing - Preparing images for analysis, which may include cleaning, normalization, and transformation
  • Wildlife Detection and Classification - Applying algorithms to detect wildlife within images. Classifying the type of wildlife using machine learning models or other image recognition techniques, internal or external
  • Quality Control and Verification- Implementing mechanisms to ensure the accuracy and reliability of the image analysis. Potentially integrating manual verification processes for uncertain or critical cases.
  • Integration with External Databases or APIs - Linking analysis results with external wildlife databases or APIs for additional information or verification.

User Interaction and Management:

This context covers everything related to user accounts, including registration, authentication, profile management, and providing users with a dashboard or interface to interact with the system.

Key Responsibilities:

  • User Account Management- Handling user registrations, profile management, authentication, and authorization.
  • User Dashboard and Interaction - Providing a user interface for interacting with the system, such as viewing camera feeds, observations, and reports.
  • Access Control and Permissions - Managing what each user can see and do within the system based on their role or specific permissions.
  • User Notification System - Sending alerts and updates to users about new observations, system updates, or other relevant information.
  • User Feedback and Support - Providing channels for user feedback, support requests, and communication with system administrators or support teams.
  • User Education and Resources - Offering educational resources about wildlife monitoring, camera installation, and data interpretation.

Streaming and Event Handling:

This involves the real-time processing of data streams from cameras, handling the event-driven architecture, ensuring messages and events are correctly brokered between components, and managing the flow of information in the system.

Key Responsibilities:

  • Event Streaming- Handling real-time data streams from various cameras. Ingesting and processing these streams for events like motion detection, camera status updates, camera heartbeat etc.
  • Message Brokerage - Facilitating communication between different parts of the system through a message broker. Ensuring reliable and efficient delivery of messages (events, commands, data updates).
  • Integration Services - Providing services for integrating different bounded contexts and external systems. Handling the translation and transformation of data as it moves between contexts.
  • Event Storage and Management - Storing events for historical analysis, auditing, or delayed processing (Event Storming). Managing the lifecycle of events in the system.

Data Management and Storage (as a cross-cutting concern within each context):

Although previously discussed as a separate context, data management and storage should be considered an integral part of each bounded context, handling the persistence, retrieval, and security of data relevant to that context.