Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Архитектура 
бэкенда карт 
sputnik.ru 
Максим Дементьев 
max@orofarne.ru
Структура доклада 
• Как устроен кластер генерации карт? 
• Почему мы используем язык Go? 
• Как мы тестируем нашу систему...
Как устроен 
кластер генерации 
карт
OpenStreetMap 
• Открытая база геоданных 
• Более миллиона участников по всему миру 
• Участвовать может каждый
OpenStreetMap 
http://wiki.openstreetmap.org/wiki/Component_overview
OpenStreetMap
Тайлы 
© Спутник © OpenStreetMap contributors
Откуда берутся тайлы 
© Спутник © OpenStreetMap contributors
Основные технологии
Challenge
Challenge accepted 
• Сложный стиль (~7500 правил) 
• Большое время генерации тайлов (~5 дней) 
• Большой объем тайлового ...
Challenge accepted 
OpenStreetMap.org Sputnik.ru 
74 слоя 187 слоев 
~3000 правил ~7500 правил 
~19000 строк в Mapnik XML ...
Классический подход
Проблемы классического подхода 
• Ориентированность на файловую систему 
• Плохая масштабируемость
Go + Mapnik = Gopnik 
© Renee French © Diamond00744
Gopnik 
• Ориентированность на файловую систему 
• Плохая масштабируемость 
• Гибкая модульная архитектура 
• Пользователь...
Gopnik
Gopnik
Gopnik
Метатайлы 
© Mapbox
Gopnik
Заполнение кэша 
• Гибкий конфигуратор заданий 
• Кластерная генерация 
• Распределенная очередь 
• CLI и web интерфейсы
Заполнение кэша
Заполнение кэша
Заполнение кэша
Заполнение кэша
Почему мы 
выбрали язык Go
Что было до Go 
• С++ 
• Perl 
• Python 
• Scala
Плюсы Go 
• Очень простой 
• Компилируемый 
• Строгая типизация 
• Сборка мусора 
• Простая и понятная модель многопоточно...
Как мы тестируем 
нашу систему
Unit-тесты 
• go test 
• gtest для C++ 
© Renee French
Интеграционные и системные 
тесты 
• Docker 
• Netem 
• Yandex.Tank
Планы на будущее
Что уже сделано 
• Гибкая модульная платформа 
• Поддержка тайловых кэшей с eventual consistency 
• Дополнительные утилиты...
Что еще хотим сделать 
• Gossip 
• SPDY 
• QUIC 
• Data-tiles
Open source
Вопросы?
Upcoming SlideShare
Loading in …5
×

Архитектура бэкенда карт Sputnik.ru, Максим Дементьев (Спутник)

1,783 views

Published on

Доклад Максима Дементьева на HighLoad++ 2014.

Published in: Internet
  • Be the first to comment

Архитектура бэкенда карт Sputnik.ru, Максим Дементьев (Спутник)

  1. 1. Архитектура бэкенда карт sputnik.ru Максим Дементьев max@orofarne.ru
  2. 2. Структура доклада • Как устроен кластер генерации карт? • Почему мы используем язык Go? • Как мы тестируем нашу систему? • Какие у нас планы на будущее?
  3. 3. Как устроен кластер генерации карт
  4. 4. OpenStreetMap • Открытая база геоданных • Более миллиона участников по всему миру • Участвовать может каждый
  5. 5. OpenStreetMap http://wiki.openstreetmap.org/wiki/Component_overview
  6. 6. OpenStreetMap
  7. 7. Тайлы © Спутник © OpenStreetMap contributors
  8. 8. Откуда берутся тайлы © Спутник © OpenStreetMap contributors
  9. 9. Основные технологии
  10. 10. Challenge
  11. 11. Challenge accepted • Сложный стиль (~7500 правил) • Большое время генерации тайлов (~5 дней) • Большой объем тайлового кэша (~2 Тб) • Модель периодического обновления (1 месяц)
  12. 12. Challenge accepted OpenStreetMap.org Sputnik.ru 74 слоя 187 слоев ~3000 правил ~7500 правил ~19000 строк в Mapnik XML ~48000 строк в Mapnik XML
  13. 13. Классический подход
  14. 14. Проблемы классического подхода • Ориентированность на файловую систему • Плохая масштабируемость
  15. 15. Go + Mapnik = Gopnik © Renee French © Diamond00744
  16. 16. Gopnik • Ориентированность на файловую систему • Плохая масштабируемость • Гибкая модульная архитектура • Пользователь получает результат генерации сразу • Простая конфигурация • Набор дополнительных утилит
  17. 17. Gopnik
  18. 18. Gopnik
  19. 19. Gopnik
  20. 20. Метатайлы © Mapbox
  21. 21. Gopnik
  22. 22. Заполнение кэша • Гибкий конфигуратор заданий • Кластерная генерация • Распределенная очередь • CLI и web интерфейсы
  23. 23. Заполнение кэша
  24. 24. Заполнение кэша
  25. 25. Заполнение кэша
  26. 26. Заполнение кэша
  27. 27. Почему мы выбрали язык Go
  28. 28. Что было до Go • С++ • Perl • Python • Scala
  29. 29. Плюсы Go • Очень простой • Компилируемый • Строгая типизация • Сборка мусора • Простая и понятная модель многопоточности • Быстрая компиляция • Хорошая стандартная библиотека • Большой набор полезных утилит
  30. 30. Как мы тестируем нашу систему
  31. 31. Unit-тесты • go test • gtest для C++ © Renee French
  32. 32. Интеграционные и системные тесты • Docker • Netem • Yandex.Tank
  33. 33. Планы на будущее
  34. 34. Что уже сделано • Гибкая модульная платформа • Поддержка тайловых кэшей с eventual consistency • Дополнительные утилиты • Удобный кластерный рендеринг • Простая конфигурация
  35. 35. Что еще хотим сделать • Gossip • SPDY • QUIC • Data-tiles
  36. 36. Open source
  37. 37. Вопросы?

×