Диванная аналитика.Требования к технологической платформе

Решил провести небольшое исследование на тему: Общие требования к технологической платформе/технологиям.

Тема достаточно обширная, говорить о ней можно долго и со вкусом.
Попытаюсь кратко сформулировать общие предпосылки и гипотезы которые хочу проверить/обсудить.

Используемые технологии/методы решения проблем всегда отражают текущее состояние общества.

В этом месте так и хочется вернуть что нибудь в стиле “влияние политики Викторианской Англии на системы водоочистки 21 века в континентальном Китае”. Шутка юмора.

Политика и экономика в данном конкретном случае рассматриваться не будет. Исходим из того, что за последние 5 лет произошли достаточно значимые изменения в политической и экономической обстановке. В России и пожалуй в мире. Точкой отчёта возьмём пандемию короновируса. Почему именно её? Абсолютно произвольное и субьективное решение.
К чему это я? А к тому, что раз внешняя среда изменилась, то и технологии тоже должны на это отреагировать, пусть и с небольшим лагом по времени.

Попробую немного заземлиться и перейти к нашим текущим реалиям.

Предметная область ИТ. А если ещё уже, разработка Программного Обеспечения и все что с ней связано.

Территориально: Россия и возможно ближайшие страны.

Ну ладно, как говорится “все течёт, все изменяется”. Эволюция технических систем неизбежна. ПО в этом смысле не исключение, и ввиду своей природы изменяться может быстро.

Какую пользу можно вынести из этого сакрального знания, или что я хочу проверить?

Я хочу понять как изменились ожидания от функционала ПО, в какую сторону будет происходить изменение архитектуры и методов /технологий разработки.

Технические/программные средства (программы, машины, инструменты) в идеальном мире :

  1. работают локально в основном режиме или в рамках одноранговых сетей. Т.е. не зависят от внешних сетевых сервисов, серверов, ключей, спутников GPS, магазинов приложений. Для этого даже придумали отдельный термин - local first software.
  2. имеют открытый исходный код (аппаратной и программной части)
  3. могут собираться самостоятельно из компонентов независимых поставщиков (нет vendor lock - единственного производителя)
  4. чем проще по устройству/технологии производства - тем лучше
  5. ремонтопригодны.

На текущий момент в области ПО скомпроментированы:
1.Облачные решения. За исключением федеративных self hosted решений. Т.е. тех что можно развернуть и самостоятельно поддерживать на локальных серверах.
2.Закрытый исходный код. Приложения или платформы, код которых нельзя проверить на предмет безопасности(прове, ти аудит) , самостоятельно дорабатывать/развивать и поддерживать.
3.Системы зависимые от единого центра (серверов)
4.Системы зависимые от постоянной доступности сети/интернета

Можно сформулировать некоторый набор критериев, или скорее решений которые хотелось бы видеть:
1.Децентрализованные одноранговые системы, не требующие постоянного подключения, исх код которых открыт.
2.Сервера могут использоваться, но:
2.1. их отсутствие не должно приводить к отказу системы
2.2. должны горизонтально масштабироваться/быть 100% взаимозаменяемыми
3.Транспортные протоколы легко заменяются (интернет, ethernet, WiFi, радио, синхронизация файлов)
4.Используется “сильное” шифрование данных при передаче и хранении
5.Макс использование OpenSource
6.Независимость от централизованных платформ ( магазинов приложений Windows, Android, Apple iOS)

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

Сформулировал, что называется выплеснул мысли на бумагу.
Перечитал, и понял что это действительно, скорее поток сознания, чем нормально структурированные предположения.
Итак, чего не хватает?

Как минимум непонятно из какой роли я все это рассматриваю.

Кто я сейчас? Политик(диванный аналитик) озабоченный судьбами мира и безопасностью государства, предприниматель/визионер пытающиймя увидеть и использовать значимые тренды, архитектор стремящийся ответить на изменившиеся запросы, разработчик ПО которому нужно остаться в струе быстроменяющихся технологий/сохранить свою профессиональную ценность, конечный пользователь которому надоели произвольные блокировки и непредсказуемые отказы в работе ставшего давно привычным фунционала?

Сложный вопрос :slight_smile: Думаю что в зависимости от настроения и времени суток , я совмещаю все эти роли в разных пропорциях.

Попытаемся последовательно пройтись по этим ролям, выделить для каждой самое важное/предмет интереса.

Итак, делаю взмах виртуальной волшебной палочкой, и встаю в роль:
1.Конечный пользователь
Моя позиция “Любая достаточно развитая технология неотличима от магии”.
Сегодня встал пораньше, по привычке полез в соцсеть посмотреть фото котика, выложенное вчера старой знакомой.
Фото нет? Но как? Я сам вечером видел уведомление, “Мой любимый питомец спит на диване”.
Не работает. Оказывается приложение которое я использовал последние -цать лет для общения с родными и знакомыми заблокировано. Всё мои фото и видео, контакты, вся переписка оказались недоступны…
Что же такое.
Собираюсь идти на работу. Сегодня встреча с заказчиком в его новом офисе.
Выйдя на улицу обнаружил что не работает мобильный интернет. Отключён в целях безопасности.
Приложение вызова такси без интернета не работает. @#₽&!
Gogl maps и яндекс карты не работают, маршут до места встречи построить не могу.
Запустил 2GIS. Хоть что то работает без интернета. Отлично! сориентировался по карте и пошёл на остановку автобуса.

Итак, с точки зрения конечного пользователя, главными качествами ПО становятся:
доступность для установки,
работоспособность при отсутствии/нестабильно подключениие к интернету,
контроль/сохранность личных данных.

2.Разработчик

To be continued. May be…