Как создать legacy-сервис

До фига советов о том, как писать правильно, как не довести до беды. Хочу быть Остером. Вот вредные советы. Итак, вы пишете сервис и при этом хотите уже через год увидеть его в статусе legacy.

Во-первых, со старта создайте уникальную архитектуру с уникальными костылями, которые влезают ровно-ровно в текущую инфраструктуру, но не позволят вам плавно переехать в другую. Вообще больше уникальности и оригинальных идей. Если машина, то с пятым колесом на выносной штанге. Если вагон, то под колею в 2 метра 34 сантиметра. Короче, раскройте свой потенциал вовсю. Творите! Разработка — это искусство, а не инженерная дисциплина!
Во-вторых, используйте библиотеки старых версий. Отставание должно быть не меньше двух лет. После выкатки в production вы не будете обновлять их ещё год, чем достигнете отставания в три года, а это обычно значимый major с тотальной обратной несовместимостью. Задача миграции из серии маленьких обновлений превратится в толстого проблемного монстра, который будет откладываться, откладываться, что замечательно способствует цели.
В-третьих, забудьте о нагрузке. Вот буквально. Если складская программа, то для десяти яблок и маленького киоска. Если служба знакомств, то для одного подъезда. Если игровой сервер, то на 1 RPS. Вся архитектура должна быть создана только так. И код написан только так. Все эти милые запросы с n-дцатью JOIN’ами, непожатая статика на гигабайт, отсутствие кеширования, невозможность масштабировать и т.п. Через год вы должны мочь с затаённой гордостью говорить “слушайте, ну это же legacy… не может он в 10 RPS…”
В-четвёртых, создавайте прототип. С первого наброска на салфетке до последней строки это должен быть прототип. Модно. Современно. Успешно. Все так делают. Потом он год проболтается в production’е (нам же нужно собрать отзывы), потом у вас немножко отберут ресурсы разработки (оставив калеку на половину ставки), вот тут и попляшем, ибо прототипы характерны переписыванием полностью, что задача не в минуту, а чем дальше задвигается эта задача, тем ближе legacy.
В-пятых, больше разнообразия, больше экспериментов. Один из методов legacy-зации — затруднить и запрокрастинировать. Экзотические языки, экзотические фреймворки, пихнуть в ядро библиотеку вашего соседа по парте 3-го курса политехнического колледжа. Делайте всё, чтобы через год программист Вася, на которого свалится тикет “чёт функция не работает”, застрелился. Потом второй Вася. Потом третий. Четвёртого уже не дадут и мы получим всё тот же болтающийся в невесомости legacy.

Вот. Этих пяти пунктов достаточно. Дерзайте. У всех всё получится.

Добавить комментарий