суббота, 10 декабря 2016 г.

System Design

На собеседованиях для разработчиков часто есть секция про системный дизайн (System Design). Как правило на ней просят спроектировать какую-нибудь более или менее сложную систему. Например сервис аналогичный tinyurl, или систему полнотекстового поиска, или еще что-то в этом духе. Чем выше позиция, на которую претендуешь, тем важнее/сложнее эта секция. Меня пару раз просили дать список статей, которые позволят подготовиться к этому. Далее некоторая подборка, разбитая по темам.

Как делать деплой:
How Twitter deploys its widgets JavaScript
Manhattan software deployments: how we deploy Twitter’s large scale distributed database
Создание системы непрерывного развертывания: опыт Instagram

Как делать хранилище данных (правильнее сказать persistent layer):
The Google File System
Bigtable: A Distributed Storage System for Structured Data

Управление ресурсами кластера:

Балансировка нагрузки:

Обработка данных:

Best practices:

Консенсус:

Опыт компаний в построении систем:
A 360 Degree View Of The Entire Netflix Stack
A Brief History of Scaling LinkedIn
Redundant Array of Inexpensive Datacenters

Также есть тематические блоги, на которых публикуется много интересной и полезной информации. Ниже список тех, на которые я подписан:
LinedIn Engineering
Metadata
AMP Lab blog
Aphyr
All Things Distributed
Badoo Tech
Clouder Engineering Blog
Dropbox Engineering Blog
Twitter Engineering Blog
Facebook Code
Google Research Blog
Highscalability
Indeed Engineering
NGINX Blog
Netflix Thech Blog