System Design: Difference between revisions
Line 7: | Line 7: | ||
The goals of system design is to build software systems that first and foremost are correct, in that the system correctly implements the functions it was built to implement. Additionally, they should aim to maximize reliability, scalability and maintainability. | The goals of system design is to build software systems that first and foremost are correct, in that the system correctly implements the functions it was built to implement. Additionally, they should aim to maximize reliability, scalability and maintainability. | ||
=A Typical System= | =A Typical System= | ||
Many web and mobile applications in use today are conceptually similar to the generic system described below. The functionality differs, as well as reliability, scalability and maintainability requirements, but most systems have mobile and browser clients, communicate with the backend via [[HTTP]] or [[WebSocket]] protocols, include a business logic layer deployed as monoliths or micro-services, in most cases in containers managed by a container orchestration system like [[Kubernetes]] | Many web and mobile applications in use today are conceptually similar to the generic system described below. The functionality differs, as well as reliability, scalability and maintainability requirements, but most systems share at least several of the elements described here. They have mobile and browser clients, communicate with the backend via [[HTTP]] or [[WebSocket]] protocols, include a business logic layer deployed as monoliths or micro-services, in most cases in containers managed by a container orchestration system like [[Kubernetes]], persist their data in databases, either relational or [[NoSQL]] | ||
=TODO= | =TODO= |
Revision as of 23:08, 6 November 2021
External
- Episode 06 Unqualified Engineer - Jackson Gabbard: Intro to Architecture and Systems Design Interviews https://www.youtube.com/watch?v=ZgdS0EUmn70
Internal
Overview
The goals of system design is to build software systems that first and foremost are correct, in that the system correctly implements the functions it was built to implement. Additionally, they should aim to maximize reliability, scalability and maintainability.
A Typical System
Many web and mobile applications in use today are conceptually similar to the generic system described below. The functionality differs, as well as reliability, scalability and maintainability requirements, but most systems share at least several of the elements described here. They have mobile and browser clients, communicate with the backend via HTTP or WebSocket protocols, include a business logic layer deployed as monoliths or micro-services, in most cases in containers managed by a container orchestration system like Kubernetes, persist their data in databases, either relational or NoSQL
TODO
- Process and redistribute: Distributed Systems
- Clean Architecture https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164/
- https://medium.com/@i.gorton/six-rules-of-thumb-for-scaling-software-architectures-a831960414f9
- http://highscalability.com
- Harvard Scalability Class David Malan https://www.youtube.com/watch?v=-W9F__D3oY4
- https://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones
- https://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database
- https://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache
- https://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism
- https://www.hiredintech.com/classrooms/system-design/lesson/61
- Learning/System Design/*.pdf
- https://github.com/checkcheckzz/system-design-interview
- https://github.com/donnemartin/system-design-primer
- https://github.com/mmcgrana/services-engineering
- https://github.com/orrsella/soft-eng-interview-prep/blob/master/topics/system-architecture.md
- https://queue.acm.org/detail.cfm?id=3480470
- https://blog.pramp.com/how-to-succeed-in-a-system-design-interview-27b35de0df26
- https://developers.redhat.com/articles/2021/09/21/distributed-transaction-patterns-microservices-compared
Subjects
- State Transition Diagram
- Distributed Systems
- NoSQL discussion: https://bigdata-ir.com/wp-content/uploads/2017/04/NoSQL-Distilled.pdf NoSQL Distilled by Sadalage, Fowler. (Learning/Systems Design)
- Schemaless: Fowler https://martinfowler.com/articles/schemaless/
Organizatorium
- Capacity estimation