Как перенести крупное PHP приложение на Python?

Всем привет!

Требуется перенести крупный (с очень сложной структурой) веб-проект на Python-платформу. Приложение представляет из себя что-то вроде социальной сети или сообщества для корпоративного использования.

База данных меняться не будет (MySQL), а её структура и подавно. Поэтому будущая система должна писаться с оглядкой на уже существующие данные и базу.

Система должна быть очень гибкой и удобной для всевозможных изменений.

Изначально планировали смотреть на Django. Но немного познакомившись - смутились:

  1. Структура пользователей (и не только) в базе должна строго ложиться на уже существующую. Структура Django нам не подходит. Или нужно переписывать стандартную структуру и исправлять это (что мы так понимаем делать крайне не рекомендуется).
  2. Тоже самое касается прав доступа, логов, отчасти сессий (не принципиально) и прочих плюшек которые идут в джанго "из коробки"
  3. Админка "из коробки" не подходит по всевозможным причинам. Начиная с дизайна-юзабилити и заканчивая структурой. Из-за этого мы плачем по ночам...
  4. ORM хорош, но есть места где придётся им пренебречь


Отсюда выходит, что большинство тех возможностей которые имеет (или может в перспективе иметь с установкой подходящих плагинов или расширений) Django - для нас не актуальны.

Поэтому вопрос таков: на чем стоит разрабатывать приложение?

В качестве вариантов рассматривали Flask и Pylons, но по ним информации (а тем более кадров) намного меньше. Поэтому будем рады замечаниям на этот счет.

Подтвердите, опровергните наши размышления либо предложите какой-то свой вариант решения проблемы. Очень будем признательны за развернутый ответ.

Возможно мы где-то пропустили важные моменты для понимая сути проблемы - пишите, обязательно дополним.
  • Вопрос задан
  • 4363 просмотра
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Почему бы просто не зарефакторить проект? Как по мне от этого толку будет явно больше с учетом ваших требований. И это не может быть сложнее переноса на python.

Если вы думаете что на PHP не выйдет написать большой проект, что бы он оставался поддерживаемым... ну тогда грустно коль уж вы так думаете.

Если же так считает руководство - пусть они и переписывают. Достаточно просто набросать риски на бумажке сходить к ним и сказать "это будет в 3 раза дороже" и возможно они одумаются. Ну а коль уж переписывать всеравно заставят то можно спокойно менять структуру всего и вся. Риски от этого не увеличатся сильно уже.

Я бы пытался настаивать на постепенном развязывании системы и рефакторинге с последующим переводом на Symfony2
Ответ написан
@bromzh
Drugs-driven development
Самое простое - взять Flask и SQLAlchemy. Прикрутить ОРМ джанги к готовой базе труднее, чем в SQL. Да и сам фласк не навязывает свои решения, он модульный. Нужна админка - ставь отдельно. Аутентификация тоже отдельно. ОРМ отдельно, и т.д.

А инфы мало, потому что сам фреймворк маленький. В документации фласка всё есть. Для всяких расширений доже документации обычно хорошие. Мне обычно хватает инфы из доков.
Ответ написан
Комментировать
viktorvsk
@viktorvsk
Откуда уверенность, что поддерживать Франкенштейна будет проще, чем просто сложное приложение? И что значит "поддерживать"? Вам не хватает гибкости для дальнейшего расширения? Тогда однозначно затык не в языке или базе, а в структуре.

Раскладывайте все по полочкам, выясните цели, а там уже посмотрите, может действительно будет выгоднее переписать с нуля.

Не хотите даже структуру базы и работу с сессиями менять? Тогда все просто:
1. Разработчиков Джанго меньше, чем разработчиков пхп (подставьте ваш фреймворк)
2. Разработчиков перепиленного под пхп джанго еще меньше, чем просто разработчиков джанго.

Я бы может сказал, что в Rails есть некоторые возможности поизвращаться, что б поддерживать кастомные названия таблиц, структуры и т.д., но как-то не логично: использовать фреймворк (культуру, опыт и бестпрактис сообщества), что бы пойти против культуры, бестпрактис и опыта сообщества.
Ответ написан
kotomyava
@kotomyava
Системный администратор
Если у вас возникает такой вопрос, вероятно, необходимо забросить эту идею, и приводить в порядок проект, не переписывая его на python...

Что выбрать вы не знаете => даже если что-то выберите по советам, наступите на массу граблей при освоении выбранного... Будет может и более "модно", но весьма вероятно вероятно не лучше чем есть, а возможно и хуже.

Структура базы не меняется => кардинально не поменяются и запросы, а значит, и время их обработки не изменится. А это, обычно, куда более узкое место.
Ответ написан
Neonailol
@Neonailol
hardcore
  1. Поднимаете rest сервер на питоне
  2. over json вызываете методы этого сервера (прямо file_get_contents($url+$data)), постепенно заменяя код пхп, на вызовы по api к pythonу
  3. ...
  4. Profit!
Ответ написан
Комментировать
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
переписать весь проект с учетом ошибок, которые заодно исправить в процессе переработки.
ну и естественно в процессе перепрограммирования, так скажем, отследить недопущение новых ошибок, проследить все предыдущие, попробовать оптимизировать код, функциональность, обратить внимание на нагрузочную способность, работу, механизмы и потоки....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы