mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-08 01:28:03 +00:00
1495 lines
44 KiB
HTML
1495 lines
44 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
|
||
|
||
|
||
<link rel="shortcut icon" href="../../img/favicon.ico">
|
||
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.1.5">
|
||
|
||
|
||
|
||
<title>Scalability - SchoolOfSRE</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/main.21aed14c.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/palette.196e0c26.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
|
||
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#scalability" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<header class="md-header" data-md-component="header">
|
||
<nav class="md-header-nav md-grid" aria-label="Header">
|
||
<a href="../.." title="SchoolOfSRE" class="md-header-nav__button md-logo" aria-label="SchoolOfSRE">
|
||
|
||
<img src="../../img/sos.png" alt="logo">
|
||
|
||
</a>
|
||
<div class="md-header-nav__title" data-md-component="header-title">
|
||
|
||
<div class="md-header-nav__ellipsis">
|
||
<span class="md-header-nav__topic md-ellipsis">
|
||
<a href="../.." title="SchoolOfSRE" >
|
||
SchoolOfSRE
|
||
</a>
|
||
</span>
|
||
<span class="md-header-nav__topic md-ellipsis">
|
||
|
||
Scalability
|
||
|
||
</span>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<label class="md-header-nav__button md-icon" for="__search">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
||
</label>
|
||
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
||
</label>
|
||
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
||
</button>
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</nav>
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../.." class="md-nav__link">
|
||
Home
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" >
|
||
<label class="md-nav__link" for="nav-2">
|
||
Fundamentals Series
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Fundamentals Series" data-md-level="1">
|
||
<label class="md-nav__title" for="nav-2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Fundamentals Series
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2-1" type="checkbox" id="nav-2-1" >
|
||
<label class="md-nav__link" for="nav-2-1">
|
||
Linux Basics
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Linux Basics" data-md-level="2">
|
||
<label class="md-nav__title" for="nav-2-1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Linux Basics
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_basics/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_basics/command_line_basics/" class="md-nav__link">
|
||
Command Line Basics
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_basics/linux_server_administration/" class="md-nav__link">
|
||
Server Administration
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_basics/conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2-2" type="checkbox" id="nav-2-2" >
|
||
<label class="md-nav__link" for="nav-2-2">
|
||
Git
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Git" data-md-level="2">
|
||
<label class="md-nav__title" for="nav-2-2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Git
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../git/git-basics/" class="md-nav__link">
|
||
Git Basics
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../git/branches/" class="md-nav__link">
|
||
Working With Branches
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../git/github-hooks/" class="md-nav__link">
|
||
Github and Hooks
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../git/conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2-3" type="checkbox" id="nav-2-3" >
|
||
<label class="md-nav__link" for="nav-2-3">
|
||
Linux Networking
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Linux Networking" data-md-level="2">
|
||
<label class="md-nav__title" for="nav-2-3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Linux Networking
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/dns/" class="md-nav__link">
|
||
DNS
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/udp/" class="md-nav__link">
|
||
UDP
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/http/" class="md-nav__link">
|
||
HTTP
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/tcp/" class="md-nav__link">
|
||
TCP
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/ipr/" class="md-nav__link">
|
||
Routing
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux_networking/conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" >
|
||
<label class="md-nav__link" for="nav-3">
|
||
Python and Web
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Python and Web" data-md-level="1">
|
||
<label class="md-nav__title" for="nav-3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Python and Web
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../python_web/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../python_web/python-concepts/" class="md-nav__link">
|
||
Some Python Concepts
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../python_web/python-web-flask/" class="md-nav__link">
|
||
Python, Web and Flask
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../python_web/url-shorten-app/" class="md-nav__link">
|
||
The URL Shortening App
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../python_web/sre-conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" >
|
||
<label class="md-nav__link" for="nav-4">
|
||
Data
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Data" data-md-level="1">
|
||
<label class="md-nav__title" for="nav-4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Data
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-4-1" type="checkbox" id="nav-4-1" >
|
||
<label class="md-nav__link" for="nav-4-1">
|
||
NoSQL Concepts
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="NoSQL Concepts" data-md-level="2">
|
||
<label class="md-nav__title" for="nav-4-1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
NoSQL Concepts
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases_nosql/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases_nosql/key_concepts/" class="md-nav__link">
|
||
Key Concepts
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases_nosql/further_reading/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-4-2" type="checkbox" id="nav-4-2" >
|
||
<label class="md-nav__link" for="nav-4-2">
|
||
Big Data
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Big Data" data-md-level="2">
|
||
<label class="md-nav__title" for="nav-4-2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Big Data
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../big_data/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../big_data/evolution/" class="md-nav__link">
|
||
Evolution and Architecure of Hadoop
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../big_data/tasks/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" checked>
|
||
<label class="md-nav__link" for="nav-5">
|
||
Systems Design
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Systems Design" data-md-level="1">
|
||
<label class="md-nav__title" for="nav-5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Systems Design
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
Scalability
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="./" class="md-nav__link md-nav__link--active">
|
||
Scalability
|
||
</a>
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-akf-scale-cube" class="md-nav__link">
|
||
Scalability - AKF Scale Cube
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-horizontal-scaling" class="md-nav__link">
|
||
Scalability - Horizontal scaling
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Horizontal scaling">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_1" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-load-balancing" class="md-nav__link">
|
||
Scalability Pattern - Load Balancing
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - Load Balancing">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_2" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-lb-tasks" class="md-nav__link">
|
||
Scalability Pattern - LB Tasks
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - LB Tasks">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#service-discovery" class="md-nav__link">
|
||
Service discovery:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#health-checking" class="md-nav__link">
|
||
Health checking:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#load-balancing" class="md-nav__link">
|
||
Load balancing:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-lb-methods" class="md-nav__link">
|
||
Scalability Pattern - LB Methods
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - LB Methods">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#least-connection-method" class="md-nav__link">
|
||
Least Connection Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#least-response-time-method" class="md-nav__link">
|
||
Least Response Time Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#round-robin-method" class="md-nav__link">
|
||
Round Robin Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#ip-hash" class="md-nav__link">
|
||
IP Hash
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-caching-content-delivery-networks-cdn" class="md-nav__link">
|
||
Scalability Pattern - Caching - Content Delivery Networks (CDN)
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-microservices" class="md-nav__link">
|
||
Scalability - Microservices
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Microservices">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_3" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-sharding" class="md-nav__link">
|
||
Scalability - Sharding
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Sharding">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_4" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#applications-in-sre-role" class="md-nav__link">
|
||
Applications in SRE role
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../availability/" class="md-nav__link">
|
||
Availability
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../fault-tolerance/" class="md-nav__link">
|
||
Fault Tolerance
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" >
|
||
<label class="md-nav__link" for="nav-6">
|
||
Security
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
<nav class="md-nav" aria-label="Security" data-md-level="1">
|
||
<label class="md-nav__title" for="nav-6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Security
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/intro/" class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/fundamentals/" class="md-nav__link">
|
||
Fundamentals of Security
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/network_security/" class="md-nav__link">
|
||
Network Security
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/threats_attacks_defences/" class="md-nav__link">
|
||
Threat, Attacks & Defences
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/writing_secure_code/" class="md-nav__link">
|
||
Writing Secure code
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/conclusion/" class="md-nav__link">
|
||
Conclusion
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../CONTRIBUTING/" class="md-nav__link">
|
||
Contribute
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-akf-scale-cube" class="md-nav__link">
|
||
Scalability - AKF Scale Cube
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-horizontal-scaling" class="md-nav__link">
|
||
Scalability - Horizontal scaling
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Horizontal scaling">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_1" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-load-balancing" class="md-nav__link">
|
||
Scalability Pattern - Load Balancing
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - Load Balancing">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_2" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-lb-tasks" class="md-nav__link">
|
||
Scalability Pattern - LB Tasks
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - LB Tasks">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#service-discovery" class="md-nav__link">
|
||
Service discovery:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#health-checking" class="md-nav__link">
|
||
Health checking:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#load-balancing" class="md-nav__link">
|
||
Load balancing:
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-lb-methods" class="md-nav__link">
|
||
Scalability Pattern - LB Methods
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability Pattern - LB Methods">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#least-connection-method" class="md-nav__link">
|
||
Least Connection Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#least-response-time-method" class="md-nav__link">
|
||
Least Response Time Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#round-robin-method" class="md-nav__link">
|
||
Round Robin Method
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#ip-hash" class="md-nav__link">
|
||
IP Hash
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-pattern-caching-content-delivery-networks-cdn" class="md-nav__link">
|
||
Scalability Pattern - Caching - Content Delivery Networks (CDN)
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-microservices" class="md-nav__link">
|
||
Scalability - Microservices
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Microservices">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_3" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scalability-sharding" class="md-nav__link">
|
||
Scalability - Sharding
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Scalability - Sharding">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#refer_4" class="md-nav__link">
|
||
Refer
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#applications-in-sre-role" class="md-nav__link">
|
||
Applications in SRE role
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
<h1 id="scalability">Scalability</h1>
|
||
<p>What does scalability mean for a system/service? A system is composed of services/components, each service/component scalability needs to be tackled separately, and the scalability of the system as a whole.</p>
|
||
<p>A service is said to be scalable if, as resources are added to the system, it results in increased performance in a manner proportional to resources added</p>
|
||
<p>An always-on service is said to be scalable if adding resources to facilitate redundancy does not result in a loss of performance</p>
|
||
<h2 id="refer">Refer</h2>
|
||
<ul>
|
||
<li><a href="https://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html">https://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html</a></li>
|
||
</ul>
|
||
<h2 id="scalability-akf-scale-cube">Scalability - AKF Scale Cube</h2>
|
||
<p>The <a href="https://akfpartners.com/growth-blog/scale-cube">Scale Cube</a> is a model for segmenting services, defining microservices, and scaling products. It also creates a common language for teams to discuss scale related options in designing solutions. Following section talks about certain scaling patterns based on our inferences from AKF cube</p>
|
||
<h2 id="scalability-horizontal-scaling">Scalability - Horizontal scaling</h2>
|
||
<p>Horizontal scaling stands for cloning of an application or service such that work can easily be distributed across instances with absolutely no bias.</p>
|
||
<p>Lets see how our monolithic application improves with this principle</p>
|
||
<p><img alt="Horizontal Scaling" src="../images/horizontal-scaling.jpg" /></p>
|
||
<p>Here DB is scaled separately from the application. This is to let you know each component’s scaling capabilities can be different. Usually web applications can be scaled by adding resources unless there is no state stored inside the application. But DBs can be scaled only for Reads by adding more followers but Writes have to go to only one master to make sure data is consistent. There are some DBs which support multi master writes but we are keeping them out of scope at this point. </p>
|
||
<p>Apps should be able to differentiate between Read and Writes to choose appropriate DB servers. Load balancers can split traffic between identical servers transparently.</p>
|
||
<p><strong>WHAT:</strong> Duplication of services or databases to spread transaction load.</p>
|
||
<p><strong>WHEN TO USE:</strong> Databases with a very high read-to-write ratio (5:1 or greater—the higher the better). Because only read replicas of DBs can be scaled, not the Master. </p>
|
||
<p><strong>HOW TO USE:</strong> Simply clone services and implement a load balancer. For databases, ensure that the accessing code understands the difference between a read and a write.</p>
|
||
<p><strong>WHY:</strong> Allows for fast scale of transactions at the cost of duplicated data and functionality.</p>
|
||
<p><strong>KEY TAKEAWAYS:</strong> This is fast to implement, is low cost from a developer effort perspective, and can scale transaction volumes nicely. However, they tend to be high cost from the perspective of the operational cost of data. Cost here means if we have 3 followers and 1 Master DB, the same database will be stored as 4 copies in the 4 servers. Hence added storage cost</p>
|
||
<h3 id="refer_1">Refer</h3>
|
||
<ul>
|
||
<li><a href="https://learning.oreilly.com/library/view/the-art-of/9780134031408/ch23.html">https://learning.oreilly.com/library/view/the-art-of/9780134031408/ch23.html</a> </li>
|
||
</ul>
|
||
<h3 id="scalability-pattern-load-balancing">Scalability Pattern - Load Balancing</h3>
|
||
<p>Improves the distribution of workloads across multiple computing resources, such as computers, a computer cluster, network links, central processing units, or disk drives. Commonly used technique is load balancing traffic across identical server clusters. Similar philosophy is used to load balance traffic across network links by <a href="https://en.wikipedia.org/wiki/Equal-cost_multi-path_routing">ECMP</a>, disk drives by <a href="https://en.wikipedia.org/wiki/RAID">RAID</a> etc</p>
|
||
<p>Aims to optimize resource use, maximize throughput, minimize response time, and avoid overload of any single resource.
|
||
Using multiple components with load balancing instead of a single component may increase reliability and availability through redundancy. In our updated architecture diagram we have 4 servers to handle app traffic instead of a single server</p>
|
||
<p>The device or system that performs load balancing is called a load balancer, abbreviated as LB.</p>
|
||
<h4 id="refer_2">Refer</h4>
|
||
<ul>
|
||
<li><a href="https://en.wikipedia.org/wiki/Load_balancing_(computing)">https://en.wikipedia.org/wiki/Load_balancing_(computing)</a></li>
|
||
<li><a href="https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236">https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236</a></li>
|
||
<li><a href="https://learning.oreilly.com/library/view/load-balancing-in/9781492038009/">https://learning.oreilly.com/library/view/load-balancing-in/9781492038009/</a></li>
|
||
<li><a href="https://learning.oreilly.com/library/view/practical-load-balancing/9781430236801/">https://learning.oreilly.com/library/view/practical-load-balancing/9781430236801/</a></li>
|
||
<li><a href="http://shop.oreilly.com/product/9780596000509.do">http://shop.oreilly.com/product/9780596000509.do</a></li>
|
||
</ul>
|
||
<h3 id="scalability-pattern-lb-tasks">Scalability Pattern - LB Tasks</h3>
|
||
<p>What does an LB do?</p>
|
||
<h4 id="service-discovery">Service discovery:</h4>
|
||
<p>What backends are available in the system? In our architecture, 4 servers are available to serve App traffic. LB acts as a single endpoint that clients can use transparently to reach one of the 4 servers.</p>
|
||
<h4 id="health-checking">Health checking:</h4>
|
||
<p>What backends are currently healthy and available to accept requests? If one out of the 4 App servers turns bad, LB should automatically short circuit the path so that clients don’t sense any application downtime</p>
|
||
<h4 id="load-balancing">Load balancing:</h4>
|
||
<p>What algorithm should be used to balance individual requests across the healthy backends? There are many algorithms to distribute traffic across one of the four servers. Based on observations/experience, SRE can pick the algorithm that suits their pattern</p>
|
||
<h3 id="scalability-pattern-lb-methods">Scalability Pattern - LB Methods</h3>
|
||
<p>Common Load Balancing Methods</p>
|
||
<h4 id="least-connection-method">Least Connection Method</h4>
|
||
<p>directs traffic to the server with the fewest active connections. Most useful when there are a large number of persistent connections in the traffic unevenly distributed between the servers. Works if clients maintain long lived connections</p>
|
||
<h4 id="least-response-time-method">Least Response Time Method</h4>
|
||
<p>directs traffic to the server with the fewest active connections and the lowest average response time. Here response time is used to provide feedback of server’s health</p>
|
||
<h4 id="round-robin-method">Round Robin Method</h4>
|
||
<p>rotates servers by directing traffic to the first available server and then moves that server to the bottom of the queue. Most useful when servers are of equal specification and there are not many persistent connections.</p>
|
||
<h4 id="ip-hash">IP Hash</h4>
|
||
<p>the IP address of the client determines which server receives the request. This can sometimes cause skewness in distribution but is useful if apps store some state locally and need some stickiness</p>
|
||
<p>More advanced client/server-side example techniques
|
||
- https://docs.nginx.com/nginx/admin-guide/load-balancer/
|
||
- http://cbonte.github.io/haproxy-dconv/2.2/intro.html#3.3.5
|
||
- https://twitter.github.io/finagle/guide/Clients.html#load-balancing</p>
|
||
<h3 id="scalability-pattern-caching-content-delivery-networks-cdn">Scalability Pattern - Caching - Content Delivery Networks (CDN)</h3>
|
||
<p>CDNs are added closer to the client’s location. If the app has static data like images, Javascript, CSS which don’t change very often, they can be cached. Since our example is a content sharing site, static content can be cached in CDNs with a suitable expiry.</p>
|
||
<p><img alt="CDN block diagram" src="../images/cdn.jpg" /></p>
|
||
<p><strong>WHAT:</strong> Use CDNs (content delivery networks) to offload traffic from your site.</p>
|
||
<p><strong>WHEN TO USE:</strong> When speed improvements and scale warrant the additional cost.</p>
|
||
<p><strong>HOW TO USE:</strong> Most CDNs leverage DNS to serve content on your site’s behalf. Thus you may need to make minor DNS changes or additions and move content to be served from new subdomains.</p>
|
||
<p>Eg
|
||
media-exp1.licdn.com is a domain used by Linkedin to serve static content</p>
|
||
<p>Here a CNAME points the domain to the DNS of CDN provider</p>
|
||
<p>dig media-exp1.licdn.com +short</p>
|
||
<p>2-01-2c3e-005c.cdx.cedexis.net.</p>
|
||
<p><strong>WHY:</strong> CDNs help offload traffic spikes and are often economical ways to scale parts of a site’s traffic. They also often substantially improve page download times.</p>
|
||
<p><strong>KEY TAKEAWAYS:</strong> CDNs are a fast and simple way to offset the spikiness of traffic as well as traffic growth in general. Make sure you perform a cost-benefit analysis and monitor the CDN usage. If CDNs have a lot of cache misses, then we don’t gain much from CDN and are still serving requests using our compute resources. </p>
|
||
<h2 id="scalability-microservices">Scalability - Microservices</h2>
|
||
<p>This pattern represents the separation of work by service or function within the application. Microservices are meant to address the issues associated with growth and complexity in the code base and data sets. The intent is to create fault isolation as well as to reduce response times.</p>
|
||
<p>Microservices can scale transactions, data sizes, and codebase sizes. They are most effective in scaling the size and complexity of your codebase. They tend to cost a bit more than horizontal scaling because the engineering team needs to rewrite services or, at the very least, disaggregate them from the original monolithic application.</p>
|
||
<p><img alt="Microservices block diagram" src="../images/microservices.jpg" /></p>
|
||
<p><strong>WHAT:</strong> Sometimes referred to as scale through services or resources, this rule focuses on scaling by splitting data sets, transactions, and engineering teams along verb (services) or noun (resources) boundaries.</p>
|
||
<p><strong>WHEN TO USE:</strong> Very large data sets where relations between data are not necessary. Large, complex systems where scaling engineering resources requires specialization.</p>
|
||
<p><strong>HOW TO USE:</strong> Split up actions by using verbs, or resources by using nouns, or use a mix. Split both the services and the data along the lines defined by the verb/noun approach.</p>
|
||
<p><strong>WHY:</strong> Allows for efficient scaling of not only transactions but also very large data sets associated with those transactions. It also allows for the efficient scaling of teams.</p>
|
||
<p><strong>KEY TAKEAWAYS:</strong> Microservices allow for efficient scaling of transactions, large data sets, and can help with fault isolation. It helps reduce the communication overhead of teams. The codebase becomes less complex as disjoint features are decoupled and spun as new services thereby letting each service scale independently specific to its requirement.</p>
|
||
<h3 id="refer_3">Refer</h3>
|
||
<ul>
|
||
<li>https://learning.oreilly.com/library/view/the-art-of/9780134031408/ch23.html </li>
|
||
</ul>
|
||
<h2 id="scalability-sharding">Scalability - Sharding</h2>
|
||
<p>This pattern represents the separation of work based on attributes that are looked up or determined at the time of the transaction. Most often, these are implemented as splits by requestor, customer, or client.</p>
|
||
<p>Very often, a lookup service or deterministic algorithm will need to be written for these types of splits.</p>
|
||
<p>Sharding aids in scaling transaction growth, scaling instruction sets, and decreasing processing time (the last by limiting the data necessary to perform any transaction). This is more effective at scaling growth in customers or clients. It can aid with disaster recovery efforts, and limit the impact of incidents to only a specific segment of customers.</p>
|
||
<p><img alt="Sharding-block-1" src="../images/sharding-1.jpg" /></p>
|
||
<p>Here the auth data is sharded based on user names so that DBs can respond faster as the amount of data DBs have to work on has drastically reduced during queries.</p>
|
||
<p>There can be other ways to split </p>
|
||
<p><img alt="Sharding-block-2" src="../images/sharding-2.jpg" /></p>
|
||
<p>Here the whole data centre is split and replicated and clients are directed to a data centre based on their geography. This helps in improving performance as clients are directed to the closest Data centre and performance increases as we add more data centres. There are some replication and consistency overhead with this approach one needs to be aware of. This also gives fault tolerance by rolling out test features to one site and rollback if there is an impact to that geography</p>
|
||
<p><strong>WHAT:</strong> This is very often a split by some unique aspect of the customer such as customer ID, name, geography, and so on.</p>
|
||
<p><strong>WHEN TO USE:</strong> Very large, similar data sets such as large and rapidly growing customer bases or when the response time for a geographically distributed customer base is important.</p>
|
||
<p><strong>HOW TO USE:</strong> Identify something you know about the customer, such as customer ID, last name, geography, or device, and split or partition both data and services based on that attribute.</p>
|
||
<p><strong>WHY:</strong> Rapid customer growth exceeds other forms of data growth, or you have the need to perform fault isolation between certain customer groups as you scale.</p>
|
||
<p><strong>KEY TAKEAWAYS:</strong> Shards are effective at helping you to scale customer bases but can also be applied to other very large data sets that can’t be pulled apart using the microservices methodology.</p>
|
||
<h3 id="refer_4">Refer</h3>
|
||
<ul>
|
||
<li>https://learning.oreilly.com/library/view/the-art-of/9780134031408/ch23.html</li>
|
||
</ul>
|
||
<h2 id="applications-in-sre-role">Applications in SRE role</h2>
|
||
<ol>
|
||
<li>SREs in coordination with the network team work on how to map users traffic to a particular site.
|
||
https://engineering.linkedin.com/blog/2017/05/trafficshift--load-testing-at-scale</li>
|
||
<li>SREs work closely with the Dev team to split monoliths to multiple microservices that are easy to run and manage</li>
|
||
<li>SREs work on improving Load Balancers' reliability, service discovery and performance</li>
|
||
<li>SREs work closely to split Data into shards and manage data integrity and consistency.
|
||
https://engineering.linkedin.com/espresso/introducing-espresso-linkedins-hot-new-distributed-document-store</li>
|
||
<li>SREs work to set up, configure and improve CDN cache hit rate.</li>
|
||
</ol>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
|
||
<footer class="md-footer">
|
||
|
||
<div class="md-footer-nav">
|
||
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
||
|
||
<a href="../intro/" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
||
<div class="md-footer-nav__button md-icon">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
||
</div>
|
||
<div class="md-footer-nav__title">
|
||
<div class="md-ellipsis">
|
||
<span class="md-footer-nav__direction">
|
||
Previous
|
||
</span>
|
||
Introduction
|
||
</div>
|
||
</div>
|
||
</a>
|
||
|
||
|
||
<a href="../availability/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
|
||
<div class="md-footer-nav__title">
|
||
<div class="md-ellipsis">
|
||
<span class="md-footer-nav__direction">
|
||
Next
|
||
</span>
|
||
Availability
|
||
</div>
|
||
</div>
|
||
<div class="md-footer-nav__button md-icon">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
|
||
</div>
|
||
</a>
|
||
|
||
</nav>
|
||
</div>
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-footer-copyright">
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
|
||
<script src="../../assets/javascripts/vendor.7e0ee788.min.js"></script>
|
||
<script src="../../assets/javascripts/bundle.b3a72adc.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
|
||
|
||
<script>
|
||
app = initialize({
|
||
base: "../..",
|
||
features: [],
|
||
search: Object.assign({
|
||
worker: "../../assets/javascripts/worker/search.4ac00218.min.js"
|
||
}, typeof search !== "undefined" && search)
|
||
})
|
||
</script>
|
||
|
||
|
||
</body>
|
||
</html> |