Содержание
Возможности Python обширны: от веб-разработки до разработки машинного обучения, систем распознавания лиц и текста. Поговорим о Python для бизнеса и рассмотрим кейсы kt.team.
1. Преимущества разработки на Python для бизнеса
2. Недостатки Python
3. Бизнес-задачи, которые решает разработка на Python
4. Кейс: разработка международной платформы для хакатона на Python
5. Где ещё используется Python
В данной статье вы узнаете подробности нашего опыта работы с Python: какие продукты мы пишем на этом языке программирования, почему выбираем для этих задач именно его, какие выгоды от этого получают заказчики разработки.
Разобраться в этом вопросе нам помогут:
С развитием гибких подходов и философии Agile циклы разработки становятся всё короче. Software-инженерам не нужно годами писать проекты «в стол», сверяясь с техническим заданием на тысячу страниц. Разработка начинается с создания MVP. В приоритете — за один-два месяца выпустить на рынок минимально жизнеспособную версию продукта и получить обратную связь от реальных пользователей (подробнее о разработке MVP можно прочитать в нашей статье в блоге: «MVP, или как не попасть в бесконечную разработку»).
Для быстрой разработки MVP отлично подходит Python. Секрет скорости — в синтаксисе, максимально приближённом к естественному английскому языку.
На скорость влияет большое количество свободных библиотек и фреймворков, а также минималистичных микрофреймворков, например Flask. Они разработаны под разные нужды, имеют обширное и дружелюбное комьюнити, привлекают простотой и гибкостью синтаксических конструкций.
Нюанс: такая высокая скорость поддерживается при относительно невысокой сложности проекта (малая и средняя e-Commerce, CRM, несложные интеграции).
Если же разработка ведётся для enterprise-проектов, то все работы занимают примерно одинаковое время независимо от используемого стека технологий. Писать на Java, PHP или Python — неважно, ведь общее количество часов не будет значительно отличаться.
При этом время может по-разному распределяться на разные типы работ. С каким-то стеком больше времени потребуется на рефакторинг, с другим — на MVP, c третьим — на тесты и т. д. Например, чтобы быстро работать на Python, нужно предварительно продумать архитектуру и правильно подготовить окружение. К тому же нельзя судить о сложности работы по количеству строк кода и скорости его написания. Минимальное количество кода означает его высокое качество, а чтобы разработчик мог уложить задачу в три строки, он должен тщательно продумать, как это сделать, в какой части программы разместить код и т. д.
Сегодня любой продукт разработки требует большого количества интеграций: с разнообразными информационными системами самой компании и её контрагентов, с банковскими, маркетинговыми ИС и многими другими.
Python удобен для интеграций и может управлять различными компонентами ПО, в том числе разработанными на другом языке. Универсален для любых платформ.
Это было одной из причин, почему мы выбрали именно Python для создания API принт-сервиса на одном из текущих проектов. Он отлично взаимодействует с сервером печати Linux CUPS — из Python легко обращаться к ядру ОС для выполнения нужных операций.
Это преимущество не возникает само по себе, оно требует продуманной архитектуры проекта и соблюдения чистоты кода. Можно сказать, что на Python с его простыми и понятными синтаксическими конструкциями проще писать легко масштабируемый код, чем на большинстве других языков.
Это было важно для нас, когда мы выбирали стек для управления сервисами печати. С Python нам не пришлось вносить изменения в основной модуль принт-сервиса при изменении его частей.
Большинство особенностей Python заметны только на стороне разработчиков и создают трудности именно им, а не заказчикам и пользователям продукта.
Пожалуй, самая болезненная тема для «питонистов» — это скорость исполнения кода. Python считается довольно медленным языком программирования: это связано с особенностями структуры интерпретатора языка и его динамической природой. Чтобы повысить производительность, разработчики либо переписывают «тормозящий» кусок кода на C или Cython (транслятор Python-кода в C), либо используют PyPy — альтернативный интерпретатор языка программирования Python (его название расшифровывается как Python, написанный на Python).
Разработчики часто говорят, что на Python можно написать всё, даже сам Python.
В принципе, это нормально в сегодняшней практике: компилятор Rust тоже пишут на Rust, а компилятор Golang — на Golang.
Обновления PyPy чуть отстают от обновлений основной версии интерпретатора Python. Например, актуальная версия Python — 3.8, а PyPy — ближе к версии 3.5 с некоторыми фичами из 3.6.
Можно выделить следующие принципы ускорения при разработке на Python:
PyPy крут технологией JIT-компиляции (just-in-time (сокр. от англ. — точно в срок) compilation).
Функции, которые есть в программе, на лету будут компилироваться в машинный код, ускоряя работу программы с последующим использованием. При этом не надо переписывать код, просто нужно иметь в виду понижение версии.
В Python анонимные функции (лямбда-функции, функции без названия) — однострочные. Разработчикам иногда не хватает многострочных лямбд, но они никогда не появятся, т. к. это противоречило бы идеологии Python.
Пайплайны — это последовательное исполнение функций с последующей передачей данных из предыдущей.
На Python приходится писать последовательность примерно следующим образом.
a = func1()
a = func2(a)
a = func3(a)
result = func4(a)
В каком-нибудь другом языке программирования (скажем, Elixir) это выглядело бы проще.
result = func1() |>
func2() |>
func3() |>
func4()
Это не отражается на производительности кода, но причиняет некоторые неудобства разработчикам, мешая соблюдать методологию функционального программирования.
Типичные задачи на разработку, которые успешно решаются на Python:
Сегодня один из трендов в разработке на Python — его использование для написания микросервисов. Микросервисы, в разработке которых чаще всего применяют Python:
При обновлении интернет-магазинов на базе систем CMS, разработанных довольно давно (как, например, Magento — более 12 лет назад), тоже применяется смешанный подход. Для некоторых сервисов проще оставить Magento, а для других — переехать на Saleor (это CMS, написанная на Python). Вопрос миграции с Magento на Saleor довольно часто возникает у небольших интернет-проектов, которые хотят быстрой модернизации.
Давайте рассмотрим наш недавний кейс по разработке на Python. Создание платформы для онлайн-обучения или для хакатона — типичная задача, для которой отлично подходит Python.
Перед нами стояла задача: разработать платформу для крупного международного хакатона по машинному обучению (более 10 тыс. участников, highload-продукт).
В логике надо было учесть следующие условия для участников:
С помощью этой платформы участники отправляют свои ответы. Система валидирует ответы каждого участника, сравнивает их с идеальным решением, проверяя при этом соблюдение большого количества условий. Каждому решению проставляются оценки, на основе которых формируется список лидеров. По завершении хакатона система автоматически определяет победителей.
Для решения этой задачи мы использовали SPA (сокр. от англ. single page application — одностраничное приложение.) (Vue.js + Nuxt.js) + Django (это фреймворк Python). SPA общается с backend'ом через API.
Это решение нравится нам своей гибкостью: в отличие от громоздкой архитектуры с десятками тысяч строк кода, здесь можно гибко управлять всеми сущностями, не переживая за перекрытие кода.
Все сущности можно создать и описать очень быстро и мгновенно получить доступ к данным через API.
В результате нам удалось разработать готовую к высоким нагрузкам платформу с нужным функционалом для проведения хакатона. Система поддерживает определённый свод правил. Есть админ-панель с отображением результатов, выгрузкой статистики и прочих данных.
Можно сказать, что Python сейчас «в моде» (хотя поклонники Go или Dart могут поспорить), и многие разработчики с удовольствием пишут на нём.
Расскажем об интересном примере, как наши коллеги из frontend'а попробовали писать на Python.
Недавно к нам пришёл заказчик, backend на проекте которого написан на PHP. Стояла задача — переделать его на Django. Чтобы состыковать back и front, frontend-разработчики за два дня изучили синтаксис Python, за третий день — документацию Django, а на четвёртый влюбились в Python и теперь не хотят возвращаться во frontend. Очень жалеют, что Python подходит только для backend-разработки.
Не только разработчики, но и представители смежных профессий применяют Python для своих задач.
Системные администраторы могут автоматизировать процессы, используя Python вместе с Bash. Например, в сложных конструкциях, если нужно сделать скрипты на серверах, которые будут опрашивать части системы, проверять, всё ли в порядке (проводить health check).
Бизнес-аналитики часто приходят в Python, изучив стек анализа данных (pandas, Matplotlib, Jupyter). Это специфическое решение для сложных агрегаций, которое позволяет делать продвинутые дашборды, вычислять и визуализировать множество важных показателей.
Python идеально подходит для проектов в сфере CV & ML (computer vision and machine learning, рус. компьютерное зрение и машинное обучение), аналитики, разработки корпоративных сайтов и систем корпоративного обучения.
Он хорош для создания небольших микросервисов и проектов с недолгим жизненным циклом, когда заказчику нужно быстро запустить MVP и протестировать гипотезы.
Да, есть много сфер применения этого универсального языка, но бывают и кейсы, где лучше использовать другой стек. Например, в разработке высоконагруженных интернет-магазинов может быть предпочтительнее Magento (PHP).
Выбирать, стоит ли использовать Python на вашем проекте или нет, нужно после совместного обсуждения вопроса разработчиками и заказчиками, на основе анализа особенностей продукта и бизнес-задач.
Смотреть все
Как уменьшить затраты на поддержание актуальной информации о товарах на маркетплейсах с помощью ESB
Подробнее
Как AI-помощник по расшифровке звонков сэкономит руководителю отдела продаж 10 часов в неделю и поможет улучшить метрики продаж
Подробнее
Сколько по времени занимает внедрение ESB, каковы выходы на каждом этапе?
Подробнее
Смотреть все
Ваша заявка отправлена успешно
Отправить снова
С вами свяжутся персональные менеджеры
Контакты
Назначить встречу
Забронировать время встречи с помощью Google Calendar