System Design Essentials

Basics of designing a software system with scalable example

Ali Zeynalli
5 min readSep 12, 2021
Photo by Azzedine Rouichi on Unsplash

So far we have discussed different software architecture topics in more low-level aspects, focusing on designing specific parts of software system separately such as backend, frontend, middleware etc. With this article we take the discussion to one step further and discuss designing a software system end-to-end. In designing whole system, besides detailed technical analysis the one needs to make thoughts about scalability of a system supporting from one user to million users. The absolute must-have pillars of a system design are:

Picking a database…

Database — whenever there is a need for a persisting data continuously, there is a need for Databases. Simply put, it is just a collection of information that is organised and saved for consistent interaction. In designing The different types like relational, non-relational databases are developed over decades to match different use-cases.

  • Relational Databases (also called SQL databases) like MySQL, PostqreSQL, DB2 are pretty popular alternatives that hold that in form of tables, rows with joining operations over primary, secondary keys.
  • Non-Relational Databases (also called NoSQL databases) like MongoDB, CouchDB, Cassandra are well-known examples that are…

--

--

Ali Zeynalli

IT-Architect | BMW Group | M.Sc. Technical University of Berlin