Logo

dev-resources.site

for different kinds of informations.

System design common pointers

Published at
9/28/2024
Categories
systemdesign
interview
softwareengineer
sde
Author
prashantrmishra
Author
15 person written this
prashantrmishra
open
System design common pointers

What is the service?
Requirements of the service
Functional requirements: essential for the application
Nonfunctional requirements: other services that we have to keep in mind like reliability, availability, latency, predictability, etc
Extended requirements: like analytics, access to the service through rest apis by other services

Design consideration:
limits, etc of the service
capacity estimations and constraints
traffic estimates
storage estimates
bandwidth estimates
memory( cache size) estimates
Note: I suggest not worrying about the math right now. Instead, focus on your design. As you work through the high-level design or dive deeper into specific components, you can incorporate math when you hit a critical point where calculations will directly influence your direction. This approach is more practical, sophisticated, and closer to what you'd do on the job. My recommendation is to follow this methodβ€”take it or leave it

System API:
What api the service will be using, what will be the parameters of those api service

Database design:
database schema: involving different tables
what db will you be using like relational or key-value based and why

High-level design:
Explain with a diagram your client-server architecture, how the client will interact with the application server, and how the application server will communicate with the db server/storage or memory/cache servers

Component design:
After explaining the high-level design now, dig deep into the designing of one/all layers of the service
Example:
a. Application layer: How to handle read/write requests, how will your application layer encrypt the data and send it to db for storage?
b. Datastore layer: What database type will be used and why in detail?(with pros and cons of your choices)
c. Finally try to showcase a diagrammatical representation of what you explained in a. application layer, and b. Datastore layer

Purging or db cleanup: How will you clean up the db? ( for expired data or unused data if any)

Data partitioning and replication: How will you do data replication for availability what partition/sharding strategy? will you be using key-based/range-based/dictionary-based sharding, if none of these techniques are useful how will you use(if you have to use consistent hashing) consistent hashing?

Cache: What cache will you use and what percentage of data will be caching?

Load balancer: What type of load balancer will you be using and where will you place these load balancers?
like placing one load-balancer between the client and the application server, one between the application server and the DB server, and one between the application server and the cache server(like Memcache, Redis cache)

Security and permission: What security will you use (like https) and who will have access to this service, how will you handle authorized requests?

softwareengineer Article's
30 articles in total
Favicon
How to Grow as a Full-Stack Engineer: Practical Tips for Young Developers
Favicon
Personal branding for Developers: How to Establish Your Online Presence and Unlock Opportunities
Favicon
System design common pointers
Favicon
Freelancing as a Software Developer
Favicon
Freelancing as a Software Developer
Favicon
Resilience Evaluation and Optimization Framework β€” REOF
Favicon
Software Engineer career levels, a playbook for tech recruiters and aspiring software engineers
Favicon
Unlocking Algorithmic Efficiency with Big O Notation
Favicon
Software Engineer | Frontend Developer | Next.Js Developer | MERN Developer | Node.js Developer | Typescript Developer
Favicon
How to Design A Resilient APIs That Prevent Site Incident
Favicon
A Guide to Measuring Engineering Team Performance
Favicon
Be Aware of Chasing Prestige
Favicon
A Gentle Introduction to Kafka Consumer Group
Favicon
How do you differentiate Junior/Mid/Senior developer?
Favicon
Why Building Relationships Matters in Software Engineering
Favicon
How to Have an Effective Collaboration
Favicon
How to Ask Questions That Trigger Rapid Response Time
Favicon
Software developers mental health
Favicon
Book Summary: Flow - The Psychology of Optimal Experience
Favicon
10 apps for better days
Favicon
Engenharia de software?
Favicon
What i spect about my Codding Bootcamp?
Favicon
Best Practices for Building Scalable and Resilient Microservices
Favicon
Naming Matters: The Importance of Good Naming in Clean Code
Favicon
Soft Skills For Software Engineers
Favicon
3 Tips to Adopt Simplicity Mindset When Designing Software
Favicon
How to Grow Really Fast as a Software Engineer
Favicon
How to Write Code That Are Extensible
Favicon
git review -2022: My 2022 wrap up as a Software Engineer
Favicon
Demystifying Trust Building: How to Earn Trust Like a Technology Leader

Featured ones: