Наелись Майкрософтом

Давным давно, когда мы только начинали работу над Авендой, передо мной и моим напарником встал вопрос выбора языка программирования. Первоначально я, рассматривал вариант создания решения в виде десктопного приложения, потому что считал, что могут возникнуть те или иные ограничения при работе из браузера (например, потребуется работа с внешним оборудованием и интеграция с другими программами). Но при этом есть также преимущества и для решения в виде веб-сайта (более массово с точки зрения выбора разработчиков, понятно для нас самих, кросс-браузерно, технологии непрерывно развиваются и т.п.). Мой напарник рассказал мне об SPA — Single Page Application — модном подходе в вебе, когда приложение реализуется в виде одной страницы, и где множество операций (навигация, рендеринг шаблонов и т.п.) выполняются на клиенте. Сервер же в этом случае отдает только нужные данные по запросу. На мой взгляд просто и гениально. Мы сделали ставку именно на такой подход и на такое решение.

Клиентским языком, разумеется, выбрали JavaScript и фреймворк Backbone, который практически сразу был заменен на Angular. Решение писать на Ангуларе, принятое в 2012 году было стратегически верным. А вот с серверным языком вышло все не так-то просто.

Мой напарник на тот момент знал несколько языков программирования. Его предложением было — писать на C#, поскольку это его фаворит. Я кодил на PHP и в 12-ом году у меня за плечами было уже несколько проектов. Для меня его предложение никак не шло в разрез моих интересов — в программистские дела я не хотел влезать вовсе, кроме базы данных и её архитектуры, потому что прекрасно понимал, что на все у меня не хватит времени; я хотел сосредоточиться на бизнес-задаче и интерфейсе. Для меня также был важен человек, с которым я работаю. Я искренне убежден, что у языка C# есть и преимущества, и хорошие программисты, и хорошие работодатели, и хорошие проекты. Но минусом, и в тот момент мы его озвучили, являлось то, что сервера на Windows стоят очень дорого по сравнению с Linux’овыми. Но к слову, дорого обходятся не только сервера — за те сюрпризы, которые Windows может вам преподнести, может тоже выйти лишняя копеечка.

Проект Mono, возникший по всей видимости из желания людей прекратить морочиться с Windows’ом, — это разработка для Linux, которая позволяет выполнять .NET приложения. На сколько мне известно Микромягкие тут же подали на них в суд. Чем закончился суд — увы не изучал. Знаю только, что Microsoft приобрела проект Mono, забрала его под себя, но не потопила, а заверила общественность, что даст ему развиваться. Что сейчас и происходит. На главной странице сайта так и написано: «Sponsored by Microsoft». Но на тот момент про Моно мы еще не знали.

Одной из вехой проекта стало то, что практически сразу мы подали и получили подтверждение на участие в Bizspark’е — программе от Microsoft по поддержке молодых проектов. На деле — пылесос тех проектов, кто не до конца понимает последствий сотрудничества с Microsoft, и создание таких условий для выбора, чтобы Microsoft не имела явного недостатка перед бесплатными продуктами — необходимость много и за все платить. Опять же, на тот момент — это выход из ситуации, поскольку поиск напарника в проект — задача непростая.

Первым звонком для меня стало осознание того, что проект прошел стадию эйфории, когда кажется что рынок твой, стоит только показать ему продукт. Более того, мы уже расстались с напарником и на горизонте светила перспектива расставания с другим человеком — на тот момент он в больше степени держал в себе концепцию и решение программной части проекта. Почему — по естественным причинам. Если у вас есть что-то, что приносит вам 1 миллион, станете ли вы тратить половину, треть, четверть своего рабочего времени на то, что приносит вам рубль? Соотношение может и завышено, но идея именно такая. Также у нас заканчивалась 3-хлетняя программа Bizspark, которая давала нам бесплатное ПО (любое от Microsoft) и кредит в $150 на каждого члена команды на облачные ресурсы. Так вот все это приближалось к отметке «сейчас Microsoft с нас все вернет».

Кстати, именно так все и случилось. Когда программа закончилась, Майкрософт прислал письмо об окончании программы, но лишь спустя месяцы у нас подписка перешла в платное состояние. Для меня, конечного пользователя, это крайне нелогично и запутанно — в апреле мы зарегались в Bizspark, в августе начали пользоваться Azure, спустя три года в октябре нам стали выставлять счета. Где логика — загадка. Вобщем, 19 октября Microsoft переводит нас на платную подписку, незадолго до этого у нас начинается новый отчетный период. Что усугубляет факт того, что я замечу происходящее, например просматривая списания с моей банковской карты — до списания пройдет полтора месяца. Но в день с нас списывают по 2500 рублей. Так продолжалось около 2-3 недель, пока мы это не заметили и еще около 2 недель пока мы искали решение. Оказалось, с нас списывали деньги за лицензию MSSQL Enterprise, которая стоит порядка $1000 в месяц. При этом по программе Bizspark нам полагалась одна такая лицензия бесплатно! Но, блин Карл! Я нашел телефон менеджера, который года 2 назад манил меня в акселерационную программу Microsoft, через него я вышел на кого-то из сотрудников нуженого мне отдела и узнал, нужно было заполнить какую-то информацию в профиле, просто заполнить, и лицензия была бы бесплатна! Чуть-чуть бюрократии и все будет! Таков Майкрософт. Принимаем и живем дальше. В тот момент я решаю, что надо выбрать любую другую технологию базы данных.

В конце месяца нам выставили счет на 90 000 рублей. Ситуацию удалось немного выправить. Пока мы разбирались с тех поддержкой откуда у нас такие списания, я привел свое видение ситуации и свои аргументы в пользу того, что списания навязаны нам. Мы не получали уведомлений накануне. Мы не нуждаемся в лицензии Enterprise. Майкрософт нашу позицию принял и скостил нам 65 000 рублей — выпилил все расходы по «аренде» лицензии Enterprise. За что им спасибо, точнее тому самому индусу, с которым мы общались. В Российском офисе сотрудники на нас забили и перестали отвечать практически сразу. Взаимно, вы нам тоже не особо в будущем нужны.

Была еще одна история. Примерно год назад я обратил внимание, что наше API пользовательской части сайта (авторизация, регистрация, бронирование и т.п.), немного говоря, странное. И я захотел его переделать — сделать проще и стандартизировать подход. Как оказалась, API у нас не настолько громоздкое. И его переработка заняла у нас несколько месяцев. То же самое я рассчитываю сделать и для бэк-офиса. Одна из причин такого рефакторинга — мы начинали разрабатывать iOS приложение в 2016 году и как выяснилось, для него в любом случае требовалось модифицировать или переписывать ряд API методов. Что вообще означало, что можно было начать писать все то же самое с нуля на другом языке программирования. Эту часть всего бэк-энда можно было сделать независимой и запустить, например, на поддомене api.avenda.ru вообще на отдельном сервере. Еще раз я осознал, что мы не сильно зависим от текущих технологий на бэк-энде.

Сейчас с нас списывают по 10-20 тыс. рублей в месяц за Azure. Одну из проблем мы решили — базу перевели в облачный сервер вместо развертывания своего сервера MSSQL. База нам обходится по 1000 р в месяц. Но сервера на Azure, которые нас устраивают, обходятся в 8000 р. При этом у меня есть мой личный сервер для проектов на PHP, за который я плачу 9000 р в год с производительностью немного ниже Ажуровского сервера.

Я вполне серьезно задумался, а что должно быть «решением» наших сложившихся проблем? Мне нужно научиться разбираться в технологиях Azure? Пойти на курсы? Каково должно быть стратегическое решение, которое позволит нам спокойно делать бизнес, а не топтаться на месте? И ответ напрашивается сам собой — нужно решение, которое работает на Linux, чтобы не связываться с Windows-серверами навсегда.

В конце 2015 года я искал ответ на вопрос «как перевести приложение на другой язык программирования». Мне посчастливилось случайно познакомиться (уже даже не помню как) с человеком из Яндекса и проконсультироваться у него на предмет того, какие технологии использует Я, как он видит перспективы развития языков и что думает об Окнах. Насчет последнего, я не сомневался, человек администрирующий сервера, без насилия не станет любить Windows. Вобщем, его ответ был таким, что и Pyton, и PHP не настолько страшны, как их шарписты малюют. Если я смотрю в сторону Linux, это хороший выбор.

Для меня показателем успешности языка является то, какие топовые компании его выбрали. Facebook и VK, Twitter, Инстаграм, Google, Яндекс. И мне становится понятным какими технологиями реально владеют крутейшие умы планеты. И где Windows в этой пищевой цепи. И почему аргумент «C# идеален для корпоративных систем» — не работает. C# хорошо проник в университеты, где ему обучают и где Майкрософт предлагает бесплатные продукты для студентов. Почему, Карл? Да вы подумайте. Этот как 3 года бесплатных ресурсов Ажуры и один месяц, который год кормит.

Короче, я поставил ультиматум нашим девелоперам, либо 19 февраля мы запускаемся в продакшене не на Майкрософте, либо я ищу людей, которые перепишут бэк-эенд на другой язык программирования. Ждем. Всем попкорна…

«За» Microsoft:

  • Все итак работает.
  • Изменения — это стресс, а если оставить все как есть, то людям не нужно будет подстраиваться.
  • Потеря времени.
  • «Microsoft много сейчас делает для .NET».

«Против» Microsoft:

  • Мне не нравится компания Microsoft и я не верю в её будушее.
  • Дорого и нерентабельно для бизнеса.
  • Лучшие умы планеты используют и развивают другие технологии.

Один комментарий к “Наелись Майкрософтом”

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