mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-17 22:18:02 +00:00
331 lines
13 KiB
HTML
331 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
|
||
|
||
<link rel="shortcut icon" href="../../img/favicon.ico">
|
||
<title>Introduction - SchoolOfSRE</title>
|
||
<link href="../../css/bootstrap-custom.min.css" rel="stylesheet">
|
||
<link href="../../css/font-awesome.min.css" rel="stylesheet">
|
||
<link href="../../css/base.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
|
||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||
<!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script src="../../js/jquery-1.10.2.min.js" defer></script>
|
||
<script src="../../js/bootstrap-3.0.3.min.js" defer></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||
<script>hljs.initHighlightingOnLoad();</script>
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
||
<div class="container">
|
||
|
||
<!-- Collapsed navigation -->
|
||
<div class="navbar-header">
|
||
<!-- Expander button -->
|
||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="../..">SchoolOfSRE</a>
|
||
</div>
|
||
|
||
<!-- Expanded navigation -->
|
||
<div class="navbar-collapse collapse">
|
||
<!-- Main navigation -->
|
||
<ul class="nav navbar-nav">
|
||
<li >
|
||
<a href="../..">Home</a>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Fundamentals Series <b class="caret"></b></a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li class="dropdown-submenu">
|
||
<a href="#">Git</a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li >
|
||
<a href="../../git/git-basics/">Git Basics</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../git/branches/">Working With Branches</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../git/github-hooks/">Github and Hooks</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
|
||
<li class="dropdown-submenu">
|
||
<a href="#">Linux Networking</a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li >
|
||
<a href="../../linux_networking/intro/">Introduction</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../linux_networking/dns/">DNS</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../linux_networking/udp/">UDP</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../linux_networking/http/">HTTP</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../linux_networking/tcp/">TCP</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../linux_networking/ipr/">Routing and Conclusion</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Python and Web <b class="caret"></b></a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li >
|
||
<a href="../../python_web/intro/">Introduction</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../python_web/python-concepts/">Some Python Concepts</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../python_web/python-web-flask/">Python, Web and Flask</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../python_web/url-shorten-app/">The URL Shortening App</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../python_web/sre-conclusion/">SRE Aspects of The App and Conclusion</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown active">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Systems Design <b class="caret"></b></a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li class="active">
|
||
<a href="./">Introduction</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../scalability/">Scalability</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../availability/">Availability</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../fault-tolerance/">Fault Tolerance</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../conclusion/">Conclusion</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Data <b class="caret"></b></a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li class="dropdown-submenu">
|
||
<a href="#">Big Data</a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li >
|
||
<a href="../../big_data/intro/">Introduction</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../big_data/overview/">Overview of Big Data</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../big_data/usage/">Usage of Big Data techniques</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../big_data/evolution/">Evolution of Hadoop</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../big_data/architecture/">Architecture of Hadoop</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../big_data/tasks/">Tasks and conclusion</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Security <b class="caret"></b></a>
|
||
<ul class="dropdown-menu">
|
||
|
||
<li >
|
||
<a href="../../security/intro/">Introduction</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../security/fundamentals/">Fundamentals of Security</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../security/network_security/">Network Security</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../security/threats_attacks_defences/">Threat, Attacks & Defences</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="../../security/writing_secure_code/">Writing Secure code</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li >
|
||
<a rel="next" href="../../python_web/sre-conclusion/">
|
||
<i class="fa fa-arrow-left"></i> Previous
|
||
</a>
|
||
</li>
|
||
<li >
|
||
<a rel="prev" href="../scalability/">
|
||
Next <i class="fa fa-arrow-right"></i>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
|
||
<ul class="nav bs-sidenav">
|
||
<li class="main active"><a href="#systems-design">Systems Design</a></li>
|
||
<li><a href="#prerequisites">Prerequisites</a></li>
|
||
<li><a href="#what-to-expect-from-this-course">What to expect from this course</a></li>
|
||
<li><a href="#what-is-not-covered-under-this-course">What is not covered under this course</a></li>
|
||
<li><a href="#course-content">Course Content</a></li>
|
||
<li><a href="#introduction">Introduction</a></li>
|
||
<li><a href="#backstory">Backstory</a></li>
|
||
</ul>
|
||
</div></div>
|
||
<div class="col-md-9" role="main">
|
||
|
||
<h1 id="systems-design">Systems Design</h1>
|
||
<h2 id="prerequisites">Prerequisites</h2>
|
||
<p>Fundamentals of common software system components:
|
||
- Operating Systems
|
||
- Networking
|
||
- Databases RDBMS/NoSQL</p>
|
||
<h2 id="what-to-expect-from-this-course">What to expect from this course</h2>
|
||
<p>Thinking about and designing for scalability, availability, and reliability of large scale software systems.</p>
|
||
<h2 id="what-is-not-covered-under-this-course">What is not covered under this course</h2>
|
||
<p>Individual software components’ scalability and reliability concerns like e.g. Databases, while the same scalability principles and thinking can be applied, these individual components have their own specific nuances when scaling them and thinking about their reliability.</p>
|
||
<p>More light will be shed on concepts rather than on setting up and configuring components like Loadbalancers to achieve scalability, availability and reliability of systems</p>
|
||
<h2 id="course-content">Course Content</h2>
|
||
<h3 id="table-of-contents">Table of Contents</h3>
|
||
<ul>
|
||
<li><a href="https://linkedin.github.io/school-of-sre/systems_design/intro/#backstory">Introduction</a></li>
|
||
<li><a href="https://linkedin.github.io/school-of-sre/systems_design/scalability/">Scalability</a></li>
|
||
<li><a href="https://linkedin.github.io/school-of-sre/systems_design/availability/">High Availability</a></li>
|
||
<li><a href="https://linkedin.github.io/school-of-sre/systems_design/fault-tolerance/">Fault Tolerance</a></li>
|
||
</ul>
|
||
<h2 id="introduction">Introduction</h2>
|
||
<p>So, how do you go about learning to design a system?</p>
|
||
<p><em>” Like most great questions, it showed a level of naivety that was breathtaking. The only short answer I could give was, essentially, that you learned how to design a system by designing systems and finding out what works and what doesn’t work.”
|
||
Jim Waldo, Sun Microsystems, On System Design</em></p>
|
||
<p>As software and hardware systems have multiple moving parts, we need to think about how those parts will grow, their failure modes, their inter-dependencies, how it will impact the users and the business.</p>
|
||
<p>There is no one-shot method or way to learn or do system design, we only learn to design systems by designing and iterating on them.</p>
|
||
<p>This course will be a starter to make one think about scalability, availability, and fault tolerance during systems design.</p>
|
||
<h2 id="backstory">Backstory</h2>
|
||
<p>Let’s design a simple content sharing application where users can share photos, media in our application which can be liked by their friends. Let’s start with a simple design of the application and evolve it as we learn system design concepts</p>
|
||
<p><img alt="First architecture diagram" src="../images/first-architecture.jpg" /></p></div>
|
||
</div>
|
||
|
||
<footer class="col-md-12">
|
||
<hr>
|
||
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
|
||
</footer>
|
||
<script>
|
||
var base_url = "../..",
|
||
shortcuts = {"search": 83, "next": 78, "help": 191, "previous": 80};
|
||
</script>
|
||
<script src="../../js/base.js" defer></script>
|
||
|
||
<div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="Keyboard Shortcuts Modal" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||
<h4 class="modal-title" id="exampleModalLabel">Keyboard Shortcuts</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<table class="table">
|
||
<thead>
|
||
<tr>
|
||
<th style="width: 20%;">Keys</th>
|
||
<th>Action</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="help shortcut"><kbd>?</kbd></td>
|
||
<td>Open this help</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="next shortcut"><kbd>n</kbd></td>
|
||
<td>Next page</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="prev shortcut"><kbd>p</kbd></td>
|
||
<td>Previous page</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="search shortcut"><kbd>s</kbd></td>
|
||
<td>Search</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="modal-footer">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|