System design is one of the most crucial concepts of software engineering. While designing a system, you need to know which solution is used for which kind of problems. Familiarizing yourself with the basic concepts and terminologies of the system design is important for designing a fault-tolerant and performant system.
This article will try to understand an important system design concept, Message queue — a brief description of how the publish-subscribe pattern works. And at the end of the article, we will try to design a notification system using a message queue.
From the name itself, you can understand it…
System design is one of the most important concepts of software engineering. One of the main problems of designing a system is that the terminology used in the system design resources is hard to grasp at first. Besides you need to know which tool or term is used for which problem. Familiarizing yourself with the basic concepts and terminologies of system design would greatly help in designing a system.
This article explores an essential topic of system design, Caching. It is one of the essential techniques of system design. In almost all the systems, we might need to use caching…
System design is one of the most important concepts of software engineering. Everybody who starts to change into a system designer from a programmer has a hard time understanding how to know about concepts regarding a system design. If you don’t know about the terminologies that are used in system design it is hard to learn about them.
This article explains an important topic of system design, the Client-Server Architecture. You may know about how servers and clients communicate here. Familiarizing yourself with the basic concepts of TCP, IP, HTTP would greatly help in designing a system.
Client/server architecture is…
System design is one of the most important concepts of software engineering. When I started my associate architecture course, I had a hard time understanding how you design a system. One of the main problems was that the terminology used in the system design resources is hard to understand at first.
This article examines an important topic of system design, the Load Balancer. You may know about its characteristics and techniques of server selection here. Familiarizing yourself with the basic concepts and terminologies of system design would greatly help in designing a system.
A load balancer is a vital component…
Nowadays, system design interviews are part of the process of top-level tech companies. Many people are afraid of system design interviews as there’s no certain pattern to prepare. Besides, system design questions are open-ended, and there’s no standard right or wrong answer, which makes the preparation process even harder.
System design is one of the most important and feared aspects of software engineering. One of the main reasons was that everybody seems to have a different approach; there is no clear step by step guidelines.
The struggle of software engineers with system design can be divided into two parts:
We all suffer from the storm of negative thoughts every day. Negative thoughts appear in our minds daily; it does not matter how hard we try to avoid them. Negativity has such power that it can take hold of our mind and influence way too much of our life if we are not careful. So we need to be alert and conscious.
Whenever we start to do something new, there is something in the head that gives all the negative signals. What would be the output, what other people may think, what if it does not end well etc. etc…
System design is one of the most important and feared aspects of software engineering. This opinion comes from my own learning experience in an associate architecture course. When I started my associate architecture course, I had a hard time understanding the idea of designing a system.
One of the main reasons was that the terms used in software architecture books are pretty hard to understand at first, and there is no clear step by step guidelines. Everybody seems to have a different approach.
So, I set out to design a system based on my experience of learning architecture courses. This…
Availability is one of the critical aspects of Distributed Systems. In this modern age, most systems need to guarantee availability. We may say, availability is the time a system remains functional to perform its required task in a specific period.
According to Wikipedia, Availability is generally defined as uptime divided by total time (uptime plus downtime)
We sometimes use the terms reliability and availability interchangeably, but they are not the same. Reliability is availability over time if we consider the full range of possible real-world situations that can occur. If a system is reliable, you can say it is available…
System design is one of the most important and feared aspects of software engineering. This opinion comes from my own learning experience in an associate architecture course. When I started my associate architecture course, I had a hard time understanding the idea of designing a system.
One of the main reasons was that the terms used in software architecture books are pretty hard to understand at first, and there is no clear step by step guidelines. Everybody seems to have a different approach. And of course, there is a mental block also that these topics might be tough to understand.
…
Associate Architect, Samsung Electronics | Writer in free time, Like to read about technology, writing & psychology | LinkedIn https://tinyurl.com/y57d68fq