System Design - Part 1: Components
Mangesh Bulkar
Senior Manager Software Engineering | Solutions Architect | Technical Manager | AWS | eCommerce | Building Team
Components as Basic Building Blocks of a System
Components are fundamental units within a system, categorised into two types:
- Logical Entities
- Tangible Entities
Data Storage and Management
Every system relies on data. This data is stored and managed using databases, which serve as the core technology enabling data storage and accessibility. Users interact with databases through operations like reading, writing, fetching, and storing information. The communication between applications and databases occurs through various layers, primarily the application layer.
Application Layer
Applications represent services that users interact with, such as mobile apps, desktop applications, or websites. These applications serve as logical entities that provide access to the system's functionalities. The interaction between applications and databases involves communication protocols such as HTTP, TCP/IP, and others, facilitating data exchange and system operation.
领英推荐
Communication Protocols
Communication protocols are logical entities that enable inter-machine communication within a system. Applications and services communicate using protocols like HTTP, TCP, IP, etc., and interact on a software level through components such as APIs and RPCs.
Presentation Layer
Some systems include a presentation layer that users directly interact with, such as mobile apps, desktop apps, or web applications. These interfaces provide the user-facing aspect of the system, enabling interaction and engagement. Systems designed without a presentation layer may include specialized applications like logging systems that focus solely on data collection without user interaction.
Infrastructure
The physical environment where all system components operate and interact is known as infrastructure. Cloud providers like AWS, GCP, or Azure offer these instances where applications, databases, and other system components are deployed and hosted.
Overview of the System
The system comprises several interconnected components:
- Presentation Layer: User interfaces (desktop, mobile, web) enabling user interaction.
- Application Layer: Services facilitating system functionalities and interacting with databases.
- Data Storage: Managed by databases (e.g., MongoDB, MySQL) for storing and retrieving information.
- Inter-component Communication: Facilitated by protocols such as APIs, RPCs, and messaging.
- Infrastructure: Physical and virtual instances provided by cloud services (e.g., AWS, GCP, Azure) where the system components operate and communicate.
By structuring the system with these components, including robust security mechanisms and protocols, the system operates securely and efficiently, minimizing vulnerabilities and ensuring reliable performance across its infrastructure.