От появления ЭВМ до периферийных вычислений в телекоме

SaaS / S+SBig DataОблачные сервисыПериферия

Edge Computing — введение в тему

С момента появления первых электронно-вычислительных машин (ЭВМ) в 40-х годах прошлого века системы обработки данных прошли огромный путь от отдельного, ненадежного и громоздкого вычислительного устройства до глобальных распределенных систем обработки больших данных (BigData) получаемых в реальном времени. Современные сетевые вычислительные системы несут в себе отпечаток предыдущего накопленного многолетнего опыта их построения и эксплуатации.

Одним из результатов исторического развития стало появление Edge Computing. Что важно знать об Edge Computing? Это не четкое определение или конкретные механизмы, а концепция, при которой часть обработки данных, критичная к скорости, выполняется на узлах, вынесенных за пределы крупных ЦОДов и размещенных перед «последней милей» или в минимальном количестве прыжков от конечного устройства-потребителя или поставщика данных. В русскоязычной среде для обозначения Edge Computing распространены два обозначения – «граничные вычисления» и «периферийные вычисления».

Рассмотрим, как произошёл переход от огромных машинных залов до периферийных вычислений на смартфонах.

Предыстория — структура и задачи компонентов сетевых вычислительных систем

Задачей самых первых операционных систем (ОС), появившихся в 50-х годах (например, GM-HAA), была координация запуска пакетов программ и вывод полученных результатов. Более развитые ОС (такие как Unix, RSX, VMS) появились в 70-х и получили много дополнительных функций, в том числе связанных с межкомпьютерным взаимодействием. Если первым пользователям приходилось для работы использовать системы ввода/вывода расположенные непосредственно в центрах обработки данных (ЦОД), то с развитием коммуникационных систем в 60-х годах появилась возможность подключать пользовательские терминалы по выделенным и коммутируемым медным телефонным линиям, а в конце 70-х по волоконно-оптическим. В середине 60-х для организации линий связи стали доступны первые коммерческие спутниковые каналы.

Параллельно с развитием линий связи совершенствовались и протоколы передачи данных. После появления пакетных систем передачи данных канального уровня (в 70-х годах протокола Ethernet и подобных, в 80-х годах протоколов SLIP, Token ring, HDSL и т.д.), а затем в 80-х протоколов для пакетной связи на региональном и на глобальном уровне (сеть Internet на основе стека протоколов TCP/IP), пользователям для обработки и хранения данных стали с рабочего места доступны удаленные компьютерные центры.

С выпуском в 70-х годах первых микропроцессоров начали активно развиваться специализированные вычислительные устройства и персональные компьютеры. Они подключались к мощным ЦОД через глобальную сеть в качестве клиентских периферических устройств для доступа к вычислительным мощностям и хранилищам данных. Как правило рабочее место использовалось в качестве «тонкого клиента» (например, как терминал подсоединенный по протоколам Telnet, rlogin и т.д.) для запуска вычислительных задач на удаленном сервере или для получения данных по таким протоколам как FTP.

С 50-х годов для долговременного хранения компьютерных данных вместо перфокарт и перфолент начали применяться устройства с магнитными носителями информации, как для последовательного доступа (магнитные ленты, затем кассеты) больше подходящие для запуска системы и резервирования, так и для произвольного доступа (магнитные барабаны, диски, дискеты) позволяющие осуществлять быстрое обращение к необходимым фрагментам данных.

Первоначально наиболее распространенный в операционных системах способ организации хранения данных в виде файловых систем оказался не оптимальным для работы со сложными структурами характерными для бизнес-приложений, что привело к созданию в 50-х и 60-х годах специализированных языков программирования для работы с большим количеством разнотипных записей сравнительно небольшого объема (таких как язык Cobol, на котором написаны многие приложения используемые до сих пор), и к возникновению в 70-х годах концепции реляционных баз данных и языка SQL.

Другим способом доступа к серверным ресурсам стал появившийся в 80-х годах протокол RPC позволивший осуществлять удаленный запуск программ на сервере. На базе этого протокола в конце 80-х годов было разработано программное обеспечение первой массовой сетевой файловой системы NFS позволившей реализовать доступ к файлам и каталогам сервера как к локальным файлам и каталогам клиентского компьютера.

Развитие сетевых технологий

В 90-х годах произошел кардинальный скачок в количестве пользователей сети Интернет, объеме трафика, производительности рабочих станций и серверов, в развитии сетевых технологий и вычислительных систем обработки данных обусловленный целым набором факторов:

  1. Широкое внедрение высокоскоростных соединений на основе семейства протоколов xDSL.

  2. Развитие волоконно-оптических линий связи (ВОЛС).

  3. Стали более доступны спутниковые системы связи VSAT и дешевый комбинированный доступ.

  4. Появление протоколов распределенного поиска и передачи документов (gopher, http и т.д.).

  5. Появление первых поисковых систем - Archie (90), Wandex (93), Yahoo! (94), Google (96).

  6. Создание универсального протокола канального уровня PPP с автоматизированной настройкой параметров соединения, удобного для клиентского соединение по коммутируемым линиям и поверх xDSL.

  7. Степень интеграции, параметры микропроцессоров и технология SMP позволили использовать микропроцессоры при проектировании серверного оборудования, а центральные процессоры (ЦП) рабочих станции приблизились по производительности к ЦП серверов.

  8. Появление пользовательских операционных систем для персональных компьютеров с интегрированным программным обеспечением для подключения к интернет-провайдерам, простой настройкой сервисов Интернет и предустановленными Web-браузерами (Windows 95).

  9. Появление свободнораспространяемого и юридически чистого программного обеспечения на основе юниксоподобных систем (386BSD, FreeBSD, NetBSD, OpenBSD, ОС на основе ядра Linux и т.д.) портированных для широкой номенклатуры серверного и другого оборудования.

Для того что бы справляться с многократно возросшей вычислительной нагрузкой в ЦОД’ах интернет-провайдеров начали формироваться распределенные серверные кластеры объединенные высокоскоростными локальными вычислительными сетями (ЛВС) включающие десятки, сотни и тысячи серверов, обрабатывающих запросы клиентов и балансирующих нагрузку.

Кроме необходимого коммуникационного и серверного оборудования такие кластеры включали системы резервирования и специализированные системы хранения данных (СХД), использующие избыточные массивы дисковых устройств (RAID) для надежного хранения данных и быстрого восстановления после сбоев. Данные расположенные на СХД стали использовать для формирования распределенных сетевых файловых систем доступных серверам кластера.

Облачные технологии

Развитие ЦОДов и необходимость кратного увеличения их безопасности, надежности и готовности привело к появлению в конце 90-х годов программного обеспечения для виртуализации технических средств и позволило сформулировать новую вычислительную парадигму названную «облачные технологии», реализованную для коммерческих целей в 2000-х годах. В рамках этой парадигмы данные размазаны по системам хранения кластера и доступны через виртуальные интерфейсы виртуальных серверов, мигрирующих по кластеру.

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

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

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

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

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

  1. IaaS – аренда соединенных в сеть виртуальных серверов.

  2. PaaS – аренда программной платформы, например, доступ к данным и приложениям через пользовательский интерфейс без низкоуровневого доступа к виртуальному серверу.

  3. SaaS – доступ к данным через специализированный интерфейс.

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

Edge Computing — периферийные вычисления

Актуальная в настоящий момент модель сети представляет собой множество ЦОДов связанных между собой выделенными линиями или же туннелями через публичную сеть и окруженных удаленными периферическими устройствами — рабочими станциями, мобильными устройствами, небольшими компьютерными кластерами (например, расположенными в офисных помещениях) и т.д., имеющими доступ к ЦОДам через публичные сети различной пропускной способности. Да и сами ЦОДы могут сильно различаться по своему составу и вычислительной мощности, поэтому некоторые из них могут рассматриваться для головных ЦОДов как периферия. Обработка данных на всех этих периферийных устройствах и приводит нас к концепции Edge Computing.

Напомним, Edge Computing — концепция обработки критичных к скорости данных ближе к месту их возникновения без передачи в центральные ЦОДы.

Предпосылки для развития периферийных вычислений:

  1. Рост объемов данных, которые требуют обработки и быстрого ответа на местах. Нельзя отменить ограничение на задержку передачи данных на большие расстояния, а это критично для реалтаймовых систем.

  2. Рост загруженности сетей мобильных операторов – увеличение пропускной способности скорее не успевает за ростом объемов потребления трафика.

  3. Стремление разделить данные и сегменты сети для повышения безопасности.

  4. Желание повысить надежность и автономность отдельных частей IT-системы.

Децентрализация и перенос места обработки информации ближе к источнику данных производится для:

  1. Снижения нагрузки на сети передачи данных.

  2. Уменьшения времени задержки при обработке.

  3. Выполнения нормативных требований и законодательства.

Применимость концепции следует именно из этих трех основополагающих элементов. Фактически, любые системы, работающие в реальном времени, могут требовать использования периферийных вычислений. Развитию рынка периферийных вычислений способствуют IoT (концепция “интернет вещей” - Internet of Things) и массовый переход на сети 5G – первые обеспечивают кратный рост устройств, подключенных к сети, а вторые дают возможность передачи довольно больших объемов данных при росте количества подключенных устройств.

Оборудование для периферических вычислений

Разница с обычной схемой, когда устройства сразу отдают данные в ЦОД, заключается в появлении промежуточных узлов, где накапливается сырая информация, преобразуется, только затем уходит в ЦОД. В ЦОД может отправляться только информация нужная для долговременного хранения, а все оперативные данные могут вообще существовать только на периферических устройствах.

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

  1. Локальные устройства – отдельные шлюзы, промышленные компьютеры, минисерверы, контроллеры, банкоматы, онлайн кассы, терминалы для приема платежей, иногда сами пользовательские устройства типа смартфонов, беспилотные автомобили и т.д. Пользовательские устройства при этом иногда обозначают как endpoint-устройства. А промышленные компьютеры, минисерверы как Edge-устройства.

  2. Локальные ЦОДы или микроЦОДы – 1-10 стоек, дают значительные возможности по обработке и хранению данных по сравнению с локальными устройствами.

  3. Региональные ЦОДы – более 10 стоек.

2 и 3 пункт фактически может быть приравнен к CDN (Content Delivery Network) - Сеть доставки содержимого. Либо наоборот на базе чьего-то CDN можно строить инфраструктуру для периферийных вычислений.

Локальные устройства в наибольшей мере распространены. «Промышленный компьютер» или «периферийный сервер» в таком контексте может представлять из себя устройство чуть ли не в герметичном корпусе с ограниченным энергопотреблением, пассивным охлаждением, способным находиться в агрессивных, пыльных, влажных производственных средах или на добывающих предприятиях. Часто локальные устройства могут подключаться по беспроводным и проводным каналам связи одновременно – по воздуху получать данные с каких-то датчиков, СКД, телеметрии, а по Ethernet получать питание и отдавать уже обработанные данные вышестоящим серверам. Локальные устройства могут быть оснащены дополнительными датчиками – акселерометрами, барометрами, температурными датчиками, гигрометрами.

Типичный пример endpoint-устройства — смартфон — собирает данные со своих датчиков, агрегирует их, выполняет вычисления в мобильном приложении, затем передаёт их через CDN в основное облако сервиса. Типичный сценарий использования в современной жизни: виртуальная примерка вещей в приложениях различных ритейлеров, игры с дополненной реальностью.

Периферийные серверы – это специализированные или многофункциональные серверы, являющиеся интерфейсом между сырыми данными и более высокоуровневыми системами.

Если говорить про микроЦОДы (MDC), то существуют готовые решения «под ключ» на несколько стоек, которые могут быть быстро развернуты в месте потребления и обработки данных. Есть варианты и мобильных контейнерных микроЦОДов которые могут быть развернуты в любом самом удаленном месте. Обычно микроЦОДы содержат серверное оборудование, ИБП (Источники Бесперебойного Питания) и системы вентиляции, кондиционирования, пожаротушения, мониторинга. Микро ЦОДы могут быть использованы для размещения активного оборудования провайдера. Бывают и обратные ситуации – базовые станции сотовых операторов являются хорошим местом размещения периферийного оборудования и можно арендовать место в стойке на базовой станции под свой сервер. Тем более, что сотовый оператор уже решил проблемы энергоснабжения, охлаждения и сохранности оборудования. А получить связь лучше, чем на базовой станции оператора довольно сложно.

Архитектура

Наиболее распространены двух- и трёхзвенные варианты построения Edge-систем.

Двухзвенная – граничное устройство и ЦОД/облако.
Двухзвенная – граничное устройство и ЦОД/облако.
Трёхзвенная – граничное устройство, «туман» (микроЦОДы, микрооблака, отдельные сервера), ЦОД/облако.
Трёхзвенная – граничное устройство, «туман» (микроЦОДы, микрооблака, отдельные сервера), ЦОД/облако.

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

В большинстве периферийных ЦОД нет IT-специалистов на постоянной основе. Периферийными устройствами и микроЦОДами управляют в большинстве случаев удаленно. При этом требуется упреждающее техобслуживание с выездом на место персонала.

Достоинства

С точки зрения бизнеса следование концепции даёт:

  1. Повышение эксплуатационной эффективности работы.

  2. Создание новых технологически ёмких услуг и продуктов.

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

  4. Улучшение обслуживания клиентов.

Примеров использования множество и окружают они нас повсеместно.

Классический пример это крупные банковские системы, тот же Сбербанк, в Москве у него два крупных серверных центра (второй резервный), так же есть региональные центры, в качестве периферических систем выступают клиентские офисы, банкоматы, в качестве оконечных систем можно рассматривать смартфоны и компьютеры клиентов, онлайн-кассы и терминалы для приема платежей.

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

Как всё это работает? Возьмем несколько упрощенных примеров.

Камера в метро сканирует весь поток людей и отправляет агрегированные данные о пассажиропотоке (количество заходящих и выходящих людей на конкретную станцию) в ЦОД непрерывно. Благодаря этому можно регулировать частоту отправки поездов и выводить дополнительные составы на загруженные линии еще до того, как на перроне сформируется толпа. При этом на камеру загружена ограниченная по объему база фотографий преступников в розыске. Устройство на месте сверяет отсканированные лица с локальной базой. При совпадении срабатывает тревога.

Аналогично с камерами для фиксации потока автомобильного трафика - фиксируются количество и скорость автомобилей на трассе. На локальном оборудовании транспортные средства распознаются и классифицируются на мототранспорт, легковые авто, грузовые разного тоннажа и длины. Агрегированные данные отправляются в ЦОД. При нарушении скоростного режима, производится дополнительно фото/видеофиксация нарушителя – номер ТС (Транспортного средства), фото авто и водителя (если возможно). Эти дополнительные данные также отправляются в ЦОД для формирования штрафа. Так же как с камерами в метро можно дополнительно отслеживать авто по госномерам по базе загруженной на локальное устройство.

Более сложный вариант - беспилотные авто или сельхозтехника, управление дронами. Здесь используются более сложные модели машинного обучения, чем для распознавания госномеров ТС. При этом выше и требования к оборудованию, потому что какая-то хотя бы минимальная логика управления беспилотным устройством во время чрезвычайной ситуации обязательно должна быть на локальном устройстве, иначе любые помехи с удаленным центром управления могут привести к ДТП или иной аварии.

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

Что еще можно назвать из наиболее востребованных периферийных вычислений?

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

  • Формирование различных моделей при машинном обучении, предварительная обработка данных при работе с нейросетями и в области ИИ.

  • «Умные» дома.

  • «Безопасный город».

  • Онлайн-игры.

  • Любые сети доставки контента, инфраструктурные проекты интернет-гигантов.

  • Виртуальная и дополненная реальность.

Еще в 2018 году аналитики McKinsey говорили в своём отчете “New demand, new markets: What edge computing means for hardware companies” о 100 вариантах использования в 11 наиболее перспективных отраслях. А сейчас 2020 год и рынок динамично развивается несмотря на пандемию и экономический кризис.

Законы

Про это надо сказать отдельно. Законы и локальные нормативные акты диктуют свои правила игры. Из-за этого надо хранить данные граждан России на территории России, данные граждан Евросоюза на территории Евросоюза. Таких ограничений достаточно и это вынуждает технологические компании дробить базы и выносить их в CDN в конкретном регионе Земли.

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

Практика

Рассмотрим работу концепции переферических вычислений на примере компании Форвард-Телеком, одним из главных направлений работы которой является автоматизация деятельности операторов связи и интернет-провайдеров. Программное обеспечение Forward во многом является потребителем информации, полученной с edge- и endpoint-устройств. Система Forward BSS/OSS, как комплексная платформа, предназначена для поддержки бизнеса клиента практически при любой существующей модели сети оператора. Платформа Forward имеет логичную модульную структуру, легко масштабируется, поддерживает облачную и гибридную модель развертывания, при этом система позволяет настроить разнообразные внешние интерфейсы для взаимодействия с элементами сети оператора и клиентами.

Система OSS отвечает за правильную работу сетевой инфраструктуры и оборудования, а система BSS за учет оказанных услуг, взаиморасчеты с абонентами, управление ресурсами и проектами (элементы подсистемы ERP), за отношения с абонентами и хранение дополнительных данных (элементы системы CRM).

Для небольших операторов доступ к возможностям Forward BSS/OSS может предоставляться как стандартизованная услуга облачного сервиса по модели SaaS, при этом сеть оператора и его клиенты взаимодействуют с системой в рамках концепции Edge Computing.

В качестве периферии выступает коммуникационное и серверное оборудование оператора, рабочие станции и мобильные устройства клиентов, на которые могут устанавливаться выносные модули системы и специализированные мобильные приложения. При работе через веб-интерфейс системы Forward вычислительные ресурсы периферийных устройств могут быть задействованы при выполнении элементов страниц, использующих JavaScript и апплетов Java.

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

Характерной особенностью многих крупных операторов является наличие исторически сложившегося «зоопарка» информационных систем. Плохо совместимое программное обеспечение различных вендоров, внедрённое на разных этапах развития компании в каких-то региональных подразделениях или полученное при покупке местных операторов. Быстрая замена такого «зоопарка» часто не возможна или слишком накладна. Интеграция исторических информационных систем может быть быстрее и дешевле произведена через Forward BSS/OSS через API или специально написанные шлюзы.

Поток обращений по интеграции OSS/BSS систем с мобильными приложениями становится больше. Все операторы связи, банки, ритейлеры, сервисные компании, госорганы постепенно обзаводятся приложениями B2B, B2C или B2B2C класса для коммуникации со своими заказчиками. Самостоятельное управление абонентскими услугами через мобильное приложение подразумевает глубокую интеграцию в бизнес-процессы компании и всё больше приближает нашу работу по автоматизации к endpoint-устройствам конечных пользователей.

Сложности при использования концепции

Все сложности возникающие при использовании переферических вычислений следуют из предпосылок и самой сути концепции:

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

  2. Бывает сложно обеспечить физическую безопасность устройств от обычных вандалов или от кражи.

  3. Информационная безопасность edge- и endpoint-устройств заслуживает отдельного упоминания. Удаленность от основных объектов инфраструктуры, отсутствие охраны может дать злоумышленнику возможность физического доступа к устройству и его компрометации.

  4. Устройства могут обладать прекрасной энергоэффективностью, но оставлять желать лучшего по производительности и объему хранимой локально информации.

  5. Необходимо контролировать доступ в помещения и на территорию, отведенную под микроЦОД. Приходится вести мониторинг окружения – влажность, температура, дым, затопления, сила ветра, атмосферное давление и т.д. Обеспечивать надзор – видео и аудио наблюдение за объектом.

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

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

Для разработчиков систем автоматизации, 7 пункт является наиболее важным. Именно он входит в сферу ответственности Форвард-Телеком перед заказчиком и разработчики стараются выполнять свою работу хорошо. О том, как идёт у Форвард-Телеком разработка биллинговых систем уже писалось на Хабре в статье «Как там биллинг делается: когда заказчик и разработчик говорят на разных языках».

Уменьшение техпроцесса и широкое распространение энергоэффективных многоядерных вычислительных устройств будет способствовать дальнейшему перекладыванию обработки данных на локальные устройства и увеличению собираемой номенклатуры данных. Как минимум, можно ожидать, что будет необходимо готовить платформу Forward OSS/BSS к существенному расширению типов поступающей информации, обработке этих данных в реал-тайме с использованием Edge Computing инфраструктуры. Например, вполне вероятно, что в будущем данные какого-нибудь фитнес-браслета о кардио-ритме носителя могут быть использованы в банковской системе для скоринга рисков, оценки вероятности возврата задолженности и расчета процентной ставки по кредиту.

Так что — Prepare yourselves because cyberpunk is coming…

Теги:Периферийные вычисленияцодоблачные сервисыоблакоинфраструктура
Хабы: SaaS / S+S Big Data Облачные сервисы Периферия
+5
1k 7
Комментировать

Похожие публикации

Data Scientist
9 марта 2021126 000 ₽Нетология
Data Engineer 8.0
10 марта 202177 000 ₽New Professions Lab
Специалист по Data Science
18 марта 2021104 000 ₽Яндекс.Практикум
Data Science Bootcamp
29 марта 2021250 000 ₽Elbrus Coding Bootcamp
Аналитик данных
4 марта 202166 000 ₽Нетология

Лучшие публикации за сутки