Upload
pynsk
View
202
Download
0
Embed Size (px)
Citation preview
Хто я такой?
- Пишу код за деньги в Welltory.com
- В основном на Python
- Делаю Python Дайджест
- Организую встречи PyNSK
- Делал конференцию PyCon Siberia 2016
- Люблю делать всякую движуху 2
О ч
ем э
то Как живет проект в первый год
Почему в первый год не важен язык?
Почему Python подходит для бизнеса?
Почему менять стэк разработки больно?
Почему вы захотите поменять Python?
P.S. Доклад несерьезный 3
Доклад про Welltory
4
Что такое Welltory
● Стартап
● Активная разработка началась ~1 год назад
● Собираем данные о жизни пользователя
● Обрабатываем данные - чистим, сжимаем
● Анализируем - строим корреляции
● Строим рекомендации - сообщаем юзеру о проблемах здоровья
● Рисуем красивые дашбоарды с данными юзера
● Делаем автоматическую рекомендательную систему
Welltory - персональный аналитик здоровья
5
6
Чух-чух
7
Почему Tornado вам не надо?
Ситуация #1
Программист
Не знаю какие данные будем хранить, Не знаю сколько юзеров ждем.
Не хочу переписывать много раз
А что если….
Не взять MongoDB и Tornado!?Они же быстрые и масштабируются, их
используют в продакшене
9
MongoDB для стартапа
- Можно сваливать в БД данные и не думать
- Не надо админа, чтобы начать работать
- Легко масштабировать
- Модно, чо
- Нет хорошей системы constraints. Загадите базу
- Аналитик знает SQL, но не знает монгу
- Без JSON Schema вы запутаетесь в коллекциях
+ -
10
Tornado для стартапа
- Работает быстро
- Гибкий
- Живой проект
- Асинхронщина
- Не популярен как Django
- Нет CRUDL админки
- Хочешь <что-то>? Пиши сам
+ -
11
В итоге
- Но ни разу не масштабировали ее
- Писали валидацию данных руками
- Стали использовать JSON Schema, потому что структура нужна же
- Использовали дополнительно PostgreSQL и конвертировали данные туда, потому что SAAS’ы требовали SQL баз
Выбрали MongoDB
- Но ни разу даже 10rps не было
- Пришлось писать Oauth2 с нуля
- Пришлось писать механизм сессий самим
- Написали асинхронные клиенты для популярных API
- Потратили тьму времени, но не писали бизнес логику
Выбрали Tornado
12
В итоге
Удалось переписать за 3 недели * 2 программистаСкорость разработки увеличилась в 4 раза
На самом деле:
13
А вы верите в TypeError?
Ситуация #2
Типизация в Python
- Гибкость в разработке
- Скорость разработки
- Читаемые ошибки
- Легкая в освоении
- Вы ловите ошибки в продакшене
- Вы точно(!) сложите None и set
- Медленней чем C
- Без культуры разработки - вы сразу пишите legacy код
+ -Динамическая сильная неявная
15
Не любите тесты?А, значит любите ValueError?
Ситуация #3
Программист
У меня нет времени на тесты
Зачем тесты? Есть же тестировщики
Я не делаю ошибок
*лять, на дворе воскресенье, а я правлю 100500-ую ошибку из Sentry
17
Тесты для стартапа
- Дешевое регресс тестирование
- Меньше дурацких багов
- МОЖНО БОЛЬШЕ ФИЧ
- Где найти время?
- Где найти денег?
- НУЖНО БОЛЬШЕ ФИЧ
+ -
18
В итоге
- Тесты - часть разработки
- Тесты “проданы” бизнесу (бизнес одобряет)
- Пацан накодил - пацан протестил (видео)
- Баг - пишешь сначала тест
- Цепочка dev -> qa > dev -> qa -> dev… сократилась в 3 раза
Results (95.02s): 1091 passed
19
А что он тормозит?Давай перепишем на * ?
Ситуация #4
Команда маркетинга
Мы хотим нагнать дофигилиард юзеров, мы не упадем?
Мы опять упали, программисты - *?№!
Почему так медленно данные считаются?!
Сделайте что-нибудь, емае!Мы не можем продавать.
21
Программист №1 Программист №2
Добавим кэш! И серверов еще!
А давай... А давай...
Перепишем на * ?
22
В итоге
- Не переписали проект на другой язык
- Но мы:
- Добавили еще тестов
- Начали делать нагрузочные тесты
- Пересмотрели архитектуру системы
- Привлекли крутого админа для настройки мониторингов
- Начали экспериментировать с языками на JVM
- Начали пилить монолит
23
Чему же мы научились сегодня?
24
Python - язык, который позволяет разрабатывать быстро и качественно.Но сначала надо выстроить процессы.
25
@sapronovalex92
ru.linkedin.com/in/alexsapronov
Питоны кончились…Вопросы?
26