We are a passionate group of engineers at Adobe that helped build Adobe's Eventing Platform.
🏆 Semi-finalists of the Spring 2022 Architectural Kata hosted by O'Reilly.
Diversity Cyber Council is a 501c3 Non-Profit that serves under-represented demographics in the tech industry by facilitating education, training, and staffing opportunities to establish a sustainable and diverse talent pipeline to the workforce. Their vision is to enhance inclusion and representation in the tech industry through training, mentoring, networking, and visibility programs. Their goal is to establish a sustainable and diverse talent pipeline that extends career equity to under-represented demographics by providing access to competent training programs that lead to direct employment opportunities.
The Spotlight App Project is a sustained effort to amass a coalition of nonprofits in order to address specific needs within the communities, by leveraging a centralized platform as the base of operations to collaborate and make a collective impact.
The project aims to solve two problems:
- The decentralization and lack of support between nonprofits create gaps of service and overall impact.
- The lack of visibility of nonprofit groups and offerings creates a barrier of access to the people we aim to serve.
This architecture document aims at providing a technology solution that serves the purpose of enhancing visibility, support, and collaboration of nonprofits serving similar needs in the community and operates as a candidate case management platform.
Please go through the provided requirement document to understand the requirements better. These requirements were the main drivers for the design decisions in our architectural proposal.
- Functional Requirements: Here you'll find the different actors in the system, functionalities each user can do (aka user stories), assumptions and constraints that we considered during the process.
- Architecture Characteristics: The architecture design must incorporate these characteristics along with the above mentioned functional requirements.
The following points outline how does the architecture support some of the hard-requirements of this platform:
To facilitate ease-of-use, the Spotlight App -
- Supports multiple user surfaces - Web and Mobile. This enables users to access the platform on-the-go as per their preference.
- Creates device-size specific renditions of images present in the assignments, profiles and community posts. Based on the user-device, appropriate image rendition is returned for a seamless experience.
- Ensures that all entities in the system (candidates, non profits, services, communities, posts etc.) are searchable. It intelligently tags for seamless discovery and retrieval.
- User Experience (UX) plays a critical role in ensuring ease-of-use of the Spotlight App. The UX ensures seamless onboarding experience, continuous progress tracking, constant feedback and access to community forums.
To facilitate engagement, the Spotlight App -
- Rewards the candidates and non-profits with points and badges
- Highlights the top non-profits, top candidates, top communities, top community posts in the app. These top entities are computed platform wide and globally over a period of time (weekly, monthly etc).
- Supports notifications on all possible user surfaces - Web and Mobile. This helps in keeping the users connected and engaged.
- Ensures that the community leader and career mentor play a critical role in the engagement.
- Provides community forums where candidates, non-profits and community leaders can collaborate, share announcements/posts and ask questions.
To facilitate analytical reporting, the Spotlight App -
- Provides powerful visualisation tools to analyse data to gain meaningful insights.
- Supports SQL based dashboards to create reports and visualisations for custom queries.
- Is powered by machine learning to perform predictive analysis, data classification etc. to plan for future requirements, gaps in the services and so on.
The Spotlight architecture is built using the following architecture subsystems:
Created using Lucidchart. Refer here. |
An architecture overview detailing all high-level involved components is presented below. See Architecture Components below for more details.
Created using Lucidchart. Refer here. |
The Spotlight architecture is built using the following architecture components:
- Platform Management Subsystem
- Notification and Meeting Scheduler Subsystem
- Community Forum Management Subsystem
- Search Subsystem
- Analytics Subsystem
- Database Change Data Consumer Microservice
- Operational Reporting
Below is a physical/deployment view for the components seen in the above architectural views. For more details, see AWS deployment view.
Created using Lucidchart. Refer here. |
Observability plays an indispensible role in providing the tools to effectively monitor the usage, performance and health of the system. Spotlight App makes good use of all three pillars involved in Observability - Metrics & Monitoring, Logging and Distributed Tracing. For more details, see Observability: Metrics & Monitoring, Logging and Distributed Tracing.
Below are the key architectural decision records:
- Microservice vs Monolith Style of Architecture
- Event driven architecture (EDA)
- Database Considerations: MySQL vs NoSQL
- Change Data Capture (CDC)
- AWS for deployments
- Caching using Cache Manager
- ElasticSearch as the Search Provider
- API Gateway for Caching, Throttling, Load Balancing and Authorization
The architecture is evaluated against the identified requirements, architectural characteristics and costs.
- ADRs - contains all architecture decisions.
- Architectural Views - contains detailed architectural views with supporting documentation for every component.
- Architecture Evaluation - contains evaluation of the proposed architecture - cost analysis and validation that all architectural characteristics and requirements are fulfilled.
- Resources - contains lucidchart references, architecture diagrams and other supporting images.
- Requirements - contains the requirements and architecture characteristics considered.
We used the following tools through the entire architecture journey.
- Lucid Chart - for creating all of our architecture diagrams. Here is the document that lists all lucid chart links.
- Microsoft Powerpoint - for creating presentation slides.
- Adobe Premiere Rush - for editing the submission video.
- Microsoft Teams - for collaborating among the team members.