Чем Python плох для стартапа?
Александр Сапронов:
a@sapronov.me
ru.linkedin.com/in/alexsapronov
Хто я такой?
- Пишу код за деньги в 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’ы
Выбрали MongoDB
- Но ни разу даже 10rps не было
- Пришлось писать Oauth2 с нуля
- Пришлось писать механизм сессий
самим
- Написали асинхронные клиенты для
популярных API
Выбрали Tornado
12
В итоге
Удалось переписать за 3 недели * 2 программиста
Скорость разработки увеличилась в 4 раза
На самом деле:
13
А вы верите в TypeError?
Ситуация #2
Типизация в Python
- Гибкость в разработке
- Скорость разработки
- Читаемые ошибки
- Легкая в освоении
- Вы ловите ошибки в продакшене
- Вы точно(!) сложите None и set
- Медленней чем C
- Без культуры разработки - вы
+ -
Динамическая сильная неявная
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
a@sapronov.me
@sapronovalex92
ru.linkedin.com/in/alexsapronov
Питоны кончились…
Вопросы?
26

More Related Content

PDF
Истинная сила тестировщика - информация.
PDF
Повышаем и следим за качеством PHP кода
PPTX
Как писать на PHP и не стать быдло-кодером
PPTX
Истинная сила тестировщика - информация
PPTX
C++ idioms
PPT
Как стать героем
PPTX
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
PPTX
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Истинная сила тестировщика - информация.
Повышаем и следим за качеством PHP кода
Как писать на PHP и не стать быдло-кодером
Истинная сила тестировщика - информация
C++ idioms
Как стать героем
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо

What's hot (18)

PDF
Тестирование Локализации и Интернализации
PDF
Python, Django и корпоративные информационные системы
PDF
Maksym Antipov Hardware development as a hobby and a job
PDF
Slides
PDF
Контроль за стилем кода — Кирилл Борисов
PDF
Тёмная сторона продуктовой разработки
PPT
Ice Age Testing
PPTX
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
PPTX
Зачем нужно уметь программировать?
PDF
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
PPTX
MagicPlot @ UXSPb @ IT Global Meetup #7
PPTX
эмпирическая разработка Agile days
PDF
Владислав Грязнов "Многозадачность в PHP"
PPTX
Why does code style matter?
PDF
разработка dspotapov.ru
PDF
Serhii Ruskykh "Can be code quality measured via 'testability'?"
PDF
#1 Chatbots Academy Meetup
PDF
First byte - участник #1 Global Chatbots Hackathon with Webinar.ru
Тестирование Локализации и Интернализации
Python, Django и корпоративные информационные системы
Maksym Antipov Hardware development as a hobby and a job
Slides
Контроль за стилем кода — Кирилл Борисов
Тёмная сторона продуктовой разработки
Ice Age Testing
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Зачем нужно уметь программировать?
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
MagicPlot @ UXSPb @ IT Global Meetup #7
эмпирическая разработка Agile days
Владислав Грязнов "Многозадачность в PHP"
Why does code style matter?
разработка dspotapov.ru
Serhii Ruskykh "Can be code quality measured via 'testability'?"
#1 Chatbots Academy Meetup
First byte - участник #1 Global Chatbots Hackathon with Webinar.ru
Ad

Viewers also liked (20)

PDF
Интерфейсы в Python
PDF
Мир Python функционалим с помощью библиотек
PPT
Получаем текст веб-страниц из Python и как это работает
PPTX
Python инструменты решения типичных задач
PDF
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
PDF
Как и зачем можно создать DSL на Python
PDF
Snakes on the Web
PDF
Python and the Web
PDF
Introduction to Python and Web Programming
ODP
Why Python Web Frameworks Are Changing the Web
PDF
Спецификация WSGI (PEP-333)
PDF
An Introduction to Twisted
PDF
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
PDF
Зоопарк python веб-фреймворков
PPTX
Python talk web frameworks
PPTX
Asynchronous Python with Twisted
PDF
Framework Battle: Django vs Flask vs Chalice
KEY
LvivPy - Flask in details
PDF
Async Web Frameworks in Python
PDF
Web Scraping with Python
Интерфейсы в Python
Мир Python функционалим с помощью библиотек
Получаем текст веб-страниц из Python и как это работает
Python инструменты решения типичных задач
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Как и зачем можно создать DSL на Python
Snakes on the Web
Python and the Web
Introduction to Python and Web Programming
Why Python Web Frameworks Are Changing the Web
Спецификация WSGI (PEP-333)
An Introduction to Twisted
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Зоопарк python веб-фреймворков
Python talk web frameworks
Asynchronous Python with Twisted
Framework Battle: Django vs Flask vs Chalice
LvivPy - Flask in details
Async Web Frameworks in Python
Web Scraping with Python
Ad

Similar to Чем Python плох для стартапа? (20)

PDF
Александр Алаев. Сколько можно заработать на разработке прикладного софта
PDF
Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...
PDF
"ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії"
PDF
"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич
PDF
Григорий Ситнин, Лэндинги для стартапа (I)
PDF
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
PPTX
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
PPTX
Работа с требованиями в Интернет стартапе
PDF
5 правил успешной разработки приложений для бренда
PPT
Важность аналитики в SEO - доклад на 8p
PDF
15 шагов к быстрым сделкам на тендерных площадках
PDF
Работа с рисками в Scrum проектах
PDF
О пользе Open Source
PPTX
Опыт разработки SEO софта на примере FastTrust и ComparseR
ODP
Python & Web: От простого к сложному
PPTX
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
PPTX
Как заводить баги понятно всем
PDF
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
PDF
вебинар воронюк
PPTX
Developmentmanage3.0
Александр Алаев. Сколько можно заработать на разработке прикладного софта
Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...
"ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії"
"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич
Григорий Ситнин, Лэндинги для стартапа (I)
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет стартапе
5 правил успешной разработки приложений для бренда
Важность аналитики в SEO - доклад на 8p
15 шагов к быстрым сделкам на тендерных площадках
Работа с рисками в Scrum проектах
О пользе Open Source
Опыт разработки SEO софта на примере FastTrust и ComparseR
Python & Web: От простого к сложному
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
Как заводить баги понятно всем
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
вебинар воронюк
Developmentmanage3.0

More from PyNSK (20)

PDF
Нейронные сети и Keras. Часть 1
PDF
Нейронные сети и Keras. Часть 2
PDF
Asyncio для процессинга распределенной базы данных
PDF
Python для GameDev
PDF
Python инструменты для нагрузочного тестирования
PDF
Настрой контент под пользователя!
PDF
Питон в малине
PDF
Мой Python всегда со мной!
PDF
Во внутренности Kivy
PDF
Как Python Дайджест работает с внешней статикой
PDF
Применение behave+webdriver для тестирования Web-проектов
PDF
Ctypes в игровых приложениях на python
PDF
Оптимизация производительности Python
PDF
JSON-RPC или когда rest неудобен
PDF
TestRail. Некоторые возможности интеграции.
PDF
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
PDF
Быстрый старт в gDrive API
PDF
Магия в Python: Дескрипторы. Что это?
PDF
Python + GPGPU
PDF
Азбука вежливости
Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 2
Asyncio для процессинга распределенной базы данных
Python для GameDev
Python инструменты для нагрузочного тестирования
Настрой контент под пользователя!
Питон в малине
Мой Python всегда со мной!
Во внутренности Kivy
Как Python Дайджест работает с внешней статикой
Применение behave+webdriver для тестирования Web-проектов
Ctypes в игровых приложениях на python
Оптимизация производительности Python
JSON-RPC или когда rest неудобен
TestRail. Некоторые возможности интеграции.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
Быстрый старт в gDrive API
Магия в Python: Дескрипторы. Что это?
Python + GPGPU
Азбука вежливости

Чем Python плох для стартапа?

  • 1. Чем Python плох для стартапа? Александр Сапронов: [email protected] 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
  • 6. 6
  • 8. Почему Tornado вам не надо? Ситуация #1
  • 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
  • 14. А вы верите в TypeError? Ситуация #2
  • 15. Типизация в Python - Гибкость в разработке - Скорость разработки - Читаемые ошибки - Легкая в освоении - Вы ловите ошибки в продакшене - Вы точно(!) сложите None и set - Медленней чем C - Без культуры разработки - вы + - Динамическая сильная неявная 15
  • 16. Не любите тесты? А, значит любите ValueError? Ситуация #3
  • 17. Программист У меня нет времени на тесты Зачем тесты? Есть же тестировщики Я не делаю ошибок *лять, на дворе воскресенье, а я правлю 100500-ую ошибку из Sentry 17
  • 18. Тесты для стартапа - Дешевое регресс тестирование - Меньше дурацких багов - МОЖНО БОЛЬШЕ ФИЧ - Где найти время? - Где найти денег? - НУЖНО БОЛЬШЕ ФИЧ + - 18
  • 19. В итоге - Тесты - часть разработки - Тесты “проданы” бизнесу (бизнес одобряет) - Пацан накодил - пацан протестил (видео) - Баг - пишешь сначала тест - Цепочка dev -> qa > dev -> qa -> dev… сократилась в 3 раза Results (95.02s): 1091 passed 19
  • 20. А что он тормозит? Давай перепишем на * ? Ситуация #4
  • 21. Команда маркетинга Мы хотим нагнать дофигилиард юзеров, мы не упадем? Мы опять упали, программисты - *?№! Почему так медленно данные считаются?! Сделайте что-нибудь, емае! Мы не можем продавать. 21
  • 22. Программист №1 Программист №2 Добавим кэш! И серверов еще! А давай... А давай... Перепишем на * ? 22
  • 23. В итоге - Не переписали проект на другой язык - Но мы: - Добавили еще тестов - Начали делать нагрузочные тесты - Пересмотрели архитектуру системы - Привлекли крутого админа для настройки мониторингов - Начали экспериментировать с языками на JVM 23
  • 24. Чему же мы научились сегодня? 24
  • 25. Python - язык, который позволяет разрабатывать быстро и качественно. Но сначала надо выстроить процессы. 25