воскресенье, 30 октября 2016 г.

0. История о том, как написать систему управления проектами (ERP) своими руками. Вместо предисловия.

Кто я такой и с чего все начиналось.

Неожиданно, но... человек, который обучался программированию. Примерно, 4 года назад пришел на работу обычным сисадмином, который, между делом, увлекался веб-разработкой. По данному блогу видно, что все начиналось с обычного сайтика - "веб-обвязки" для старой игрушки muonline - побегать в локальной сети с ребятами на ст-а-а-рых сезонах. Для сисадминов небольших предприятий работы, как правило, не очень много - поднял сеть/домен/сайт, да следи за состоянием оных и отвечай на, иной раз, смешные вопросы, разряда "почему", "howto", "почини мне мышь". Потому было много свободного времени, которое и убивалось изучением и ковырянием, еще с университетских времен, узнанных языков программирования и подходов. Ну и до ковырялся: придя на новое место случайно подрядился под разработку системы (тогда еще) контроля прохождения проектов. Это был первый, так сказать, блин, который недожарился из-за недостатка опыта и чужого аппетита. Но вот, у меня появился славный старший товарищ, как оказалось, имевший колоссальный опыт в деле управления проектами, а по совместительству обладающий недюжинными знаниями SQL и не только.

Сразу ответ на вопрос, почему не посмотрели на ms project  и прочие известные решения

Из-за специфики компании - она осуществляет не серийное производство деталей, а все ныне существующие и доступные адекватные системы рассчитаны, почему-то, только серийное производство, в результате пришлось делать самим и вот уже как 3+ года.

 В результате, работа закипела с новой силой и подпиткой знаний и подходов. Приходилось (да и до сих пор приходится) учится на лету чему-то новому, набивая шишки и синяки, переписывая и улучшая код, который и по сей день, думаю, далек от совершенства, но речь не совсем об этом... 

Чего мы добились.

Чтобы не тратить чье-то время, напишу сразу. Ту ERP, которую мы разрабатываем сейчас в хвост и в гриву использует примерно 45-50 человек ежедневно (а некоторые, судя по логам, и еженощно о0). Что она умеет (перечислю самое основное): вести проекты, планировать/запускать задачи по проектам и производство, обсчет стоимости, бюджеты, хранение проектной документации и документации в целом, оповещать пользователей о событиях, как на экран, так и на почту. Все это бегает, на данный момент, на 2х серверах - 1 основной, второй CDN, нужный для загрузки/выгрузки файлов(хотя, и 1 справлялся). Все это дело работает на связке nginx + php7 + mysql, замечу, что все работает под управлением вендовых серверов. Ядром системы является mwce - CMS собственной (точнее, моей личной) разработки, начатой еще лет 6 назад. На данном этапе эта поделка рассчитана на кроссдоменное использование, для разнесения ролей, что значительно облегчает "балансировку обязанностей" и, как следствие, нагрузки.

Какова цель и вообще, зачем?..


Хочу начать цикл записей о том, как мы создавали (создаем) ERP, буквально, на коленке используя MySQL, PHP 7, html, js и как ломались и ломаются знаменитые "так исторически сложилось" принципы ведения дел.
Я не буду писать о конкретных особенностях и механизмах нашего предприятия(в силу коммерческой тайны), но попробую обобщить некоторые полученные знания и донести  общие принципы, ну еще доказать кое-кому, что сложные вещи можно и на "пыхе" писать.

+ В общем-то, блог я давно использую для хранения информации, в первую очередь, для себя, чтобы не забыть, а, может, и переосмыслить, систематизировать полученный опыт. Я понимаю, что напиленных ERP полным полно и я мог бы скрыть все записи в привате для автора и ковыряться в них, но решил, что, возможно, кому-то это может быть полезным.

Рассматривать теорию проектного управления я не буду ("ейной" полно в ютубе, причем, дельной), но постараюсь описать весь этот бардак глазами разработчика, пусть и такого как я - джуна со страшным ЧСВ, но главное, в реалиях русского менталитета, "при участии" особенностей русских пользователей.

Ну и писать примерную поделку буду на php с использованием своей же mwce. Как только появятся первые наброски, опубликую на гите.

Немного о выборе языка и базы данных.

На самом деле, при выборе языка стоит учитывать следующие вещи: 
1. скорость работы и ресурсопотребление
2. скорость разработки, то есть, как быстро будет результат
3. возможность использовать некоторые готовые решения (библиотеки), что можно встроить в разрабатываемый продукт 
4. в случае энтрепрайза - стоимость услуг программиста


Про базы данных:
Ваш капитан очевидность: расчет на размеры компании и количество данных, что постоянно будет крутится. Если Вы точно уверены, что у Вас будет, например, 5 филиалов по 150 пользователей в каждом, возможно, сразу стоит посмотреть на базы данных, что могут легко лопатить большие объемы данных не моргая глазом, например, postgreSQL или MS SQL, которые, кстати говоря, могут без проблем быть кластеризованы. Если средняя компания, с 100 пользователями хочет сделать себе небольшую ЕРП с документооборотом, то и mysql или mariadb будет достаточно. 
Размышляю исходя из ништяков перечисленных субд - это лично мое мнение из скудного опыта.

Мы выбрали php + mysql, потому как мы не большие, тратить лишние деньги на то, что еще, возможно и не взлетит, чтобы покупать ms sql сервер или поднимать постгре дополнительно изучая его особенности (хотя, в нем есть очень "сладкие" вещи), не очень то и хотелось. И результат нужен был, как обычно, еще вчера, поэтому c++ был отложен так же. В случае с php уже есть готовая "база" - сервер с php-cgi, да клиент - обычный браузер да и ядро системы (он же движок, если угодно) уже примерное было. Как можно было устоять от такого соблазна :). 


P.S.

Сразу прошу прощения за мой весьма специфический способ изложения.

Комментариев нет:

Отправить комментарий