Какой язык программирования изучать инженеру
Перейти к содержимому

Какой язык программирования изучать инженеру

  • автор:

Какие языки программирования и софт-скилы нужны QA-инженеру

Аватарка пользователя Любовь Зароченцева

Какие навыки нужны QA-инженеру: какие языки программирования стоит учить, какие soft skills пригодятся, какие инструменты освоить.

Обложка поста Какие языки программирования и софт-скилы нужны QA-инженеру

IT-профессии продолжают волновать умы и привлекают в свои ряды новых сотрудников. Одна из таких профессий — Quality Assurance engineer или QA-инженер. Это специалист, который тестирует ПО на этапе разработки и еще до релиза минимизирует риск ошибок и проблем продуктов и решений. Но есть заблуждение, что для работы в должности QA-инженера не нужны технические знания, ведь он просто “жмет на кнопки и записывает ошибки”. Чтобы узнать больше, поговорила с Александром, QA-инженером Smartex.

Статья будет полезна junior/middle QA-инженерам и всем, кто думает о входе в IT.

Ключевые навыки

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

Грамотная речь

Человек может четко, без воды и ответвлений, донести свою мысль с первой попытки в письменной форме. Стиль, изложение, оформление должны быть максимально понятными для окружающих. Различные виды “дислексии” несовместимы с профессией инженера по качеству.

Пусть это и “soft skill”, но этот навык можно и нужно развивать

Работа с браузером

(все вкладки в панели разработчика, с акцентом на вкладку Network). Часто встречаются сотрудники (включая разработчиков), которые при уже функционирующем UI+API не могли понять по Swaggerу или иной доке, как составить корректный запрос к серверу. Вкладка network отличное подспорье к тому, чтобы избежать этой проблемы. Также есть кейсы, когда console вынужденно выступает клиентом для отправки запроса на сервер.

Работа с API (REST)

клиент при этом не важен, хоть CURL. Множество вакансий для QA включает в себя тестирование WEB-приложений и/или Мобильных приложений. Этот навык – основа того, что человек будет не просто заводить дефекты на основании документации (QA), но действительно будет следить за качеством продукта (QC). Имея большой опыт в тестировании API и насмотренность в разных реализациях задач, специалист сможет указывать на потенциально некорректные решения со стороны разработчиков, а также с большей вероятностью сможет овладеть техникой предугадывания ошибки (Error Guessing).

SQL

В большинстве случаев тестировщик будет использовать SQL в виде готовых запросов, которые были оставлены в WIKI кем-то или предоставлены разработчиком/DBA и тд. Нужно понимать, что такое база данных и как приблизительно там всё устроено. Имея минимальный набор навыков, уже можно предугадывать ошибки на основании констрейнтов и лимитов на поля. Еще более полезным этот навык становится, когда поступают задачи на тестирование миграций/переездов/сбор статистики. На начальном этапе можно не считать обязательным.

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

Быть уверенным пользователем своей ОС

Linux/Windows/MacOS не так важно. Но не должно возникать проблем с настройкой своей ОС под нужды проекта. Файлики .hosts/впны/развернуть виртуалку при необходимости, прописать переменную окружения, выполнить какой-то bash или powershell скрипт – всё это нужно уметь.

Если вы начинающий специалист в поисках работы – обязательно изучайте теорию тестирования. Специалисты по подбору персонала любят проверять познания в этой области. ¯\_(ツ)_/¯

  1. Как тестируют в Google. Авторы: Джеймс Уиттакер, Джейсон Арбон, Джефф Кароло.
  2. Тестирование программного обеспечения. Авторы: Сэм Канер, Джек Фолк, Енг Кек Нгуен.
  3. Тестирование DOT COM, или Пособие по жестокому обращению с багами в интернет- стартапах. Автор: Роман Савин.
  4. Тестирование программного обеспечения. Базовый курс. Автор: Святослав Куликов Искусство тестирования программ. Авторы: Гленфорд Майерс, Том Баджетт, Кори Сандлер.
  5. A Practitioner’s Guide to Software Test Design. Автор – Lee Copeland.
  6. Lessons Learned in Software Testing. Авторы: Cem Kaner, James Bach, Bret Pettichord.
  7. Agile Testing. Авторы: Lisa Crispin, Janet Gregory.

Добавляйте в комментариях свои любимые книги по тестированию и QA.

Умение хорошо локализовывать и оформлять дефекты

Учитесь, применяйте и все члены команды будут вам благодарны:

  • Используйте форматирование.
  • Потренируйтесь в навыках составления summary для багов.
  • Оставляйте по возможности данные для воспроизведения в физическом виде, чтобы коллегам не приходилось создавать данные по шагам с нуля.
  • Убедитесь что найденная проблема это ДЕЙСТВИТЕЛЬНО баг, составьте грамотный ожидаемый результат, основанный на документации/комментарии аналитика/чего-то ещё. Не заставляйте разработчика придумывать, как система в итоге должна работать, и быть может в процессе поиска корректного ожидаемого результата вы поймёте, что найденное не является багом. Вдруг это фича?

Какие языки программирования и софт-скилы нужны QA-инженеру 1

Что по языкам

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

Если есть навыки и тяга к программированию, это сильно помогает в работе на любом проекте. Однако, хороший ручной тестировщик порой более ценен для команды, чем человек с навыками программирования. Если рекомендовать, то python из-за его сообщества и огромного числа готовых решений. Но главное – это понимание основ программирования:

  1. Типы данных
  2. Условия
  3. Циклы
  4. Функции
  5. Обработка исключений
  6. ООП

Изучать это можно вне контекста какого-либо конкретного языка.

Гораздо полезнее ознакомиться с HTML/CSS и знать термины, которые в них применяются. Это позволит не пугаться, когда слышите от коллег про hover/debounce/протокол/background/toast/modal и пр. В интернете огромное множество источников, в которых можно почерпнуть информацию.

Самые сложные навыки в тестировании – это софт скилы. По техническим навыкам много гайдов и обучающих видео в свободном доступе. Есть люди, которые могут подсказать тот или иной момент, есть понимание конечной цели, путь к ней. С софт-скилами всё эфемерно. Сложно выделить алгоритм изучения эмпатии или адекватной реакции на критику. Работа с soft-skill мне напоминает обучение нейронной сети: скармливаешь мозгу кучу информации и надеешься, что на выходе получится что-то стоящее.

Советы

  • Не бойтесь излагать свои мысли. Редко встретишь тестировщиков, которые терпеливо пытаются донести свою мысль, не отказываясь от неё. В силу особенностей иерархии в IT компаниях, вес профессии QA ниже любой другой специализации, и из-за этого сложнее настоять на своем видении проблемы. Иногда баги попадают в прод потому, что тестировщик не настоял на своём мнении. В проектах часто будут отвечать отказом, но нужно не прекращать озвучивать свои сомнения. Это важно – быть человеком задающим неудобные вопросы.
  • Если предстоит что-то монотонно проверять руками, задумайтесь об автоматизации. Не можете сделать сами – доведите идею до руководства. И каждый раз, когда начинаете что-то делать, задавайте себе вопрос – можно ли это автоматизировать?
  • Оценивайте свою работу адекватно. Не нужно завышать оценки на тестирование. Лучше потратьте это время на изучение новых технологий, и честно скажите об этом руководству.

В порядке вещей услышать диалог в IT:

  • Сколько нужно времени на тестирование нового метода API. 40 часов. Почему так много? Там же просто get запрос на получение регионов России.. А-а-а! Ну тогда хватит 20 часов
  • Будьте скрупулезны в своей работе. Каждая мелочь важна, каждая деталь имеет свой смысл, никогда не оставляйте без уточнения, если что-то в реализации не совпадает с описанием в спецификации. Стоит уточнить у коллег, это никогда не лишнее.
  • Не общайтесь в личках, а обсуждайте все вопросы в проектных чатах. Все причастные будут в курсе происходящего, и, возможно, вы получите ответ даже не от того человека, которому он был адресован.
  • Вступите в сообщества QA и телеграм-каналы по тестированию. Там много полезной информации, можно спросить совет или самому его дать.

В мире IT важно постоянно знакомиться с новыми решениями/подходами/технологиями. Я бы рекомендовал хотя-бы раз в месяц читать дайджест заботливо собранный хорошим человеком. Если какая-то информация заинтересует – выделите время на её более глубокое изучение. Если компания не выделяет времени на изучение новых технологий (такие ещё есть?), вкладывайте свое время – это в ваших интересах.

Какие языки программирования нужны в IT?

Какие языки программирования нужны в IT?

Язык программирования следует выбирать, отталкиваясь от конкретных задач, которые вы планируете решать. Вместе с программным директором SkillFactory Евгением Картавцом и ментором, автором научных статей и курсов SkillFactory Дмитрием Крыловым рассказываем, какие языки используют специалисты в IT.

Data Scientist

Что делает

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

Профессия / 12 месяцев
Fullstack-разработчик на Python
Создавайте веб-проекты самостоятельно
4 490 ₽/мес 7 483 ₽/мес

dffsdd (2)

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

Читайте также Какие языки программирования нужны в IT?

Какие языки использует

Python — один из самых популярных языков в data science. У него простой синтаксис — это позволяет быстро освоиться в языке и не заниматься долгим изучением классов и структур, а сразу перейти к тренировке моделей. У Python большое количество библиотек и фреймворков: для анализа данных дата-сайентисты работают с Pandas, с помощью библиотеки NumPy можно решать сложные системы уравнений (она автоматизирует вычисления с помощью множества математических функций), для машинного обучения пригодится Scikit-learn. В Matplotlib (библиотека для визуализации данных) проанализированные данные можно оформить в наглядные графики. R — преимущество этого языка программирования в удобной визуализации данных. В R акценты сделаны на статистике, поэтому синтаксис там немного сложнее, чем у Python. В нем огромное количество библиотек, в том числе по машинному обучению (Caret, MLR, randomForest), мощные библиотеки по визуализации (Ggplot2, Esquisse, ggvis), по работе со строками (stringr) и манипуляции с данными (Dplyr, data.table). Matlab — с его помощью можно достать данные из облачных хранилищ, предварительно их обработать, оформить результаты анализа в графиках с помощью среды Live Editor. Matlab сокращает время на обработку разных типов данных: от изображений до текста. При этом модели машинного обучения можно развертывать и на C или С++. С/С++ — если Python обеспечивает простоту манипуляций с кодом, то они дают скорость. Операции имеют меньшее время отклика, что применяется, например, в поисковых системах или при разработке компьютерных игр. Также эти языки используют для того, чтобы писать на них библиотеки и фреймворки для работы с данными (например TensorFlow или Shark для машинного обучения).

Станьте дата-сайентистом и решайте амбициозные задачи с помощью нейросетей

Data Engineer

Что делает

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

Какие языки использует

На SQL дата-инженер «общается» с базами данных: извлекает данные из реляционных баз (таблицы со структурированными наборами данных), например MySQL, Oracle, PostgreSQL. Нужно разбираться в командах. Например, понимать, как собирать docker container, какие параметры прописывать, следить за метриками нагруженности. Для большинства вакансий требуется знание одного из трех языков программирования: Scala, Python или Java. На них оптимально автоматизировать процессы, шедуллить скрипты (вызывать команды по расписанию). На Java написаны основные инструменты для обработки больших данных: Apache Hadoop, Kafka, Cassandra. Scala — один из эффективных в промышленных масштабах языков программирования для дата-инженеров. Он быстрее Python, что выгодно выделяет его при работе с обширными базами данных. Также дата-инженеры часто пользуются фреймворком Apache Spark, который позволяет работать с реляционными базами данных (доставать данные с разных компьютеров).

Data Analyst

Что делает

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

Какие языки использует

Дата-аналитик работает с данными, применяет статистические методы, чтобы потом делать обоснованные выводы, поэтому у Python и R в профессии остается преимущество. Сценарии на этих языках можно запускать в Tableau (через TabPy) и Power BI, там выводы и метрики можно вывести в понятные дашборды. Помимо Excel-таблиц аналитик может работать с данными из баз данных. Для этого ему понадобится знание языка SQL.

Станьте аналитиком данных и получите востребованную специальность

Маркетолог-аналитик

Что делает

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

Читайте также Кто такой маркетолог-аналитик и чем он занимается

Какие языки использует

Python — механика задач маркетолога-аналитика и других профессий в data-сфере схожа: нужно достать и проанализировать данные, выдвинуть гипотезы, проверить и визуализировать их. Маркетологи проводят A/B-тестирование (когда контрольная группа сравнивается с тестовой), для которых им нужны те же Pandas для работы со сгруппированными данными, NumPy для работы с функциями и матрицами, Matplotlib и Seaborn для визуализации. В R много инструментов, предназначенных как раз для веб-аналитики. Написание кода в R можно облегчить с помощью среды RStudio; разрабатывать аналитические веб-приложения в Shiny, выгружать данные из Яндекс.Метрики или Google Ads с помощью клиентов rym и RAdwords. Много задач в этой сфере можно решить, не обладая навыками программирования. Однако если вы выучите Python и научитесь его применять для анализа данных, то получите конкурентное преимущество и сможете решать более широкий спектр задач.

Продуктовый аналитик

Что делает

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

Какие языки использует

Помимо классических задач по построению моделей, A/B-тестированию, визуализации конкретных бизнес-решений в дашбордах, с помощью R или Python продуктовый аналитик может проводить когортный анализ — оценивать метрики пользователей за определенный отрезок времени, разделив их на независимые группы — когорты. Кроме того, автоматизация нужна, например, для RFM-анализа большой базы клиентов. Это еще один метод сегментации, при котором клиентов делят по критериям: давности совершения покупки (Recency), частоте (Frequency) и деньгам (Monetary). Вручную этот процесс может занимать много времени, поэтому автоматизация позволяет его усовершенствовать и избежать ошибок.

Станьте продуктовым аналитиком: работайте с метриками, составляйте понятные отчеты и грамотно тестируйте гипотезы

Системный аналитик

Что делает

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

Какие языки использует

Системный аналитик далек от разработки кода. Он умеет его читать, знает, IT-инфраструктуру и занимается проектированием документации. Ему достаточно знать основы SQL, чтобы управляться с анализом данных и проверять реализацию требований.

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

Евгений Картавец,
программный директор SkillFactory

Системный администратор

Что делает

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

Какие языки использует

Системному администратору Linux стоит знать Bash (предустановленная командная оболочка), в Windows он должен уметь использовать команды ОС, также будет полезен PowerShell (средство автоматизации из оболочки с интерфейсом командной строки и языка сценариев). Скрипты системный администратор может писать на Python.

Тестировщик и QA-инженер

Что делает

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

Читайте также Кто такой тестировщик и чем он занимается

Какие языки использует

Языки применяет только специалист-автоматизатор, ручному тестировщику программировать не нужно. Автотесты на Python разрабатывают с помощью фреймворка PyTest, тестировать веб-приложения можно c Selenium, а в браузерах уже есть встроенные инструменты для тестирования (например Chrome DevTools в Google Chrome). Java — другой популярный язык для создания автотестов. Тот же Selenium совместим с обоими языками, а значит, его можно комбинировать с одним из самых популярных фреймворков JUnit. Инструмент Jenkins используется для непрерывной сборки и тестирования проектов, что облегчает интеграцию изменений. Вместо Java тестировщик может использовать Kotlin. Его синтаксис компактнее, чем у Java, благодаря этому проще читать код и писать API-тесты (искать ошибки в связях разных систем).

Станьте тестировщиком – это лучший выбор для быстрого старта в IT

Frontend-разработчик

Что делает

Занимается веб-разработкой: создает визуальную часть сайта, делает его удобным для клиента. От дизайнера он получает описание работы интерфейса и его внешнего вида. После этого он верстает страницу, реализует то, как пользователь будет взаимодействовать с ней, то есть делает сайт приятным и удобным, программирует работу интерфейса. Frontend-разработчик тесно взаимодействует с backend-разработчиком. Поэтому иногда он превращается в fullstack-разработчика.

Какие языки использует

HTML — на этом языке пишут разметку страницы, то есть структуру, разделы, абзацы, расположение элементов на сайте. HTML состоит из тегов, которые как раз и управляют представленными на экране данными. CSS — отвечает за стили и расположение элементов в браузере. С помощью него можно добавить стили, цвета, органично встроить отступ. JavaScript — делает сайт интерактивным. Благодаря этому можно добавлять динамические элементы (слайдеры, всплывающие окна), поддерживать взаимодействие с ними: они будут реагировать на действия пользователя (клики, движение) и меняться. Например, именно с помощью JavaScript по мере прокручивания подгружается лента в соцсетях. Для сложных проектов принято использовать уже готовые фреймворки и библиотеки (React, Angular или Vue); кроме того, сейчас JavaScript часто используется и на backend.

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все

Backend-разработчик

Что делает

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

Какие языки использует

PHP — предназначен для backend сайтов. Код на PHP передает информацию из базы данных на frontend: например, он отображает на странице интернет-магазина товары, их названия и стоимость. С фреймворками вроде Symfony или Laravel можно сократить рутинную работу, не нужно тратить время на повторное программирование типовых модулей. Go — с его помощью можно реализовать backend, с которым будет взаимодействовать продукт. Чаще всего его используют для разработки микросервисов и высоконагруженных проектов, где много пользователей одновременно работают с сайтом или приложением. C# — популярен среди разработчиков, потому что он обладает мощью C++, но более прост в использовании и потому что в нем защищены от ошибок команды, которые обычно ставят в тупик пользователей C++.

C# похож на Java. Оба языка достаточно сложные, чтобы писать на них только backend, но хорошо подходят, если нужно решать широкий класс задач. Например, на одном языке разработать сайт, десктопное приложение и скрипт, работающий на сервере. Универсальным вариантом для backend-разработки будет и Python. Он достаточно простой и идеально подходит как первый язык программирования.

Евгений Картавец,
программный директор Skillfactory

Fullstack-разработчик

Что делает

Он совмещает в себе функции frontend- и backend-разработки, поэтому может создать, к примеру, веб-приложение целиком, начиная с верстки и заканчивая бизнес-логикой на сервере. Fullstack строит архитектуру и ядро сайта, разрабатывает функционал, пишет код, делает из дизайнерского макета рабочую страницу, тестирует работу сайта и обновляет базы данных и разделы. Читайте также: Гид по профессии fullstack-разработчик

Какие языки использует

Для backend-разработки сайта есть много вариантов. Например, язык Python в сочетании с фреймворком Django или PHP и один из фреймворков: Laravel, YII или Symfony. На C# можно пользоваться фреймворком ASP.Net, а на Java — Spring.

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке

Разработчик игр

Что делает

Создает игры для любых платформ: PC, мобильных устройств, приставок или VR. Он объединяет все сюжетные и дизайнерские задумки, доводит их до ума, загружает игру в сторы. Он может делать как многопользовательские 3D-игры, так и простые 2D-платформеры.

Читайте также Кто такой разработчик игр?

Какие языки использует

C# — один из самых популярных языков для разработки игр, так как на нем написана скриптовая часть одного из самых известных движков — Unity. Разработчику нужно разбираться в ООП, циклах, функциях и массивах, владеть Unity, чтобы писать код под любые платформы. Unity особенно популярен в России и заточен под мобильные устройства и кроссплатформенность. C++ — можно разрабатывать не только игры, но и движки к ним (например, на С++ написаны Unreal Engine, Cryengine, основная часть Unity). На нем чаще создают игры, которые требуют высокой производительности, например со сложной графикой. Также он поддерживает низкоуровневые возможности, которые позволяют оптимизировать продукт под конкретные платформы (те же PlayStation или Xbox).

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

Мобильный разработчик

Что делает

Создает приложения для смартфонов, планшетов, часов, любых мобильных устройств. Он контролирует все этапы разработки: архитектуру, проверку, запуск в продакшн, выпуск обновлений, реализует интерфейс по заданному дизайну. Сейчас у мобильных разработчиков два пути развития: если есть Mac, то удобнее заниматься приложениями для iOS, если нет — Android. Читайте также: гид по профессии iOS-разработчик

Какие языки использует

Kotlin и Java — благодаря поддержке Google Kotlin стал официальным языком разработки приложений на Android. При этом работать на обоих языках можно в одном проекте: они совместимы, а Kotlin — это доработанная версия Java. Swift — на Swift создают продукты для Apple: приложения для iOS, Mac, Apple Watch, Apple TV, они функциональны и удобны для пользователя. Приложения пишут в интегрированной среде разработки Apple XCode, там собраны все необходимые инструменты для комфортной работы: можно и создавать интерфейс, и редактировать код, и проводить UI-тесты.

Станьте iOS-разработчиком — работайте
в штате, на фрилансе или запускайте собственные приложения

DevOps-инженер

Что делает

DevOps — это набор практик, инструментов и способов решения инженерных задач в команде, направленных на постоянное улучшение и автоматизацию процессов. DevOps-инженер работает на стыке между разработчиком, тестировщиком и администратором. В его задачи входит обеспечение переноса разработанного кода в продакшн и мониторинг работоспособности системы.

Какие языки использует

Python — один из наиболее распространенных языков для DevOps: он универсален и применяется на разных операционных системах. Но можно писать скрипты и на том языке, который лучше всего удалось изучить или который используют в компании. Инструменты управления контейнеризацией (Docker, Kubernetes), непрерывной интеграции (Jenkins, GitLab), развертывания сред по шаблону (Puppet, Ansible, Terraform) — классический стек DevOps.

DevOps-инженер — связующее звено между всеми этапами создания продукта. Станьте незаменимым специалистом
за 6 месяцев.

«Белый» хакер

Что делает

  • Кто такой «белый» хакер?
  • История Егора Зайцев: «За день до трудоустройства я провел кибератаку на работодателя»

Какие языки использует

«Белый» хакер работает на уровне готовых программ и ОС, поэтому ему важны знания принципов и алгоритмов работы, а также способов управления ими и их взлома.

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

«Белый» хакер

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

Топ-7 языков программирования для ITOps-инженеров

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

Тем не менее, базовое понимание языков программирования является важным качеством для многих ITOps-инженеров. Если они хотя бы немного умеют программировать, они могут выполнять свою работу более эффективно.

Ниже рассматриваются семь скриптовых языков, которые ИТ-инженеры стоит изучить, чтобы лучше выполнять свою работу.

Почему языки программирования важны для ИТ-инженеров?

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

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

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

Лучшие языки программирования для инженеров

Существуют сотни языков программирования, какие из них лучше всего изучать ИТ-инженерам?

Ответ, конечно, зависит от того, какие языки использует ваша организация и какие типы инструментов и рабочих процессов ей необходимо поддерживать. Но в целом, следующие языки — все они являются скриптовыми (то есть инженерам не нужно компилировать код для его запуска) — являются хорошим выбором для ИТ-инженеров, которые хотят научиться программировать.

1. Bash

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

2. PowerShell

Для ИТ-команд, работающих с системами Windows, PowerShell является важным языком программирования. ИТ-инженеры могут использовать PowerShell для написания сценариев, автоматизирующих различные задачи. Его также можно использовать для доступа ко многим административным функциям Windows (хотя в большинстве случаев они доступны и через графические интерфейсы).

3. Python

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

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

4. Perl

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

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

6. JavaScript (и Node.js)

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

7. Groovy

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

Заключение

У ИТ-инженеров есть большой выбор, когда речь заходит о том, какие языки программирования изучать. В некоторых случаях решение может быть продиктовано типами систем или сред, которые вам приходится поддерживать; например, Bash является очевидным языком для инженеров, работающих с Linux, в то время как PowerShell важен для Windows. В других случаях имеет смысл изучить более универсальный язык, который может помочь не только в ИТ-операциях, но и в решении множества других задач.

11 языков программирования для DevOps и их применение

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

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

А во-вторых, под словом DevOps подразумевают тех людей, которые выполняют все эти задачи, то есть DevOps-инженеров. Нередко встречается мнение, что DevOps не профессия, а, цитируем, «прежде всего культура разработки, методология и только потом инструменты и специальности». Но одно другого не исключает, тем более, что в списке вакансий всё чаще фигурирует DevOps Engineer. Так что де-факто это уже стало профессией, но более грамотно всё же называть этих специалистов не просто «девопсами», а DevOps-инженерами или командой DevOps, если речь идет о целом отделе.

Чем занимаются DevOps-инженеры

Главными задачами DevOps-инженеров являются сокращение времени разработки ПО без потери качества, обеспечение безопасности, выявление и исправление ошибок и минимизация их возникновения в последующих версиях продукта. Целью команды DevOps является обеспечение наилучших результатов в кратчайшее время за счет постоянной обратной связи между остальными участниками процесса разработки. Фактически команда DevOps является связующим звеном между программистами, тестировщиками и администраторами. А вот более конкретное описание важных задач, решением которых занимаются DevOps-инженеры:

  • Управление проектом. DevOps-инженеры следят за тем, чтобы все участники процесса разработки понимали, что и зачем они делают, помнили о сроках выполнения задач. Кроме того, DevOps-инженеры выступают посредниками между остальными, обеспечивая быструю и слаженную работу всей команды.
  • Проектирование и совершенствование инфраструктуры. Инфраструктура может сдерживать разработчиков: инженер DevOps поможет определить, как можно улучшить ее, чтобы быстрее выводить новые версии продукта на рынок.
  • Автоматизация. Одна из главных задач специалиста DevOps — сократить количество часов на разработку за счет использования полезных инструментов (их можно найти или написать самостоятельно), которые позволят автоматизировать выполнение важных повторяющихся задач.
  • Обратная связь. Одна из главных задач инженера DevOps — наладить обратную связь с отделом разработки для сокращения времени обнаружения ошибок (TTD) и их минимизации (TTM).
  • Безопасность разработки. SecDevOps — так называется специалист, который должен обеспечивать функциональную и безопасную инфраструктуру, а также качество автоматизации ключевых процессов.

Что должны уметь DevOps-инженеры

Одним из популярных вопросов является: «Должен ли инженер DevOps уметь программировать?» Здесь нужно понимать, что в зоне ответственности DevOps находится не только координация работы команды, но и, например, автоматизация рутинных задач, для чего потребуется подключать специальные инструменты. Поэтому умение хотя бы дорабатывать код — это обязательное условие, ведь найти готовые плагины или модули под специфические задачи порой невозможно, а тратить время программистов из отдела разработки на написание этих инструментов нецелесообразно. А вот ключевые навыки для тех, кто откликается на вакансию DevOps Engineer:

  • Коммуникабельность, организаторские способности и ответственность. DevOps-инженеры регулярно проводят встречи, устанавливают графики для выполнения задач, руководят проверкой, а также выполняют большой объем другой работы, о которой мы говорили выше. Поэтому такой человек должен уметь организовать себя и других, а общение с коллегами не должно быть для него в тягость. Хороший DevOps-инженер не навязчив, однако вовремя напомнит о себе, доброжелателен, однако требователен. И всегда внимателен.
  • Опыт работы в IT. Инженеров DevOps можно найти практически в любой области IT. Конечно, можно найти кого-то, кто работал только инженером DevOps, но так как эта дисциплина относительно молода (около 15 лет), это может несколько ограничить поиск. Бывшие программисты и другие профессионалы IT (например, сисадмины или администраторы баз данных) тоже могут стать превосходными DevOps-инженерами, ведь их опыт в конкретных областях дает практические знания, которые могут пригодиться в конкретном проекте.
  • Тестирование программного обеспечения. Многое сейчас можно автоматизировать, но не менее полезно уметь выполнять тестирование вручную, когда это необходимо.
  • Знакомство с распространенными инструментами разработки и отладки приложений. Это различные фреймворки, модули, платформы интеграции и т. п. Подробнее об этих инструментах рассказывается в главах, посвященных отдельным языкам программирования, к которым мы и переходим.

Популярные языки программирования для DevOps

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

1. Python

Уже который год Python стабильно попадает в тройку самых востребованных языков программирования в мире (небольшое исследование на эту тему тут). Python имеет множество применений, а главные причины, по которым его активно используют в DevOps, следующие:

  • Гибкость и удобный инструментарий. Python предоставляет множество доступных библиотек и модулей, что позволяет писать сценарии для взаимодействия с внутренними компонентами системы, управления сетями, различных действий с файлами и других задач.
  • Хорошая структурируемость кода. Это позволяет существенно ускорить процесс разработки, тестирования и отладки приложений. Код на Python легко писать и читать, поскольку он однозначен.
  • Python совместим с большинством систем и ПО для сетевой инфраструктуры. К тому же ряд популярных решений для управления конфигурацией групп серверов (например, Ansible и SaltStack) написаны именно на Python.
Применение Python в DevOps

Вот несколько полезных возможностей Python для задач DevOps:

  • Модули, написанные на Python, значительно расширяют возможности облачной инфраструктуры, созданной с помощью OpenStack.
  • Инструменты развертывания и отслеживания работы приложений Ansible и SaltStack написаны на чистом Python. Соответственно, модули для них пишутся на том же языке программирования.
  • Фреймворк Selenium можно использовать для автоматизированного тестирования с использованием скриптов Python.
  • На Python пишутся модули почти для всех систем управления базами данных, включая MongoDB, MySQL, PostgreSQL.
  • DevOps используют Python для развертывания таких модулей, как Fabric, fabtools, cuisine.
  • При использовании Bash или PowerShell могут возникать проблемы при изменениях в среде непрерывной интеграции (CI). Эти проблемы решаются при помощи Python.
  • Python используется для SDK-модулей автоматизации boto и google-cloud-storage в AWS и GCP (Google Cloud Platform) соответственно.

Из более общих задач отметим важную роль Python при разработке программного обеспечения — это и тестирование, и программная поддержка на этапе разработки. А еще использование Python снижает потребность в дальнейшем обслуживании приложений благодаря широкому набору инструментов (включая уже упомянутые Salt и Ansible), которые помогают развертывать и отслеживать работу приложений.

Python также можно использовать для разработки систем планирования ресурсов предприятия (ERP), приложений с графическим интерфейсом для рабочего стола (например, с использованием кроссплатформенной библиотеки Tk GUI). Кроме того, с помощью Python довольно удобно обрабатывать широко используемые веб-протоколы и данные в HTML и XML.

2. Golang (Go)

С момента своего создания (а появился Go только в 2009 году) он уже успел стать одним из 10 наиболее распространенных языков программирования. А выучить Go стоит хотя бы потому, что его используют всё больше и больше продуктов, разработанных специально для DevOps.

Применение Go в DevOps
  • Один из самых популярных инструментов для контейнеризации приложений, Docker, написан именно на Golang, на том же Go пишутся и модули для него, позволяющие DevOps-инженерам решать локальные задачи.
  • Система для автоматизации развертывания, масштабирования и управления контейнерными приложениями, Kubernetes, или K8s, также написана на Go. Собственно, Kubernetes был разработан именно для целей DevOps. K8s обеспечивает гибкость в разработке ПО и легко поддается кастомизации благодаря модулям.
  • На Go написана и APM SigNoz, которая помогает инженерам DevOps отслеживать производительность приложений и устранять проблемы, возникающие в их работе.

Что касается преимуществ Go для DevOps, то, в отличие от Python, который часто требует использования сторонних библиотек, Go имеет стандартную библиотеку, которая включает в себя множество встроенных функций. Это, например, обработка файлов, веб-протоколов, JSON, а также встроенные модули тестирования и профилирования, которые можно использовать для всех типов приложений. К другим преимуществам Golang относятся:

  • Простота использования. В Go можно развертывать приложения напрямую, просто копируя их. Кроме того, здесь нет дженериков (как в Java) и неясностей шаблонного программирования.
  • Многопоточность и параллелизм. Go поддерживает как многопоточную среду, так и параллелизм. Это обеспечивает полноценную поддержку многоядерных процессоров, что ставит Golang вне конкуренции по данному показателю.
  • Переносимость. Программный код на Go можно без проблем переносить куда угодно: исполняемые файлы программ Go могут быть созданы для Windows, Linux и macOS и любой другой платформы. Чтобы двоичный файл поддерживался в разных операционных системах, достаточно установить две переменные среды: $GOOS и $GOARCH.
  • Эффективное масштабирование. Красноречивый пример: еще в 2014 году популярный облачный сервис Dropbox перенес свои серверные части с Python на Go, объяснив это решение необходимостью найти способ более эффективного масштабирования. При этом команда Dropbox столкнулась с единственной проблемой — молодостью языка программирования. В Golang на тот момент не было библиотек, необходимых Dropbox для создания более крупных систем. Но «облачная команда» вышла из этой непростой ситуации, создав собственные библиотеки на Go: их исходный код можно посмотреть на GitHub. Подробнее об этом любопытном кейсе читайте здесь.

Golang отлично показывает себя при разработке и серверных, и сетевых приложений. Этот язык оказался настолько мощным, что с самого начала детище программистов Google смогло вызвать интерес у таких организаций, как Uber, Twitter, BBC, IBM, Dropbox. Go был разработан для создания высоконагруженных систем, использующих многопроцессорную архитектуру на все 100%. Вот почему крупные организации переходят на Golang с других языков и разрабатывают более эффективное программное обеспечение именно на нем.

3. Ruby

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

Применение Ruby в DevOps

На Ruby написаны платформы для управления конфигурацией групп серверов Chef и Puppet, поэтому для расширения их возможностей команды DevOps используют именно этот язык программирования. У Ruby немало плюсов:

  • Наличие большого количества модулей, создаваемых сообществом (они называются RubyGems). Эти модули, доступные на отдельном сайте или через GitHub, можно легко включить в свои приложения. Поэтому во многих случаях не придется писать много кода, что довольно удобно.
  • Код Ruby позволяет развертывать серверы буквально за считанные минуты. С помощью Ruby удобно развертывать и приложения, что заметно облегчает работу командам DevOps. Также Ruby легко интегрируется с высокопроизводительными серверами баз данных.
  • Фреймворк Ruby on Rails станет отличным выбором для создания жизнеспособного сетевого продукта, который планируется улучшать и/или развивать в будущем. Поддержка фреймворка со стороны разработчиков радует, к тому же Ruby on Rails может похвастаться довольно активным сообществом, а значит он будет развиваться и в будущем.
  • Общим преимуществом этого языка является то, что Ruby избавляет от необходимости применять шаблонный подход к написанию кода, поскольку каждую задачу чаще всего можно решить несколькими способами. Язык этот довольно свободный, за что его, наряду с Perl, нередко называют одним из самых творческих.

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

4. C/C++

Эти два близкородственных языка программирования остаются актуальными и сегодня. И несмотря на то, что те же «плюсы» были разработаны более трех десятилетий назад, а чистому C уже почти полвека, популярность C/C++ не снижается.

  • C/C++ позволяют адаптировать код практически к любой системе, платформе или приложению: эти языки были разработаны очень давно и потому имеют все необходимые инструменты для этого. Это значительно упрощает такие задачи, как, например, пакетное управление, чем часто приходится заниматься DevOps-инженерам.
  • С помощью C/C++ команда DevOps сможет эффективно использовать такие инструменты, как IDE и платформы непрерывной интеграции.
  • Кроме того, эти языки обеспечивают отличную поддержку параллелизма. Когда проект требует высокой производительности (например, серверы баз данных, приложений, веб-серверы и т. д.), C++ нередко становится основным выбором.
  • Еще один плюс C/C++ в том, что они близки к аппаратному обеспечению и дают возможность контролировать его работу напрямую, на что не способны языки более высокого уровня. А значит, C/C++ дают возможность тесно связывать программное обеспечение с аппаратным там, где это необходимо.

А теперь конкретный пример использования C/C++ в среде DevOps.

Применение C/C++ в DevOps

Главной проблемой C/C++ долгое время являлось отсутствие совместимости двоичных файлов на C, созданных в разных системах. Теперь это решается за счет использования менеджеров пакетов с поддержкой C/C++, в частности, Conan Center. Conan решает проблемы совместимости двоичных файлов, обеспечивая поддержку всех основных операционных систем. Этот децентрализованный менеджер пакетов для C/C++ дает возможность обмениваться пакетами с помощью модели push-pull: Conan обрабатывает двоичные файлы и позволяет легко загружать уже созданные файлы в Artifactory или Bintray, чтобы ими можно было эффективно обмениваться между командами.

5. JavaScript

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

  • все популярные браузеры поддерживают JavaScript, и код на нём можно вставить на любую веб-страницу;
  • этот язык очень быстрый;
  • работает на стороне клиента, что снижает нагрузку на сервер;
  • дает возможность создавать сложные интерфейсы.

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

Применение JavaScript в DevOps

Некоторые наверняка знакомы с Node.js — кроссплатформенной средой выполнения для разработки серверных и сетевых приложений. Node.js является реализацией Javascript на стороне сервера, которая позволяет разработчикам узлов создавать API-интерфейсы для серверных приложений, а также сценарии командной строки.

Приложения Node.js написаны на JavaScript и могут выполняться в среде выполнения Node.js в OS X, Microsoft Windows и Linux. Node.js также предоставляет богатую библиотеку различных модулей JavaScript, что значительно упрощает разработку веб-приложений с использованием Node.js. В Node.js доступно множество модулей для выполнения различных действий DevOps, таких как оптимизация процессов, связанных с развертыванием приложений. Node.js также предоставляет библиотеки для работы с инструментами непрерывной интеграции, такими как Jenkins или Travis CI.

6. Bash

Bash — это язык сценариев, который используется разработчиками программного обеспечения и системными администраторами для автоматизации самых разных задач и процессов в Unix-подобных операционных системах. Его преимущества следующие:

  • Это интерпретируемый язык, поэтому компиляция перед запуском не требуется.
  • Код Bash может быть выполнен в любых Unix-подобных операционных системах без каких-либо модификаций.
  • У Bash мало конкурентов, когда речь идет об автоматизации операций на системном уровне и автоматизации повторяющихся задач.
  • Bash легко освоить, что может быть существенным плюсом в случае, если понадобится писать какие-либо скрипты.

Последнее преимущество делает этот язык весьма популярным. Конечно, есть у Bash и недостатки. К ним отнесем прежде всего довольно низкую скорость исполнения кода в сравнении с любыми другими языками программирования, в том числе Python, Ruby, Perl и PHP. Кроме того, в Bash новый процесс запускается почти для каждой выполняемой команды оболочки.

Применение Bash в DevOps

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

7. Groovy

Groovy обладает возможностями статической и динамической типизации. Этот язык быстрее и проще смогут освоить Java-разработчики, а вот другим программистам придется познакомиться также и с Java. Дело в том, что Groovy использует библиотеки Java и запускается на JVM (Java Virtual Machine, виртуальная машина Java). Более того, в настоящее время существует реализация Groovy исключительно на JVM, поэтому приложения на Groovy Java-зависимы. Кроме того, решения на Groovy могут оказаться весьма ресурсоемкими.

Применение Groovy в DevOps

Ценность Groovy для DevOps заключается в том, что у него есть поддержка модульного тестирования любого проекта на основе Java, а код на Groovy можно легко интегрировать с уже существующим интерфейсом. И конечно, существует немало инфраструктурных решений, которые поддерживают Groovy. Одним из таких решений является платформа для автоматизации и управления системной инфраструктурой Jenkins CI/CD.

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

Также Groovy поддерживается широким спектром фреймворков, в том числе Spring Boot, Ratpack, Micronaut, Griffin и Gradle. Например, фреймворк Spring Boot существенно упрощает создание приложений на основе Spring. Он минимизирует усилия разработчиков по написанию кода и настройке приложений.

8. Perl

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

Применение Perl в DevOps

С развитием DevOps Perl переживает «вторую молодость», поскольку этот язык:

  • Подходит для многих целей: разработки веб-приложений, обеспечения взаимодействия с базами данных, разработки графического интерфейса. Perl может встраиваться в веб-серверы и серверы баз данных.
  • Обеспечивает поддержку кроссплатформенности и совместим с другими языками программирования благодаря модулям, которые позволяют использовать код, написанный на Python, Java, C/C++, PHP, Ruby, ассемблере, Lua и многих других языках. Например, Python непосредственно встраивается в сценарий Perl командой Inline::Python, а затем вызывается сценарий командной строки. Таким образом, DevOps-инженер со знанием Perl сможет писать код на привычном языке.
  • Поддерживает уже более 200 тысяч модулей с открытым исходным кодом на CPAN и имеет множество мощных расширений для стандартной библиотеки. Скачать нужные модули можно здесь.

Таким образом, даже несмотря на свои недостатки (сложность поддержки кода из-за его неоднозначности, невысокая скорость исполнения), Perl является одним из наиболее перспективных языков для DevOps.

9. PowerShell

Windows PowerShell представляет собой платформу для автоматизации с открытым исходным кодом и язык сценариев. PowerShell — это оболочка командной строки и язык сценариев, которые интегрированы с платформой .Net и могут быть встроены в другие приложения. Если у вас есть инфраструктура, работающая под Windows, PowerShell вам понадобится. Этот язык:

  • позволяет автоматизировать повторяющиеся задачи;
  • расширяем с помощью плагинов и командлетов;
  • поддерживает объекты и формы .NET и может вызывать любые библиотеки .NET;
  • может быть использован для создания, тестирования и развертывания решений в средах CI/CD;
  • имеет встроенную поддержку распространенных форматов данных, таких как CSV, JSON и XML.
Применение PowerShell в DevOps

PowerShell — отличный выбор для тех, кто работает в среде Windows. Этот язык останется основным для платформ Microsoft в обозримом будущем, и он помогает автоматизировать многие рутинные задачи и проблемы, с которыми программисты сталкиваются в процессе работы. Наиболее распространенными решениями автоматизации PowerShell, с которыми работают DevOps-инженеры, являются сценарии и модули сценариев. Например, на этом языке создаются собственные наборы инструментов и пишутся модули для Azure, облачной платформы Microsoft. Приведем еще несколько полезных инструментов для PowerShell.

  • Pester — популярный фреймворк для тех, кому нужно имитировать работу приложений на PowerShell и тестировать их. Так, с помощью Pester можно реализовать модульное, интеграционное, инфраструктурное и ряд других видов тестирования. Наряду с тестированием кода PowerShell, Pester также поможет определить, какая часть кода покрыта тестами, то есть выполнить анализ покрытия кода, чтобы можно было увидеть, какие команды не были выполнены во время тестов. Таким образом, появляется возможность внедрить контроль качества в процесс сборки, чтобы сборка автоматически завершалась ошибкой, если общий процент покрытия кода падает ниже определенного, приемлемого для проекта, уровня.
  • Еще один полезный инструмент — PSScriptAnalyzer, который используется для создания и проверки правил написания кода. Помимо встроенного набора правил проверки, он также позволяет создавать и использовать собственные. Интересно, что даже Visual Studio Code с его расширениями PowerShell использует PSScriptAnalyzer в фоновом режиме для анализа сценариев PowerShell.
  • Модуль PlatyPS позволяет автоматизировать процесс создания документации. Этот инструмент создает документацию в формате Markdown, чтобы ее можно было опубликовать в Интернете. Его можно включить в сценарий сборки или конвейер, и документация всегда будет оставаться актуальной. Тот же Microsoft использует PlatyPS для создания справочного содержимого для тысяч своих командлетов.
  • Вместо написания собственных сценариев сборки стоит обратить внимание на такие инструменты, как InvokeBuild или psake, которые могут помочь автоматизировать отдельные этапы процесса сборки, определить зависимости и создать решение с помощью вызова всего лишь одной команды.
  • PowerShell как платформа также имеет широкий набор инструментов для работы с пакетами, но записывать все команды в сценарии сборки может быть утомительно. В таком случае можно использовать модуль PSDepend и определять зависимости проекта в простом файле данных PowerShell. Это сделает управление зависимостями намного яснее и проще в обслуживании.

10. Scala

Scala, как и Groovy, является надстройкой над Java. Большинство недостатков исполняемых приложений Java в Scala были устранены. При этом все преимущества Java, такие как OOD (объектно-ориентированный дизайн) и потоки, сохранились, что и сделало Scala достаточно популярным языком, хотя, по ряду причин, он и не стал полноценной заменой Java. Одна из причин заключалась в том, что далеко не все руководители проектов хотели переводить свои проекты с привычного Java на перспективный Scala из-за более высокой стоимости разработки. Тем не менее сравнительно низкая популярность Scala не отменяет достоинств этого языка для целей DevOps:

  • лаконичность кода, особенно в сравнении с Java;
  • широкая линейка IDE (Scala IDE, Intellij IDEA, Emacs, Atom);
  • отличная масштабируемость с возможностью создания обширных и устойчивых к сбоям систем.
Применение Scala в DevOps

  • Под Scala были разработаны такие популярные фреймворки, как Play, Akka и Apache Spark, которые помогают создавать инструменты для веб-разработки и DevOps, а также внедрять решения для работы с большими массивами данных.
  • Для проектов на Scala довольно просто организовать непрерывную интеграцию, поскольку для этого существует множество инструментов, таких как Travis, CircleCI, GitLabCI и ряд других.
  • Scala поддерживают такие платформы для автоматизации развертывания приложений и контейнеризации, как Docker Swarm, Kubernetes, Apache Mesos, AWS ECS. С их помощью обеспечивается автоматизация процесса доставки программного обеспечения, чтобы команды могли быстрее и проще развертывать код в рабочей среде.

11. Kotlin

И еще один язык, имеющий прямое отношение к Java и являющийся его очередным расширением. Однако включили мы Kotlin в этот список вовсе не потому, что он был создан российскими программистами и назван в честь известного острова в Финском заливе. Хоть это и приятно, главные достоинства Kotlin всё же в другом — этот молодой язык программирования превосходно справляется с задачами разработки мобильных приложений.

«Котлин» идеально подойдет для команд, занятых разработкой мобильных приложений для Android, в том числе и игровых. Впрочем, одним лишь Android дело не ограничивается: его всё активнее начинают использовать и для бэкэнда, так что веб-разработчикам также стоит присмотреться к Kotlin. Весомое преимущество Kotlin заключается в том, что он обладает большинством полезных функций, но без сложности динамического языка сценариев. Из других плюсов отметим:

  • сокращение времени разработки благодаря лаконичности кода и простоте освоения;
  • полная совместимость с Java, но при этом более высокая надежность;
  • функциональное и процедурное программирование идут в Kotlin рука об руку.

Среди минусов Kotlin можно выделить разве что сравнительно низкую скорость компиляции.

Применение Kotlin в DevOps

Вот пара примеров, для чего DevOps-инженеру может пригодиться знание Kotlin:

  • Прежде всего Kotlin отлично подходит для работы с Azure Pipelines, инструмента для непрерывной интеграции и развертывания приложений. При этом настроить Azure Pipeline для любого проекта на Kotlin довольно просто.
  • Кроме того, Kotlin — один из немногих языков, поддерживаемых Gradle, являющейся лучшей системой автоматической сборки приложений на JVM. Таким образом, DevOps-инженеры смогут писать собственные сценарии сборки на Kotlin и пользоваться другими возможностями этой платформы.

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *