Design concepts are ideas and principles that software engineers use to design and build complex computer systems that meet specific needs. This topic covers a variety of topics related to the nature of software and hardware, how they work together, and how they solve different problems such as performance, availability, energy, and security.
The purpose of system design is to create solutions that are efficient, reliable, easy to manage, and meet the needs of today's applications. Design concepts provide a framework for thinking about and solving complex engineering problems. Software architects and engineers use these techniques to build robust and scalable systems that can meet the demands of today's applications.
- Vertical scaling: This is the process of adding resources, such as RAM or CPU, to a server to increase its capacity. However, there is a limit to the number of servers you can scale using this method.
- Horizontal scaling: The process of adding more servers to the system to increase its capacity. With horizontal scaling, multiple servers work together to handle the load and provide redundancy and fault tolerance. This is done by adding copies of servers and load balancers to distribute the load among them.
- Load Balancer: A load balancer is a server that acts as a reversal agent, receiving incoming requests and forwarding them to the appropriate server. Load balancing algorithms such as round-robin or hashing incoming request IDs can be used to evenly distribute the load among servers.
- Content Delivery Network (CDN): A CDN is a worldwide network of servers that can be used to distribute static content such as images, videos, HTML, CSS, and JS files. These servers are optimized to quickly deliver content to users, wherever they are.
- Caching: Caching involves making copies of files so that they can be accessed more quickly in the future. CDNs often use caching to deliver content faster.
- IP Address: An IP address is a unique number assigned to every device connected to the internet. It allows devices to communicate over the internet.
- TCP/IP: TCP/IP is a suite of protocols used for Internet communication. It has two main protocols: TCP and Internet Protocol (IP).
- Domain Name System (DNS): DNS is a way to translate human-readable domain names like google.com into IP addresses that computers can understand.
- HTTP: HTTP is a protocol used for communication between web browsers and servers. It stands for Hypertext Transfer Protocol and is used to transfer information on the internet.
- REST: REST is an architectural framework for web development. It stands for state representation based on the HTTP protocol.
- GraphQL: GraphQL is a query language to retrieve data from a server. Created by Facebook, it reduces the amount of information sent over the network by allowing users to specify the information they need.
- gRPC: gRPC is a modern, high-performance RPC (Remote Procedure Call) protocol that enables clients and servers to communicate over the Internet. It is designed to be fast, efficient, and fluid.
- WebSockets: WebSockets is a protocol that allows communication between a client and a server over a TCP connection. This allows real communication between the client and server.
- SQL is a programming language for managing relational databases. It is used to add, modify, and retrieve information from the database.
- ACID: ACID is a set of objects that guarantees the reliability and consistency of changes in data. Stands for Atomicity, Consistency, Isolation, and Durability.
- NoSQL: NoSQL is a term used to describe databases that do not use relational data structures. Instead, they use a variety of models, such as data, key values, charts, and column families.
- Fragmentation: Fragmentation is a technique used to distribute data among multiple servers, or nodes. It is often used in large distribution systems to improve performance and scalability.
- Replication: Replication is the process of copying data from one database or server to another database or server. It is often used to provide redundancy and improve crime prevention.
- CAP: A theory in which, in a distribution, it is impossible to provide all three of the following guarantees at the same time: equity, existence, and willingness to make a distribution. Consistency means all nodes in the system see the same information at the same time; Availability means all requests are answered; and Partition tolerance means the system can work even if a network is split. In other words, when creating a distribution, you must choose which of the three warranties you wish to provide at a third-party cost.
- Message Queue: A message queue is a service that allows different parts of the system to communicate with each other asynchronously. It involves sending messages without the sender needing to wait for the receiver to process the message immediately. This allows for simpler and decoupled architectures in distributed systems, where different parts can communicate with each other without being tightly coupled.
Tomorrow, let's talk about additional concepts that can be useful when designing and implementing software systems.
Software Engineer (CSSA | AWS | React) at Evonsys Pvt.Ltd / Ex: Virtusa
1 年Good work ??