Architecture
In ADDA, we follow the MVC (Model-View-Controller) architectural design pattern, enhancing modularity for easier development, testing, and maintenance.
MVC Architecture
Components
Model
- Data Management: Manages the application's data, including retrieval and storage.
- Business Logic: Encapsulates the rules and logic of the application.
- Notification: Notifies the View when data changes.
View
- User Interface: Displays data to the user.
- Data Binding: Updates the UI when the Model changes.
- User Input: Captures user input for the Controller.
Controller
- Handling Requests: Receives user inputs from the View.
- Updating the Model: Modifies or retrieves data from the Model.
- Selecting the View: Determines which View to render.
Flow of Control
- User Interaction: The user interacts with the View.
- Request Handling: The View sends input to the Controller.
- Processing Logic: The Controller processes the input and interacts with the Model.
- Data Manipulation: The Model updates its state and notifies the View.
- View Update: The Controller updates the View with new data.
- Display: The View renders the updated data.
Example in Web Development
In a typical web application: - Model: Defines data structures (e.g., a Post class) and methods for interacting with the database. - View: Uses HTML templates to present data and forms for user interaction. - Controller: Handles web requests, processes user inputs, updates the Model, and determines which View to display.
Tools and Technologies Used in ADDA
Programming Languages
- Python: Used for backend development, especially in computer vision tasks and hardware integration.
- JavaScript: Enhances interactivity in web applications, allowing dynamic user experiences.
Database
- MySQL: Manages structured data efficiently with complex queries and relationships.
Frameworks
- Flask: A lightweight web framework that simplifies web application development.
- React: For building reusable components and dynamic user interfaces.
- FastAPI: Used for high-performance API development with clear data models.
Other Technologies
- RabbitMQ: A message broker for asynchronous communication.
- Triton: Manages models and utilizes GPUs for machine learning tasks.
- Gunicorn: Serves Python web applications efficiently.
- Nginx: Acts as a reverse proxy for load balancing.
- Icinga: Monitors the performance and availability of infrastructure.
- Certbot: Automates SSL/TLS certificate management.
- HTML, CSS, jQuery: Essential for frontend development, structuring, styling, and interactivity.
Hardware
- CPU, GPUs, Network Switches: Essential components for performance, with GPUs accelerating computations for AI applications.