43
Да пишем код за хиляди сървъри @stoitsev

Hackconf 2016 - Да пишем код за хиляди сървъри

Embed Size (px)

Citation preview

Page 1: Hackconf 2016 - Да пишем код за хиляди сървъри

Да пишем код за хиляди сървъри

@stoitsev

Page 2: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 3: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 4: Hackconf 2016 - Да пишем код за хиляди сървъри

Backend или Сървърна част

Page 5: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 6: Hackconf 2016 - Да пишем код за хиляди сървъри

MVC Структура

ORM

Библиотека за тестове

Миграции за СУБД

Библиотека за шаблони

Библиотека за кеширане

Превод и локализация

Scaffolding

Logging

Сигурност

Валидация на форми

Page 7: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 8: Hackconf 2016 - Да пишем код за хиляди сървъри

Мащабируемост или scalability

Page 9: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 10: Hackconf 2016 - Да пишем код за хиляди сървъри

Вертикално

Page 11: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 12: Hackconf 2016 - Да пишем код за хиляди сървъри

Хоризонтално скалиране

Page 13: Hackconf 2016 - Да пишем код за хиляди сървъри

Хоризонтално скалиране

Page 14: Hackconf 2016 - Да пишем код за хиляди сървъри

Разпределена система“Разпределена система е група от самостоятелни сървъри, които работят заедно и отвън изглеждат

като една цялостна система”

Page 15: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 16: Hackconf 2016 - Да пишем код за хиляди сървъри

120 сървъра=

1 сървър на месец

Page 17: Hackconf 2016 - Да пишем код за хиляди сървъри

1200 сървъра=

1 сървър на 15 дни

Page 18: Hackconf 2016 - Да пишем код за хиляди сървъри

12000 сървъра=

1 сървър на 7.5 часа

Page 19: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 20: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 21: Hackconf 2016 - Да пишем код за хиляди сървъри

Няма stackoverflow

Page 22: Hackconf 2016 - Да пишем код за хиляди сървъри

Децентрализирани алгоритми

1. Никоя машина няма информация за състоянитето на цялата система.

2. Всяка машина решава спряло локалната си информация.

3. Повреда е една машина не разваля целия алгоритъм.

4. Не се предполага че съществъва глобален часовник.

Page 23: Hackconf 2016 - Да пишем код за хиляди сървъри

Gossip based membership

Page 24: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 25: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 26: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 27: Hackconf 2016 - Да пишем код за хиляди сървъри

1. Няма централизирано знание

2. Всеки сам има списък 3. Ако една машина се

повреди, алгоритъма си работи

4. Няма глобален часовник

Page 28: Hackconf 2016 - Да пишем код за хиляди сървъри

КонсистентностConsistency

Page 29: Hackconf 2016 - Да пишем код за хиляди сървъри

ДостъпностAvailability

Page 30: Hackconf 2016 - Да пишем код за хиляди сървъри

Репликация

Page 31: Hackconf 2016 - Да пишем код за хиляди сървъри

Репликация

Page 32: Hackconf 2016 - Да пишем код за хиляди сървъри

Разделяне на мрежатаPartition tolerance

Page 33: Hackconf 2016 - Да пишем код за хиляди сървъри

100 лв.

Page 34: Hackconf 2016 - Да пишем код за хиляди сървъри

100 лв. 100 лв.

Page 35: Hackconf 2016 - Да пишем код за хиляди сървъри

CAP Теорема

Page 36: Hackconf 2016 - Да пишем код за хиляди сървъри

ДоказателствоSeth Gilbert and Nancy Lynch. 2002. Brewer's conjecture and the feasibility of consistent, available,

partition-tolerant web services.

Page 37: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 38: Hackconf 2016 - Да пишем код за хиляди сървъри
Page 39: Hackconf 2016 - Да пишем код за хиляди сървъри

Консистентност Или

Достъпност

Page 40: Hackconf 2016 - Да пишем код за хиляди сървъри

Кворум

PH PDC

TSTS

Page 41: Hackconf 2016 - Да пишем код за хиляди сървъри

“A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.”

Page 42: Hackconf 2016 - Да пишем код за хиляди сървъри

Ресурси

https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

https://www.goodreads.com/book/show/405614.Distributed_Systems

https://www.coursera.org/specializations/cloudcomputing

http://the-paper-trail.org/blog/consensus-protocols-paxos/

http://dl.acm.org/citation.cfm?id=564601

https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf

http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf

Page 43: Hackconf 2016 - Да пишем код за хиляди сървъри

Въпроси?