RSS

Комментарии

Современный рынок электронной коммерции требует от платформ не только базовой функциональности, но и комплексного подхода к решению бизнес-задач. DST Platform демонстрирует именно такой подход – интегрированное решение, где каждая система работает на благо общего результата. Особенно впечатляет возможность горизонтального и вертикального развития проекта, что позволяет бизнесу эволюционировать естественным путем, добавляя новые категории товаров и услуг по мере роста. Это не просто платформа для запуска маркетплейса – это надежный фундамент для построения успешного цифрового бизнеса в долгосрочной перспективе.
В эпоху стремительного развития электронной коммерции особенно важно выбрать правильную технологическую основу для своего проекта. DST Маркетплейс действительно впечатляет своей универсальностью – возможность запускать как B2B, так и B2C платформы открывает широкие перспективы для бизнеса любого масштаба. Особенно ценно то, что система позволяет не просто запустить проект за рекордные два месяца, но и обеспечивает его бесшовное масштабирование в будущем. Это именно то, что нужно современному бизнесу – гибкость, скорость и потенциал для роста без необходимости полной перестройки системы.
Будучи дата-инженером, работавшим в самых разных компаниях, в том числе и в DST Global, я достаточно часто использовал Microsoft SQL Server. В этом разделе я расскажу Вам о проблемах, возникающих при работе с этой традиционной системой, с которыми мне довелось столкнуться. Позже мы рассмотрим, как современный стек данных (MDS) справляется с большинством этих трудностей; многие из них стали для меня настоящим открытием!

Масштабирование

Традиционные развертывания SQL Server часто использовали локальные серверы, а это означало, что масштабирование с учетом растущих объемов данных требовало значительных инвестиций в оборудование и могло привести к длительным простоям во время обновлений. Более того, когда у нас стало меньше данных, у нас оставалось все это дополнительное оборудование, которое, по сути, нам было не нужно. Но мы все равно платили за него. Это все равно, что платить за целый автобус, хотя нужно всего лишь несколько мест…

Сложные ETL- процессы

SSIS широко использовался для работы с ETL — процессами. Безусловно, это был достаточно мощный инструмент, но и он во многом имел ограниченный функционал, особенно по сравнению с более современными решениями по интеграции данных. Примечательно, что Microsoft SQL Server решил большинство этих ограничений с помощью Azure Data Factory и SQL Server Data Tools (SSDT):

— Звонки по API: с самого начала SSIS не работал со звонками по API. Для работы с веб-сервисами нужны были сложные скрипты, что значительно усложняло ETL – процессы;
— Распределение памяти: задания SSIS требуют внимательного управления памятью. Без достаточного количества серверной памяти сложные задания с данными становились просто невыполнимыми;
— Аудит: для мониторинга и устранения неполадок требовался серьезный аудит пакетовSSIS, что увеличивало объем работы с данными;
— Контроль версий: в ранних версиях SSIS возникали проблемы с интеграцией системы контроля версий, что затрудняло отслеживание изменений и негативно сказывалось на эффективности работы команды специалистов в обрасти данных;
— Работа с несколькими платформами: управление SSIS из систем, отличных от Windows, было достаточно сложной задачей, поскольку этот инструмент был ориентирован исключительно на Windows.

Техническое обслуживание

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

Интеграция

Интеграция SQL Server с новыми инструментами и платформами не всегда проходила гладко. Для решения этой задачи приходилось в буквальном смысле ломать голову, что в значительной степени усложняло нашу архитектуру данных.

Как современный стек данных помог мне справиться со всеми этими трудностями

Современный стек данных (Modern Data Stack, MDS) позволил справиться со множеством трудностей, с которыми мне приходилось сталкиваться в процессе работы с SQL Server. Теперь для хранения данных мы смогли использовать облачные технологии, иными словами нам больше не нужно было тратиться на дорогостоящие серверы, которые не всегда были нам нужны. Получать данные из разных источников стало намного проще, поскольку появились инструменты, делающие все за нас. Сложное кодирование стало пережитком прошлого.

Когда нужно было отсортировать или очистить данные, мы могли делать это непосредственно в БД с помощью самых простых команд. Это позволило избежать головной боли, связанной с управлением большими серверами или «копанием» в Big Data в поиске крошечной ошибки.

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

Компоненты MDS

MDS состоит из нескольких уровней, каждый из которых оперирует специализированными инструментами, которые в совокупности позволяют оптимизировать процессы обработки данных.

— Загрузка и интеграция данных — извлечение и загрузка данных из различных источников, включая API, базы данных и SaaS-приложения. Инструменты интеграции: Fivetran, Stitch, Airbyte, Segment и т.д.

— Хранение данных — современные облачные хранилища данных и озера данных предлагают масштабируемые, гибкие и экономически эффективные решения для хранения данных. Облачные хранилища данных: Google Bigquery, Snowflake, Redshift и т.д.

— Преобразование данных — такие инструменты, как dbt (data build tool), позволяют выполнять преобразования данных непосредственно в хранилищах данных с помощью простого SQL.

— Аналитика данных и BI — аналитические решения и BI инструменты позволяют исследовать данные гораздо быстрее и эффективнее, визуализировать их и обмениваться информацией в рамках всей организации. BI инструменты: Tableau, Looker, Power BI, Good Data

— Извлечение данных и обратный ETL — позволяет организациям оперативно использовать данные, загружая их в бизнес-приложения, что позволяет оперативно принимать решения на основе проверенных данных. Инструменты обратного ETL: Hightouch, Census

— Оркестрация данных — платформы, позволяющие автоматизировать рабочие процессы обработки данных. Инструменты оркестрации данных: Airflow, Astronomer, Dagster, AWS Step Functions

— Data Governance и безопасность данных — Data governance уделяет особое внимание управлению доступа к данным, а также обеспечению строгого соответстивия нормативным требованиям, а также требованиям в области защиты данных. С помощью Data Governance можно легко организовать активы данных. Инструменты организации данных: Alation, Collibra, Apache Atlas.

— Качество данных — обеспечивает надежность и точность данных благодаря их своевременной проверки и очистки, что позволяет быстрее принимать решения на основе данных. Инструменты обеспечения высокого качества данных: Talend, Monte Carlo, Soda, Anomolo, Great Expectations

— Моделирование данных — помогает в разработке схем баз данных, обеспечивает гибкость архитектуры данных. Инструменты моделирования данных: Erwin, SQLDBM

MDS и более эффективное управление затратами

MDS – это фантастика! Он определенно ускоряет работу с данными и избавляет data – инженеров от изнуряющей головной боли. Несмотря на то, что он дает нам возможность применять в свой работе крутейшими инструментами, все — таки по прежнему важно следить за расходами. Облачные технологии с оплатой по факту использования — это здорово, поскольку что мы платим только за то, что используем. Но, как и в случае с оплатой услуг связи, необходимо рационально подходить к своим потребностям в области использования облачных технологий. Поэтому, наслаждаясь головокружительным функционалом MDS, очень важно должны следить за тем, как именно мы его используем. Если Вы не хотите, чтобы предъявленный счет за предоставленные услуги не стал для Вас неприятной неожиданностью, внимательно следите за используемыми инструментами и внимательно взвешиваете все за и против их использования в своей работе.
Современный стек данных отражает эволюцию управления данными, переход от традиционных монолитных систем к более гибким облачным архитектурам. Современный стек данных предназначен для работы с Big Data, обеспечивая масштабируемость, гибкость и возможность обработки данных в режиме реального времени. Он является модульным, что позволяет организациям использовать специализированные инструменты для каждого этапа обработки данных: сбор данных, хранение, преобразование и анализ данных. Поскольку компании уделяют большое внимание принятию решений, основанных исключительно на данных, современный стек данных является неотъемлемой частью процесса получения практических знаний, выработки лучших практик и внедрения передовых инноваций.
Современный стек данных (Modern Data Stack, MDS) — это совокупность инструментов для интеграции данных, которые позволяют организациям собирать, обрабатывать, хранить и анализировать данные.

Некоторые компоненты современного стека данных:

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

Некоторые характеристики современного стека данных:

— Масштабируемость. Позволяет организациям легко увеличивать или уменьшать масштаб в соответствии с потребностями проекта.
— Эффективность. Интеграция облачных платформ помогает сэкономить время и ресурсы.
— Гибкость. Позволяет компаниям добавлять или удалять сервисы в стеке данных без необходимости настраивать систему с нуля.
— Экономическая эффективность. По сравнению с собственными решениями снижение стоимости облачных технологий помогает повысить экономию средств.

Современный стек данных предназначен для обработки больших объёмов данных, обеспечивая масштабируемость, гибкость и возможности обработки в реальном времени.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

— Laravel — самый популярный фреймворк PHP, создан в 2011 году;
— DST Platform — славится надёжностью и соответствием веб-стандартам;
— Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
— Yii2 — считается самым быстрым фреймворком PHP;
— CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.
Мы например выбираем фреймворк, задаваясь простым вопросом: «Какие потребности у заказчика?» Если заказчик может указать в техзадании пожелания по языку программирования и фреймворку, то в большинстве случаев мы будем работать с этими пожеланиями. Если же у заказчика нет определённых предпочтений, требований или он предлагает не очень подходящий под задачу, по нашему мнению, фреймворк, мы предложим продукт, на котором специализируется наша команда.

И если до этого мы уже реализовали несколько проектов, например, на связке React + DST Platform (бэкенд на DST Platform и фронтенд на React), то будем предлагать такой вариант заказчику, а также усиливать свою команду в этом направлении.
Мы например выбираем фреймворк, задаваясь простым вопросом: «Какие потребности у заказчика?» Если заказчик может указать в техзадании пожелания по языку программирования и фреймворку, то в большинстве случаев мы будем работать с этими пожеланиями. Если же у заказчика нет определённых предпочтений, требований или он предлагает не очень подходящий под задачу, по нашему мнению, фреймворк, мы предложим продукт, на котором специализируется наша команда.

И если до этого мы уже реализовали несколько проектов, например, на связке React + DST Platform (бэкенд на DST Platform и фронтенд на React), то будем предлагать такой вариант заказчику, а также усиливать свою команду в этом направлении.
Выбор фреймворка, равно как и языка программирования, зависит от множества факторов. Я приведу основные, самые значимые, на которые смотрю сам.

Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, PHP-фреймворк Laravel очень популярен на Западе и сильно обгоняет своего конкурента Symfony, а значит, работу на нём будет находить значительно проще. А вот Yii имеет некоторую популярность только в России — да и то вакансий немного.

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

Требования. Важно понимать, что от вас ждёт работодатель, и обычно это прописывается в вакансиях. Сколько лет опыта должно быть, нужно ли техническое образование и так далее. Например, при разработке хранилищ данных, скорее всего, без математического образования обойтись не получится.

Перспективность. Технологии могут устаревать и терять востребованность. Важно смотреть за динамикой роста популярности языков программирования и фреймворков. Например, Python держит позиции за счёт развивающегося направления машинного обучения, и вкладываться в него точно имеет смысл. Язык Go всё чаще используется для микросервисов в крупных компаниях, но нет гарантий, что этот тренд сохранится надолго.

Интерес. Конечно, нельзя добиться весомых результатов, работая с тем, что не драйвит и не вызывает интереса. Поэтому это очень важный пункт. Но учтите, что интересы со временем могут меняться — и это нормально.
Выбор фреймворка, равно как и языка программирования, зависит от множества факторов. Я приведу основные, самые значимые, на которые смотрю сам.

Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, PHP-фреймворк Laravel очень популярен на Западе и сильно обгоняет своего конкурента Symfony, а значит, работу на нём будет находить значительно проще. А вот Yii имеет некоторую популярность только в России — да и то вакансий немного.

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

Требования. Важно понимать, что от вас ждёт работодатель, и обычно это прописывается в вакансиях. Сколько лет опыта должно быть, нужно ли техническое образование и так далее. Например, при разработке хранилищ данных, скорее всего, без математического образования обойтись не получится.

Перспективность. Технологии могут устаревать и терять востребованность. Важно смотреть за динамикой роста популярности языков программирования и фреймворков. Например, Python держит позиции за счёт развивающегося направления машинного обучения, и вкладываться в него точно имеет смысл. Язык Go всё чаще используется для микросервисов в крупных компаниях, но нет гарантий, что этот тренд сохранится надолго.

Интерес. Конечно, нельзя добиться весомых результатов, работая с тем, что не драйвит и не вызывает интереса. Поэтому это очень важный пункт. Но учтите, что интересы со временем могут меняться — и это нормально.
При выборе фреймворка или языка программирования необходимо всегда обращать внимание в первую очередь на его популярность и наличие экспертов в команде (или на рынке). Это позволит в будущем избежать проблем с поиском кадров. Можно выбрать в качестве языка, например, Scala или Clojure, которые, безусловно, имеют свои сильные стороны относительно консервативной Java, но потом столкнуться с серьёзной проблемой поиска специалистов, когда необходимо будет усилить команду или заменить сотрудников, которые решили покинуть проект.

Второй момент — это зрелость продукта. Всегда хочется использовать что-то новое и модное, но стоит быть готовым к тому, что молодой продукт может иметь достаточно серьёзные баги. Существуют примеры, когда необходимые доработки фреймворка ждут исправления месяцы, а то и годы. Не стоит также исключать, что в какой-то момент разработка фреймворка может быть остановлена. На мой взгляд, всегда стоит отдавать предпочтение проверенным временем продуктам. В качестве примера можно привести Java и Spring. Это практически стандарт де-факто в разработке бизнес-сервисов. Огромная накопленная база знаний сводит почти к нулю вероятность столкнуться с неразрешимой проблемой.

Стоить отметить, что в современной архитектуре приложений всё больше используется микросервисный подход. Он позволяет разделить большое приложение на много маленьких сервисов. Это позволяет многократно снизить последствия от неправильно выбранного языка программирования или фреймворка, и позволяет развязать руки в экспериментировании. Так как сервис мал, то в любой момент его можно достаточно быстро переписать.

Всегда стоит сохранять прагматичный подход к решению проблемы. При выборе того или иного продукта взвешивать преимущества и возможные негативные последствия на дальнейшую разработку.
Для бэкенда самыми популярным языками являются JavaScript, Python, Ruby, Java, C#, Go и PHP.

Для простых проектов и задач выбор языка практически не имеет значения. Времена сложных конфигураций с веб-серверами и XML давно прошли, а с текущими MVC-фреймворками написать простое приложение можно на любом языке. Что на Node.js, что на Spring Boot развернуть веб приложение можно всего за несколько минут.

Если же вам нужна автоматическая генерация CRUD веб-страниц, можно использовать Ruby on Rails для Ruby или Grails для Java.

Что касается сложных и объёмных проектов с долгосрочной поддержкой, лучше отдавать предпочтение статически типизированным и компилируемым языкам, таким как C#, Go и Java.

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

И наконец, фреймворки ASP.NET для C# и Spring для Java, благодаря большому набору компонентов в DI-экосистеме, предоставляют все возможности для удобного проектирования и точной конфигурации веб-приложения.

При выборе языка и фреймворка для бэкенда обычно учитывают следующие критерии:

Размер и сложность проекта. Если это небольшой проект или MVP, когда стоят короткие сроки выполнение проекта, то можно выбирать тот язык и фреймворк, в которых есть знание у команды или легко найти специалистов на рынке. Очень часто, особенно на аутсорсе, решение принимается в зависимости от отдела, куда попадает проект. К примеру, один и тот же проект может быть сделан с использованием как Java, так и .NET.

Тип проекта. Разные типы проектов требуют различных технологий. К примеру, приложения с интенсивным использованием данных, системы бронирования, приложения для социальных сетей, потоковые приложения, CMS, IoT, приложения в банковской сфере, торговые площадки и простые MVP, скорее всего, потребуют различных языков программирования и фреймворков.

Стоимость. Многие технологии, фреймворки и среды разработки требуют лицензии, но есть и много бесплатных вариантов. На практике, скорее всего, у вас будет выбор между платными инструментами, но с большей функциональностью и поддержкой, или бесплатные, но с ограниченным набором функций.

В моей практике чаще всего всё зависело от языка программирования, которым владеет команда. Если команда пишет на C#, то и весь стек связан с платформой .NET. Если команда пишет на Java, то и фреймворки, соответственно, Spring, Hibernate и так далее.

Ещё бы я разделил проекты на корпоративные и не корпоративные. Существует мнение, что корпоративные проекты чаще всего пишутся на Java или .NET. Хотя в последнее время такие языки и фреймворки, как Go, Node.js и Python, составляют достойную конкуренцию по многим параметрам.
Несколько факторов, которые стоит учитывать при выборе:

— Возможности сайта или приложения. Например, если нужны персонализированные рекомендации или анализ данных, то можно выбрать фреймворки, такие как Laravel, Django или Nest.js.
— Объём трафика. Если планируется высокий трафик (от 10 тысяч), то простые решения, например CMS, могут не выдержать нагрузки.
— Масштабирование. Стоит выбирать стек, который позволит легко добавлять новые функции и адаптироваться к увеличению нагрузки, например, Express.js и Nest.js.
— Безопасность. Важно выбирать стек с повышенными механизмами защиты.
— Сообщество. Нужно изучить, насколько активно сообщество каждого фреймворка. Чем шире аудитория, тем больше она предоставляет ресурсов и ответов на сложные вопросы.

Некоторые особенности фреймворков:

— Django (Python). С помощью Django можно быстро настроить и запустить работающий веб-сервис, а специфичные функции и бизнес-логику запрограммировать отдельно.
— Spring Boot (Java). Фреймворк предлагает разработчикам те же самые функции, но при этом работать с ним намного проще. В нём есть встроенные функции безопасности, удобная работа с базами данных и поддержка API.
— Express.js (Node.js). Минималистичный и гибкий фреймворк для создания веб-приложений и API. Известен скоростью и масштабируемостью.
— Laravel (PHP). Удобный для пользователей фреймворк с большим сообществом.

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

Но вообще — такая стратегия кодогенерации есть — она в классе более глобальной стратегии «Синтетических данных» когда ИИ учится на сгенерированном другой моделью ИИ данных — и получает новый результат. Стратегия спорная, но вроде работает.

Главная дилемма — сейчас ИИ очень сложно оценивать исходный (в т.ч. в базе данных) и сгенерированный код на предмет его эффективности (по набору параметров). Пока только, относительно доступный критерий — это «повторяемость»/«распространённость» частей кода. Но и плохой код может быть очень широко распространён. Более того — как раз эффективный и сложный код распространён очень мало — люди просто мало его пишут, тем более в публичных источниках!

А, вот ИИ — как раз наоборот — может генерировать сложный и очень хитрый код — на котором потом и обучаться!

Но ИИ всё-равно не хватает критериев эффективной оценки кода по целому набору параметров и способов проводить эту оценку — но подход «синтетических данных» может включать в себя не только банальную обработку текстов — но и фактическую проверку программ в режиме исполнения — что позволит собрать больше сведений параметров эффективности!

Но вторая дилемма — эффективность кода очень сильно зависит от контекста и среды применения (входных данных и иных условий эксплуатации) — и вот это ИИ генераторам пока вообще не по зубам — а именно готовность эффективно работать в заданной среде — и определяет конечную эффективность программы — а не её математическая красота!

Вообще — я пропагандирую ЯП 5-го поколения — где написанный/сгенерированный код вообще не является статическим — он постоянно тестируется, профилируется и переоценивается — именно в реальной (снача, конечно, в тестовой) среде эксплуатации. Кстати, а в будущем — ИИ может ещё и сам создавать отдельные тестовые контуры из продуктивной среды — и устраивать там свои эксперименты по разным сценариям эксплуатации и разным видам данных. И по результатам собранных данных генерировать новые версии кода — это и есть динамическое программирование! И, само собой, помещать собранную статистику и версии кода в общую базу знаний — чтобы последующие генерации учитывали этот опыт.

И, кстати, зачатки такой стратегии перекомпилирования уже появились даже сейчас — NET 8 уже так умеет — его JIT-компилятор сначала может генерировать менее оптимальный код (но быстро) — затем запускать его — профилировать на реальном выполнении — и на основе карты быстродействия — параллельно компилировать (уже более длительно и вдумчиво) — новую версию коду. В дальнейшем код снова мог бы снова профилироваться — если будут предпосылки — он мог бы снова перекомпилироваться! Помоем и в Java такое тоже уже есть или ожидается (не помню точно)!
Данный фильм я уже очень давно видел — и всё давно хочу пересмотреть — лежит уже пару лет на винте (кстати на схожу тему — есть серия книг и недавний сериал «Укрытие»)

Но… есть куда более современны фильм, показывающий один из вариантов будущего — «Дитя робота» / «I Am Mother» — но — это лишь один из возможных сценариев! Как вариант будущего — это показанное в мультфильме «Валл-И». Но могут быть и другие сценарии… не обласканные кинорежиссёрами, а порой и не обласканные даже писателями фантастами (хотя те уже столько всего на прогнозировали — что тут уже сложно быть уверенным, что ещё придумаешь что-то оригинальное для всего человечества) — кстати все эти с материалы 100% послужат исходной базой обучения ИИ — который учтёт и проанализирует такие сценарии развития — и будет вести свою деятельность опираясь на эти знания (уж в какую строну — не знаю).

Но, всё-таки, во всех этих фильмах не про программирование и не про программистов (простите Сексмиссию в деталях не помню).

Всё же я выше написал пост в рамках сабжа статьи — про развитие технологий программирования с применением ИИ на ближайшие несколько столетий! А, в первую очередь, именно на вторую половину XXI века! Тут пока ещё не до роботов и продвинутых ИИ систем, с интеллектом, близким к человеческому!

Ещё на тему стратегий развития человечества и ИИ можно вот тут мой комментарий глянуть (да и другие комментарии, и всю статью )

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе 170 Е.
Региональный оператор Сколково. Технопарк Нобель

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон