Would you like to learn about system architecture?　Here are some good resources.
Tags: systemdesign, architecture, webdev
Published: 2023-06-11 11:05:03

This article is a translation of [システム設計関連の資料を読み漁った](https://bmf-tech.com/posts/%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e8%a8%ad%e8%a8%88%e9%96%a2%e9%80%a3%e3%81%ae%e8%b3%87%e6%96%99%e3%82%92%e8%aa%ad%e3%81%bf%e6%bc%81%e3%81%a3%e3%81%9f) with additions and corrections.

What is the best way to learn about system architecture?

System architecture is a broad category.

If you want to learn how to approach everyday design challenges, prepare for a systems architecture interview, or learn more broadly about a wide range of systems architecture topics, there are good articles for you.

I've uploaded a list of some of the articles I've read and would like to share them with you.

## Good resources for learning system architecture
## GitHub
- [donnemartin/system-design-primer](https://github.com/donnemartin/system-design-primer/blob/master/README-ja.md)
  - Seems to cover the basic concepts of system design. It seems to be maintained, but there are some 404 articles and links to articles whose contents seem to be outdated.
- [shashank88/system_design](https://github.com/shashank88/system_design)
  - A collection of resources for an approach to beginning preparation for a systems design interview.
- [yangshun/tech-interview-handbook](https://github.com/yangshun/tech-interview-handbook)
  - The content was about coding interviews, not system design.
- [charlax/professional-programming](https://github.com/charlax/professional-programming) 
  - Not specific to system design, but about the knowledge of this and that in software development in general. There is also a discussion of system design. The necessary areas of engineering are covered widely.
- [karanpratapsingh/system-design](https://github.com/karanpratapsingh/system-design)
  - A straightforward summary of the fundamentals of system design.
  - Good basic content, organized into a set of topics.
- [checkcheckzz/system-design-interview](https://github.com/checkcheckzz/system-design-interview)
  - Links to articles related to system design.
- [binhnguyennus/awesome-scalability](https://github.com/binhnguyennus/awesome-scalability)
  - Links to articles related to system design. There are a large number of links for each keyword.
- [System Design Cheatsheet](https://gist.github.com/vasanthk/485d1c25737e8e72759f)
  - Not so much a cheatsheet as a list of system design keywords.

## Articles
- [Scalable Web Architecture and Distributed Systems](https://www.aosabook.org/en/distsys.html)
  - An example of best practices when building the Web as a distributed system.
- [Enterprise Integration Patterns - Messaging Patterns](https://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html)
  - A collection of several examples of messaging patterns.
- [tianpan.co](https://tianpan.co/notes/2016-02-13-crack-the-system-design-interview)
  - It describes architectural examples and theories in a simple manner with little explanations.
- [hiredintech.com](https://www.hiredintech.com/system-design)
  - A step-by-step explanation of the system design interview approach. Includes examples.
- [Technical Interview Questions](https://www.interviewbit.com/technical-interview-questions/)
  - A site where you can learn about technical interviews. It seems to be very useful if you are job hunting for overseas tech companies.
  - Various quizzes are prepared, and there is also a category for system design. There seem to be various questions and answers (discussions?). There seem to be a lot of questions and answers (discussions?), so I think it will be a good learning experience.
- [How to Nail the System Design Interview + Top System Design Interview Questions and Answers](https://blog.tryexponent.com/how-to-nail-the- system-design-interview/#)
  - An overview of approaches to the system design interview.
- [System Design Interview Questions - Concepts You Should Know](https://www.freecodecamp.org/news/systems-design-for- interviews/)
  - A collection of tips on what you should know about working on a system design interview.
- [highscalability.com](https://highscalability.com/)
  - Several articles from this site are also featured on system-design-primer. There are plenty of examples from various companies.
- [How to Prepare for the System Design Interview in 2023](https://www.educative.io/blog/how-to-prepare-system-design-interview)
  - An easy-to-understand article on how to prepare for the system design interview.
- [Google System Design Interview Preparation Doc | Complete Guide](https://workat.tech/system-design/article/google-system-design- interview-prep-doc-m684to5zzkj4)
  - Summary of Google's System Design Interview Preparation
- [An Introduction to System Design Interviews
December 20, 2021](https://viglucci.io/introduction-to-system-design-interviews)
  - An introductory article about system design interviews. It briefly describes the approach.
- [System Design Interviews: A Step-By-Step Guide](https://designgurus.org/blog/step-by-step-guide) 
  - Describes the approach to system design interviews.
- [6 Interview Questions for System Designers (With Example Answers)](https://www.indeed.com/career-advice/interviewing/system-design- interview-questions)
  - Simple example questions and sample answers about the system design interview.
- [Crack the System Design interview: tips from a Twitter software engineer](https://zhiachong.medium.com/how-to-system-design-dda63ed27e26)
  - System Design Interview tips from a Twitter software engineer.
- [System Design Interview Tutorial - The Beginner's Guide to System Design](https://www.freecodecamp.org/news/system-design-) interview-practice-tutorial/)
  - How to approach an interview using Youtube's System Design as an example.
- [The complete guide to cracking the System Design interview](https://towardsdatascience.com/the-complete-guide-to-the-system-design- interview-ba118f48bdfc) 
  - How to approach a system design interview and links to example questions.
- [System design interview prep (relax, start here)](https://igotanoffer.com/blogs/tech/system-design-interview-prep)
  - System Design Interview Preparation, Basics
- [System Design Interview Preparation Tips](https://www.interviewkickstart.com/blog/system-design-interview-preparation-tips)
  - System design interview tips
- [Architecture Issues Scaling Web Applications](http://venkateshcm.com/2014/05/Architecture-Issues-Scaling-Web-Applications/)
  - A straightforward and to the point article on application scaling and performance tuning.
- [Little's Law in Performance Load Testing](https://qiita.com/hiro0107@github/items/6154b412c7ff29c8785f)
  - About Little's Law in Performance Load Testing
  - It's good to remember this law when thinking about performance.
- [How To Determine Web Application Thread Pool Size](http://venkateshcm.com/2014/05/How-To-Determine-Web-Applications-Thread-Poll-Size/)　
  - How to Determine Web Application Thread Pool Size
  - How to approach the problem with Little's Law in mind.
- [principles.design](https://principles.design/examples/)
  - A collection of design principles not limited to system design.

## Book.
- [fundamentals of software architecture](https://www.oreilly.co.jp/books/9784873119823/)
  - A book about software architecture evaluation perspectives and architectural patterns.
- [Software Architecture Hardparts](https://www.oreilly.co.jp/books/9784873119823/)
  - A book about hard problems in distributed systems approach.
  - I want to reread it...
  - I have a strong attachment to this book, as I volunteered to help with the translation review.
- [Data Oriented Application Design](https://www.oreilly.co.jp/books/9784873118703/)
  - I think this is a bit far from the topic of system design, but I think there are many aspects that are relevant to the design of distributed systems.

## Video
- [System Design - Gaurav Sen](https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX)
  - A collection of videos explaining major approaches and examples in system design.
- [SYSTEM DESIGN INTERVIEW PREPARATION SERIES](https://www.codekarle.com/)
  - A collection of videos explaining system design using the services of several companies as subjects.
- [CS75 (Summer 2012) Lecture 9 Scalability Harvard Web Development David Malan](https://www.youtube.com/watch?v=-W9F__D3oY4&t=6s)
  - Video of a class on scalability at Harvard University.
  - Probably quite famous

## Slides
- [Selecting and Using Messaging Services to Achieve "Loose Coupling"](https://pages.awscloud.com/rs/112-TZM-766/images/DevAx_connect_season1_Day2_MessagingService_%E9%85%8D%E5%B8%83.pdf)
  - Organized slides on comparison and usage considerations for messaging services.
  - Includes an introduction to AWS products.
- [Data Oriented Application Design in 30 Minutes - Data Engineering Study #18](https://speakerdeck.com/xerial/30fen-dewakarudetazhi-xiang-apurikesiyondezain- data-engineering-study-number-18)
  - The main points of that book, which is difficult to understand, are organized in an easy-to-understand manner.