Introduction to system design

introduction-to-system-design

What is system design?

System design is the process of defining the elements of a system, as well as their interactions and relationships, in order to satisfy a set of specified requirements.

It involves taking a problem statement, breaking it down into smaller components and designing each component to work together effectively to achieve the overall goal of the system.

What does this mean? System design is that planning stage in software engineering where you design the flow, patterns, architecture of how the system you’re trying to build becomes functional and efficient, taking better steps to build a better system. So you’re asked to build an authentication system and yeah, you probably already know how to build one but those that actually satisfy the requirement of the project? This is the very big question to ask as a software engineer designing a system. It starts from as little as the language, framework to use.

How do I approach system design?

This is a very important question and I’ll be going through a few steps as to how you can approach it and build a better system

  • Understand the problem:
    This is the most important stage of all. Most software engineers jump right into building a solution without actually understanding the problem it is trying to solve and also the use case. You want to make sure you understand the problem brought before you down to the last detail before you start proffering solutions especially during interviews as this is one of the stages of the interview process and a determining one at that. Be sure to ask a lot of questions to understand what problem you’re going to be solving and then you can start bringing in those solutions.

  • Identify the scope of the system:
    This still falls under understanding the problem. You should try and get the scope of the system in the sense that building an authentication system for a blog application is different from building one for a fintech application. A blog application does not necessarily need 2FA (Two-factor authentication) but a fintech definitely does. But now, there are some blog applications that may require one and that is why you need to identify and understand the scope of the system you’re trying to build.

  • Create a high-level design:
    A diagram is necessary if this is going to be a long term project and not just an interview process as this will help future engineers to understand the system and how it works. As you keep improving the system, be sure to improve the design. If necessary, version it for high end maintainability.

  • Continuously monitor and improve the system:
    Now, you don’t want to just build a system and assume everything is perfect. I don’t think there will ever exist a perfect system so you would want to monitor it and see ways it can be improved. This should be done from continuously.

This is just an introduction to my series on system design. I will be dropping some system design concepts in the next one.

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
announcing-imagen-4-fast-and-the-generally-availability-of-the-imagen-4-family-in-the-gemini-api

Announcing Imagen 4 Fast and the generally availability of the Imagen 4 family in the Gemini API

Related Posts