Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Много често, когато искаме да станем по-добри backend програмисти се опитваме да научим различни езици за програмиране и съответните библиотеки. Проблема е че в Rails, Express.js, Django или Zend Framework има горе долу едни и същи концепции. Ако искаме да се научим как да пишем код за големи системи, които скалират добре и се справят сами с различни грешки и неочаквани ситуации, трябва да овладеем един друг дял от човешкото познание, който се нарича разпределени системи. В моята презентация ще видим защо трябва да задълбаем в тях и какви са основните принципи като консистентност(consistency), достъпност(availability) и издръжливост на разделения(partition tolerance). Също, ще разгледаме стъпки, които всеки може да направи за да научи повече по темата и да получава нови и актуални знания.

Nikolay Stoitsev

October 16, 2016
Tweet

More Decks by Nikolay Stoitsev

Other Decks in Programming

Transcript

  1. MVC Структура ORM Библиотека за тестове Миграции за СУБД Библиотека

    за шаблони Библиотека за кеширане Превод и локализация Scaffolding Logging Сигурност Валидация на форми
  2. Разпределена система “Разпределена система е група от самостоятелни сървъри, които

    работят заедно и отвън изглеждат като една цялостна система”
  3. Децентрализирани алгоритми 1. Никоя машина няма информация за състоянитето на

    цялата система. 2. Всяка машина решава спряло локалната си информация. 3. Повреда е една машина не разваля целия алгоритъм. 4. Не се предполага че съществъва глобален часовник.
  4. 1. Няма централизирано знание 2. Всеки сам има списък 3.

    Ако една машина се повреди, алгоритъма си работи 4. Няма глобален часовник
  5. Доказателство Seth Gilbert and Nancy Lynch. 2002. Brewer's conjecture and

    the feasibility of consistent, available, partition-tolerant web services.
  6. “A distributed system is one in which the failure of

    a computer you didn't even know existed can render your own computer unusable.”
  7. Ресурси • 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-ladis2 009.pdf • http://static.googleusercontent.com/media/research.google.com/en//ar chive/gfs-sosp2003.pdf