Неважно, выбираете ли вы поставщика, язык или инфраструктуру, всегда избегайте решений, внедрив которые вы становитесь зависимыми от них и не можете в случае необходимости что-то изменить. Сохраняйте возможность для внесения изменений без полного переписывания проекта. Конечно, проще сказать, чем сделать, и многие технические директора / архитекторы, действовавшие из лучших побуждений, на этом погорели. Проблема в том, что выбрать путь, который предоставит больше возможностей в будущем, бывает труднее, а иногда и дороже. Думайте об этом как о страховке: если что-то случится, у вас будет страховой полис, выплата по которому уменьшит ваши страдания.
Заметки с полей
Flash
Недавно у меня был клиент, чье ПО для администрирования SAN (сети хранения данных) не обновлялось годами, и, когда дело дошло до внесения небольшого изменения, ничего не вышло: ПО было создано с использованием уже не существующей технологии Macromedia Flash. Пришлось разыскивать старый ноутбук, давно не подключавшийся к интернету, чтобы на нем не было обновлений. Как только мы подключились, SAN обновилась и консоль администратора перешла с Flash на HTML5.
Java – хороший пример базового языка, не ограничивающего ваш выбор. Этот язык был создан для работы на множестве процессоров, применяемых для создания встраиваемых систем. Использование абстрагированной виртуальной машины позволило разработчикам писать на едином стандартном языке, а JVM (виртуальная машина Java) стала связующим звеном между оборудованием / операционной системой и вашим кодом. Java предлагает ряд высокопроизводительных JVM (Oracle, IBM, OpenJDK, Amazon), которые можно использовать, не меняя ни единой строчки в коде на Java. Независимо от того, где вы запускаете Java-приложение – в Linux, Windows, Amazon, Google или Microsoft, – код остается тем же. Вы сохраняете контроль над своей операционной системой, виртуальной машиной и всем остальным, и можете заменить что угодно, не отвлекая команду разработчиков.
Если вы выбрали решение, которое требует расходов на лицензию, вам необходимо подготовиться к возможному увеличению ее стоимости – насколько сильно это повлияет на ваш бюджет? Организации часто жалеют, что купили лицензии Oracle / SQL Server только чтобы увидеть, что с годами цены растут при меньшей гибкости (например, невозможно переехать в облако), и в то же время понимая, что никаких уникальных функций этого продукта они не используют.
Не выбирайте платформы или ПО, для которых нет альтернативы. Иначе вы окажетесь во власти цен и набора функций конкретного поставщика; это касается в том числе бэк-офисных инструментов, таких как Office 365, Google Workspace и Salesforce. Однако в некоторых случаях это может быть приемлемым компромиссом, особенно при использовании крупных поставщиков, которые обычно не меняют цены резко.
Обеспечьте себе несколько «аутов», как если бы вы играли в покер. Хороший игрок в покер никогда не будет гнаться за одной картой, надеясь собрать руку из ничего. По ходу игры он должен быть уверен, что у него есть несколько вариантов. Планирование работы компании основано на том же принципе. Вы не знаете, что ждет вас завтра – бизнес может решить развернуться и двинуться в другом направлении, или же перемены могут заставить всю отрасль бороться за выживание. Ответственность за надлежащее реагирование лежит на техническом директоре. И бесконечно правильнее заниматься организацией и финансированием небольших постепенных обновлений, чем полномасштабной гигантской переделкой.