Más contenido relacionado La actualidad más candente (20) Similar a как строить архитектуру для отказоустойчивой службы такси (20) как строить архитектуру для отказоустойчивой службы такси5. О нас
• 300k довольных клиентов
• 600+ водителей на линии
• Не менее 8k заказов в
сутки
10. Workflow на софте поставщика
Клиент Оператор Заказ
Водитель
Принял
заказ
Приехал на
место
Забрал
клиента
Привез
клиента
Менеджер
видит отчет
11. Фичи софта поставщика
• Call-центр
• SMS оповещения
• Автоматизация workflow
• Много китайских
навигаторов (Shturmann,
A500)
14. Требования к системе
• Минимум изменений в
workflow водителей и
операторов
• Гибкость разработки и
добавления новых фич
16. • Реалтайм в операторской
• Работающая телефония
• Возможность сразу
перейти на свое решение
17. Ограничения
• Цена на мобильный
интернет
• Серверные ресурсы
• Маленькая команда
• Результат в кратчайшие
сроки
19. Что выбрали
• Python/Django для Ядра
• Redis для Publish/Subscribe
• Node.js – событийный реалтайм в
операторской
• Twisted – socket server для
водителей
• Ruby для SMS
• WebRTC для телефонии
20. Почему так?
• Ruby -> Ruby-smpp для
sms
• Node.js -> socket.io для
реалтайма
• Twisted – потому что
клевый
21. Зачем sip через WebRTC
• Open Source решение
• Нет привязки к железу и ОС
• Экономия рабочих мест в офисе
• Экономия на коммутационном
оборудовании
32. Задача по переносу
• Перенести 2 000
водителей
• Перенести все короткие
смс номера
• Перенести телефонию
• Перенести 20 операторов
33. • 7 дней
• Техническая команда
• Начальник транспортного
отдела
• Начальник call центра
49. День 6. Проблемы
• У некоторых водителей
не обновляется список
заказов
• У операторов медленно
оформляются заказы
54. Но это не все
0
50
100
150
200
250
300
Node.js Bandwidth
58. Ошибки на начальном этапе
• Twisted синхронный
• Вместо Nodejs erlang или
Python
• Нагрузочные тесты не из
реального мира
66. При этом
• 1 сервер загруженнее
другого
• 1 точка входа для
операторов, клиентов
83. Percona 5.6 HA
• Master-Master (GTID)
• Virtual IP for Master
• Virtual IP for Slave
• Master – write
• Slave – read for reports
87. Минусы
• Не можем подключать
больше номеров
• Не можем балансировать
исходящую связь
• 1 номер = 1 webrtc2sip
90. Проблемы
• Срывается звонок
• Нет гудков
• Нет правильной работы со
статусами прогресса SIP
• Долгое время бриджа аудио
• Входящий звонок мог
крашнуть asterisk
93. Минусы
• Нет гудков и служебных
ответов
• Нет правильной работы со
статусами прогресса
• Одностороннее аудио
107. Итоги проделанной работы
• Сократили количество
звонков с 25к до 12к за счет
автоматизации процессов и
мобильных приложений
• Сократили 30% операторов
• Увеличили количество
заказов на 40%
111. Наши глаза
• Nagios -> Sensu
• Collectd -> Graphite
• Newrelic -> Node.js
• Cprofilemiddleware ->
Django
• Opbeat -> Django
112. Учебные тревоги
• До 2х раз в неделю
проверяем
отказоустойчивость
любого сервиса
• До 2х раз в месяц
перезагружаем любой
физический сервер
Notas del editor Рассказать про workflow термин Потому что мы планировали заходить на рынок мобильных девайсовВыход – сделать свой софт
Последний пункт переделать.
Нужно рассказать о том, что не возможно тут мастабироваться горизонтально
Рассказать историю о том, как помогали опсосам Сделать подробнее Перенесли один СМС номер Перенесли все номера Перенесли телефонию Скорость переноса водителей – 2 водителя в минуту в часы пик.
Все заказы идут через новый софт Добавить Redis Время подачи машины было 8 стало 5 Нужно отразить схемой Добавить точки HaProxy у нас также отказоустойчивый через keepalived. Держим около 40% ресурсов свободными 1хх – мы не можем корректно работать со статусами прогресса МЫ могли не париться по двум причинам: Между операторами звонки бесплатные и безлимитные. Добавить заказы Добавить контакты