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