Что такое стек технологий. Объясняем простыми словами
Стек технологий (от англ. stack — «стопка») — это набор технологий, на основе которых разрабатывается сайт или приложение.
Стек включает в себя языки программирования, фреймворки (программная среда для разработки), системы управления базами данных, компиляторы (переводят текст, написанный на языке программирования, в набор машинных кодов) и так далее.
Выбор конкретного стека зависит от архитектуры проекта, сложности и функциональности сайта, системных требований — какую выбрать операционную систему и систему управления базами данных, какой использовать веб-сервер и язык программирования.
Например, для веб-разработки стек технологий может выглядеть так:
- операционная система Ubuntu Server;
- веб-сервер Apache;
- система управления базами данных Oracle или MySQL;
- язык программирования PHP;
- фреймворк Yii.
Примеры употребления на «Секрете»
«ИТ-специалисты должны чётко представлять, что ключевое в EdTech — открытость API, возможность интегрироваться с другими платформами, а также использование современного стека технологий».
(Основательница Smart School Pro Елена Игнатьева — о типичных ошибках образовательных стартапов.)
«Если применить подход в лоб и ориентироваться только на цену, то вы рискуете получить команду, которая не даст вам искомых показателей эффективности. К примеру, при выборе рекламного агентства следует обратить внимание на размер и опыт команды, стек используемых технологий, клиентский портфель и отзывы».
(CEO Realweb Partners Эмин Аветисян — об ошибках офлайновых компаний при выходе в онлайн.)
Нюансы
Любое веб-приложение состоит из двух частей — клиентской и серверной. Клиентская сторона охватывает всё, что пользователи могут видеть на экране.
Важнейшие элементы технологического стека в клиентской части:
- язык разметки веб-страниц HTML, который отвечает за отображение содержимого в браузере;
- язык описания внешнего вида документа CSS, который стилизует контент;
- язык для доступа к объектам приложений Javascript — отвечает за интерактивную часть веб-приложения.
Серверная часть приложения готовит данные для клиентской части. Здесь придётся выбрать:
- язык бэкенд-программирования (отвечает за функционирование внутренней части сервиса), такой как PHP, Java или C++;
- фреймворки, например, Spring или .NET;
- система управления базами данных — PostgreSQL или MongoDB;
- веб-сервер, к примеру, Apache или Nginx.
Факт
Выбранные технологии будут определять функционал продукта и то, можно ли будет его масштабировать в будущем. Также от выбранного стека будут зависеть оплата специалистов и время на разработку.
Если клиент планирует продавать одежду через небольшой онлайн-магазин, ему не понадобятся параллельная обработка больших объёмов данных (noSQL) и механизм распределения нагрузки (load balancing), заточенный на одновременную поддержку 1 млн пользователей. В то же время клиенту, который планирует продавать тысячи товаров в день, не подойдёт решение на базе бесплатного движка сайта (CMS) с дешёвым хостингом.
Стек технологий разработки: когда и для чего он требуется
Что такое стек технологий разработки? Для чего его используют в разработке сайтов и приложений? Из чего состоят технологические стеки? – об этом в кратком обзоре ИТ-агентства BGStaff.
время на прочтение: 2 мин.
Стек технологий разработки (technology stack) представляет собой комбинацию программного обеспечения, языков программирования, фреймворков и технологий хранения данных, с помощью которых разработчики могут создавать и запускать мобильное или веб-приложение. Facebook, например, использует комбинацию фреймворков и языков, включая JavaScript, HTML, CSS, PHP, ReactJS — это их «технический стек».
Важно понимать, что выбор стека технологий — это обязательный учет целей, требований и потребностей проекта, позволяющих подобрать наиболее подходящие инструменты для него. Technology stack может много рассказать о том, как функционирует приложение, что требуется для его изменения и поддержки.
Поэтому фактор знания стеков полезен для рекрутинга разработчиков. Претендент на должность программиста должен быть знаком с большинством или всеми языками и инструментами, используемыми в компании.
Для чего используется стек технологий?
Создание technology stack направлено на максимизацию эффективности, производительности и безопасности процесса разработки сайта или приложения. Имея в распоряжении правильные инструменты и технологии, разработчики способны создавать продукт быстрее, с меньшим количеством препятствий. А также иметь возможность прогнозировать, сколько потребуется времени и бюджета.
Технический стек, используемый программистами, влияет на:
- функционирование продукта;
- простоту и масштабируемость;
- соответствие целям бизнеса;
- расположение и способ хранения данных.
Из чего состоят стеки технологий для мобильной и веб-разработки?
Technology stack состоит из front-end (клиентская сторона) и backend (серверная сторона):
- интерфейсные технологии включают JavaScript, CSS, HTML, библиотеки пользовательского интерфейса, фреймворки;
- внутренние технологии включают серверы, операционные системы, языки программирования, веб-фреймворки, базы данных.
Есть несколько известных наборов технологий, которые могут быть адаптированы к потребностям каждой компании:
- LAMP stack: Linux, Apache, MySQL, PHP — широко используемое программное обеспечение;
- MEAN stack: MongoDB, Express.js, AngularJS, Node.js — технологии на базе JavaScript для веб-приложений;
- Ruby on Rails: Ruby, Rails, Rack, Passenger — архитектурный шаблон для веб-приложений;
- .NET: .NET, MS SQL Server;
- Java: Java, MySQL;
- net: ASP.NET MVC, IIS, Microsoft Azure, SQL Server;
- MERN/MEVN stack: Similar to MEAN, Angular.js, с React илиjs
Каждый из этих стеков имеет сильные и слабые стороны, поэтому нужно тщательно взвесить все факторы, чтобы выбрать правильные инструменты для проекта.
Как выбрать стек технологий для приложения или сайта?
Самая большая ошибка, которую можно сделать — это выбрать стек, потому что он хорошо работает для других компаний или потому, что он в настоящее время в тренде. При выборе необходимо учитывать:
- язык программирования;
- операционную систему;
- доступные платформы и библиотеки для используемых языков разработки;
- необходимые базы данных;
- интерфейсные технологии.
Именно из этих компонентов как пирамида состоит практически любой technology stack. Обычно в него включаются:
- Низкоуровневые компоненты системы. Это основополагающие элементы, составляющие операционную систему и среду разработки. Например, в системах Linux они включают ядро, оболочки, утилиты и библиотеки.
- Промежуточное ПО. Этот уровень включает серверы приложений, веб-серверы, системы кэширования, обрабатывающие запросы и передающие данные на более низкие уровни.
- Платформы приложений. Высокоуровневые инструменты, помогающие создавать приложения. Включают различные инструменты управления: от базовых шаблонов до полнофункциональных фреймворков разработки.
- Системы баз данных. Нижняя часть пирамиды представляет технологии хранения данных: реляционные базы данных (SQL Server — система управления реляционными базами информации) или системы NoSQL (MongoDB — документоориентированная система управления данными).
- Наборы инструментов на стороне клиента. Самый верхний слой включает в себя клиентские платформы JavaScript и таблицы стилей, помогающие взаимодействовать с конечным пользователем, получающим доступ к приложению в настольных браузерах (AngularJS — фреймворк с открытым исходным кодом, jQuery — набор функций для взаимодействия JavaScript и HTML, Bootstrap — инструментарий для разработки на HTML).
Если Вам требуются разработчики для разных стеков технологий, рекомендуем обратиться в ИТ-агентство KA BGStaff. Мы занимаемся поиском и отбором кандидатов на подобные вакансии. Гарантируем строгое следование срокам и соблюдение требований клиента к соискателям.
Найдем ИТ-специалистов любого уровня и направлений
- Работаем без предоплаты
- Первый кандидат через 3 дня
- Финансовая гарантия в течение 3 месяцев
Применяемый стек технологий
Стек (англ. stack – стопка) технологий — это набор инструментов, применяющийся при работе в проектах и включающий языки программирования, фрэймворки, системы управления базами данных, компиляторы и т. д.
От выбранного разработчиком стека технологий зависят производительность работы, требования к аппаратным ресурсам, надежность работы программного обеспечения (ПО). В итоге для сложных процессов и высоконагруженных систем им определяется насколько финансово доступно будет развернуть систему и эксплуатировать ее, а также насколько она будет соответствовать требованиям, предъявляемым заказчиком.
При разработке ПО наша компания использует такие языки программирования как Go (Golang), PHP, PowerScript, C/C++, JavaScript, Python. В новых проектах PHP, PowerScript, C/C++ не используются, основным языком программирования является Go. Go — компилируемый многопоточный язык программирования, разработанный компанией Google. Go имеет обширную стандартную библиотеку и большое количество пакетов разработанных golang-сообществом. Он отлично подходит для создания высоконагруженных backend приложений. Мы используем GO с MVC фреймворком revel. На стороне frontend мы используем кроссбраузерный js-фреймворк Webix, который позволяет быстро создавать мобильные и настольные веб-приложения. Также во frontend используется JQuery, нативные html и js. Наши приложения используют такие СУБД как PostgreSQL, Oracle, MySQL и SQLite. Внутренние процессы автоматизируются скриптами на Python и Perl. Для создания инсталляторов под Windows используем InnoSetup. Приложения, разработанные нашей компанией создаются с поддержкой Windows и Linux.
Преимущества выбранного стека технологий заключаются в высокой надежности, в разы, а иногда и на порядки более высокой производительности и меньших требованиях к ресурсам, чем у других популярных представителей, таких как Java, Ruby и т. д. Также важным фактором является открытость исходного кода самих компиляторов языка, что особенно актуально для проектов с госзаказчиками.
Проектные группы работают с системой контроля версий Git в связке с Gerrit. Для учета задач используется система учета задач и проектов RedMine. Разработка ПО ведется в соответствии с методологией SCRUM.
А теперь давайте подробнее рассмотрим что именно, как и почему мы используем.
Эрнесту Резерфорду, «отцу» ядерной физики, приписывается высказывание — «Если учёный не может объяснить уборщице, которая убирается у него в лаборатории, смысл своей работы, то он сам не понимает, что он делает.». Следуя этому утверждению, мы постараемся рассказать, чем занимается отдел разработки в RBS таким образом, чтобы рассказ был достаточно точным технически, но в то же время понятен даже далеким от разработки программного обеспечения людям. Надеемся, что после прочтения статьи ни у кого, а особенно у кандидатов на должность инженера-разработчика, не останется вопросов «чем вы занимаетесь», «какие инструменты применяете» и «почему именно их».
Итак, без лишних слов: отдел разработки ПО трудится пять дней в неделю на пользу общества, в самом широком смысле, работая над улучшением безопасности дорожного движения и развитием системы образования. Для решения этих, безусловно, важных задач, наша компания создает специализированные программы, которые помогают сотрудникам многих коммерческих организаций и государственных учреждений обеспечивать соблюдение жизненно важных правил всеми участниками дорожного движения.
Эти программы представляют собой информационные системы с удобным для пользователя графическим интерфейсом, базами данных для хранения информации, и серверами, которые обрабатывают, вычисляют, сохраняют и анализируют данные. В общем-то, они делают то же самое, что и рядовые сотрудники различных компаний, ГИБДД, МРЭО, Гостехнадзора и Автошкол, только автоматически, быстро и точно.
Каждой задаче требуется свой инструмент, и когда перед нами встала задача автоматизации бизнес-процессов вышеупомянутых организаций, мы выбрали инструментарий, обычно используемый при разработке web-приложений. Это клиент-серверные технологии, когда часть программы выполняется на централизованном сервере, а часть — на компьютере пользователя. Такая архитектура позволяет очень четко отделить пользовательский интерфейс от сложных вычислительных процессов над данными. Обычно данные обрабатываются и хранятся на сервере, это называется «backend», а выводятся у пользователя, на «клиенте», и это называется «frontend». Это очень похоже на работу типичного сайта — пользователь читает новости в своем браузере, не задумываясь, каким образом эти новости были получены, а получены они были от сервера, где хранились в базе данных, и были извлечены из нее серверным приложением («backend’ом»). Как и у сайта из примера, у нас применяются базы данных для хранения огромных массивов информации, и именно им будет посвящен следующий абзац.
Одна из задач, которую мы решаем, это обработка данных о нарушениях правил ПДД, поступающих с огромного количества камер фотовидеофиксации, со всего города. Это очень большой объем данных, и мало эти данные обработать, их необходимо где-то хранить. Для хранения мы применяем системы управления базами данных, такие как PostgreSQL, Oracle. Причем, все новые проекты, как правило, разрабатываются с использованием именно PostgreSQL, так как, во-первых, она достаточно функциональна для работы с большим объемом данных, а, во-вторых, не ограничивается коммерческими лицензиями, и это дает уверенность в свободе этой системы от политических или деловых решений владельцев СУБД. В ранних проектах компании RBS для работы с данными применялась СУБД Oracle, и это означает, что разработчик должен уметь работать с ней, чтобы мы могли поддерживать всех наших клиентов. О необходимости владения языком запросов SQL говорить молодому разработчику нет смысла, это должно быть очевидно.
Для того, чтобы данные, задействованные в некотором бизнес-процессе, сохранить в базу данных после предварительной обработки и некоторых вычислений, необходимо серверное приложение, которое должно отвечать перечисленным далее требованиям. Во-первых, оно должно быть очень быстрым. Во-вторых, оно должно поддерживать параллельную обработку данных, ведь их так много. В-третьих, оно должно быть надежным. И, наконец, оно должно быть достаточно простым, чтобы множество разработчиков разного уровня компетенции и опыта, смогли работать над новым функционалом. В поисках языка программирования, соответствующего этим требованиям, мы нашли Golang. Это многопоточный (параллельность обработки данных), компилируемый (скорость и надежность) язык программирования общего назначения (подходит для разных задач), разработанный в недрах компании Google, и свободно распространяемый среди разработчиков, в том числе для коммерческого использования. У этого языка достаточно низкий порог вхождения, чтобы даже junior-программисты, после краткой практики, смогли полноценно работать над созданием серверных приложений.
Ранее в статье мы рассказали, что наши информационные системы — это клиент-серверные web-приложения, и раз мы уже разобрали базы данных и серверы, значит пришло время клиентской части приложения — frontend. Frontend, он же «клиентское приложение», это та часть программы, которая работает на стороне пользователя, и, как правило, отвечает за отрисовку графического интерфейса, ввод данных в формы, а также за взаимодействие с сервером (по протоколу HTTP, асинхронно, если кому-либо интересно). В этой области де-факто стандартом является связка JavaScript + HTML + CSS. Первый — это язык программирования, выполняемый прямо в браузере — он отвечает за всю логику клиентского приложения и отправку данных на сервер или обработку данных с сервера. Два последних — это типичные для сайтостроения средства верстки графического интерфейса. Стажеру, едва только устроившемуся в наш отдел разработки, следует особое внимание уделить именно этим технологиям — с них начнется его путь к должности старшего разработчика. И пусть он не обманывается низким порогом вхождения в JavaScript – он легок в самом начале, и значительно усложняется пропорционально увеличению опыта, когда стажер переходит от простеньких скриптов, и приступает к разработке клиентского приложения для большой информационной системы.
Каждый программист может подтвердить, что разработчики — «ленивые» люди. Они всеми силами стараются избежать выполнения одной и той же работы, автоматизируя ее и используя уже готовые решения, образно говоря, «не изобретая велосипед». Это в том числе означает, что, начиная разработку новой информационной системы, мы ищем библиотеки и фреймворки, которые решают типовые задачи, возникающие в процессе создания клиент-серверных программ. Например, для создания HTTP-сервера, и в качестве каркаса серверного приложения с RESTful интерфейсом, мы используем MVC фреймворк Revel, написанный на Golang, а для создания графического интерфейса — виджетный фреймворк Webix, написанный на JavaScript. Список можно продолжить библиотеками JQuery, JQueryUI, Angular, Bootstrap, Yii (это для поддержки ранних проектов на PHP), и многими другими.
А еще, отчасти из-за нежелания заниматься рутинными задачами, но главное, для создания надежных программ, мы применяем средства автоматизированного тестирования приложений, то есть юнит-тесты и функциональные тесты. Кроме того, каждая строчка кода, написанная разработчиками, проверяется более опытными товарищами с помощью системы контроля версий Git и системой review Gerrit.
Кстати, раз уж пошла речь о надежности программ и проверке результатов, стоит упомянуть о том, как проектируется и разрабатывается приложение. Обычно некий старший разработчик, тимлид или архитектор, после постановки задачи от системного аналитика, описывает будущую программу на понятном специалистам техническом языке — в виде моделей и диаграмм. Мы применяем реляционные модели баз данных, диаграммы в нотации UML и модели процессов в нотации BPMN. После этого задача разработки программы дробится на небольшие подзадачи, которые назначаются исполнителям. Для каждой функциональной возможности сначала создается автоматизированный тест, а уже после программный код, который должен «пройти» этот тест. Это называется «разработка через тестирование», а в англоязычной литературе «TDD». Такой подход кажется странным, но его легко понять с помощью аналогии: представьте, что вы создаете новый автомобиль. У автомобиля есть определенные требования по безопасности, и зная их, вы с самого начала строите тестовую площадку для краш-тестов в соответствие с этими требованиями, и будете проводить на ней испытания для каждой новой версии автомобиля, пока не убедитесь, что он готов к массовой продаже. Так и мы, зная требования клиентов, строим полигоны для «краш-тестов» функционала, и пишем код до тех пор, пока он не будет соответствовать этим требованиям. И уже убедившись, что программа готова к выпуску «в свет», мы передаем ее в отдел тестирования, который проверяет программу «глазами пользователя».
Рассказав о применяемых в отделе разработки технологиях и подходах, мы надеемся, что ответили на вопросы, поставленные в начале статьи, и в заключение кратко перечислим, что должен уметь разработчик, чтобы работать программистом в нашей компании:
- Работать с базами данных, владея SQL, и имея знания о специфике PostgreSQL и Oracle.
- Создавать высоконагруженные серверные MVC-приложения на языке Golang, используя в качестве каркаса фреймворк Revel.
- Создавать клиентские приложения, с помощью JavaScript. Здесь же верстка графического интерфейса на HTML и CSS, применяя фреймворк Webix и другие необходимые библиотеки.
- Проектировать программное обеспечение, описывая будущее приложение на UML и BPMN, применяя аналитику, системный подход и воображение.
- Создавать автоматические тесты.
- Работать в команде, обмениваясь кодом через систему контроля версий, и применяя коммуникативные навыки.
- Составлять техническую и пользовательскую документацию.
- Трудолюбиво и ответственно работать на благо общества.
Если вы начинающий программист, и хотите устроиться в качестве разработчика в нашу компанию, но не обладаете всеми перечисленными навыками — не беда, мы вас всему научим в процессе. Главное иметь сильное желание научиться и достаточное упорство. Ну, и по-мелочи — базовые навыки программирования и знание по крайней мере одного языка программирования будут не лишними, конечно. Так что можете смело приходить на регулярно проводимые собеседования, но предварительно подготовившись, конечно, чтобы выделяться на фоне других кандидатов.
Удачи вам, и спасибо за внимание.
Соответствует фразе: применяемые технологии разработки
- 31090 просмотров
Какой технологический стек выбрать для проекта
Перед началом разработки любого проекта необходимо выбрать подходящий технологический стек, что зачастую является непростой задачей.
Проекты могут быть разного размера и сложности, могут включать интеграцию со сторонними системами и т. д. Это могут быть веб, мобильные, кроссплатформенные и даже десктоп приложения.Некоторые проекты требуют создания удобного и интерактивного пользовательского интерфейса, в то время как другие нацелены на быструю и безотказную работу, но при этом просты в использовании. Все зависит от целей, которые преследует ваш бизнес. Поэтому, прежде чем приступить непосредственно к написанию кода, необходимо тщательно изучить требования по проекту.
На рынке существует множество языков программирования, технологий, фреймворков и инструментов, и выбор неправильного технологического стека может привести к серьезным последствиям для развития проекта и даже всего бизнеса. Низкая производительность, уязвимость по безопасности, масштабируемость и плохой пользовательский интерфейс — вот лишь некоторые из них.
Что такое технологический стек?
Технологический стек — это набор технологий, используемых для разработки ПО, включающий языки программирования, фреймворки, библиотеки, сторонние программы и другие инструменты.
Как правило, приложение состоят из двух частей: фронт (клиентская) и бэк (серверная) части и каждая из них разрабатывается на разных технологиях.
- Front-end — это та часть, которую видит пользователь и с помощью которой, он взаимодействует с приложением.
- Back-end обеспечивает правильное функционирование приложения, отвечающее на запросы пользователей. Back-end создается с помощью языков программирования, фреймворков и других тулов.
- Связующее программное обеспечение (Middleware) — это не инструмент разработки; оно функционирует как скрытый слой, соединяющий front-end и back-end.
В таблице ниже показан самый распространенный технологический стек.
Популярные технологические стеки для веб приложений
Существует широкий спектр технологий, фреймворков и инструментов, которые разработчики используют для создания приложений разного уровня сложности. Технологический стек также может зависеть от размера проекта, его специфики и других факторов. Какие же факторы учитывать при выборе технологического стека?
Ниже приведены несколько распространенных технологических стеков:
Как правильно выбрать технологический стек?
Существует множество технологий front-end и back-end на выбор. Для разработки фронта часто используют JavaScript, но другие фреймворки, такие как AngularJS, React.JS, Vue.JS, набирают популярность. Для разработки back-end типичны Java и .Net, однако существует множество других языков программирования и фреймворков: Node.js, Python, Laravel, Symfony, C/C++, и т.д.
Для разных типов проектов могут потребоваться разные стеки разработки, ниже приведены самые популярные.
Разработка веб-приложений
Для создания веб-страниц обычно использует JavaScript и его библиотеки такие как Bootstrap, jQuery и Slick, а также фреймворки AngularJS, Vue.js и React.js. Для создания и размещения контента на сайте использует HTML, а чтобы задать размер шрифта, цвет, фон и так далее используют CSS.
Разработка мобильных приложений
Все мобильные приложения можно разделить на нативные, гибридные и кросс-платформенные. Нативные приложения разрабатываются на Java и Kotlin для Android, Objective-C и Swift для iOS.
Гибридные приложения разрабатываются с помощью HTML5, JavaScript, PhoneGap, Ionic, Cordova и Xamarin.
Для разработки кроссплатформенных приложений используют React Native, Flutter и Xamarin.
Ключевые факторы https://scand.com/ru/services/mobile-app-development/cross-platform-app-developпри выборе технологического стека
Чтобы выбрать правильный технический стек для проекта, необходимо учесть следующие факторы:
1. Проектные и бизнес требования
Часто технический стэк зависит от задач, которые определяет бизнес. На некоторых проектах лучше использовать Python, в то время как другим он вовсе не подойдет; например, Java отлично подходит для разработки корпоративных веб решений или ERP систем, но может оказаться тяжеловесным для небольшого веб-сайта, которому лучше подойдет PHP.
2. Масштаб проекта
Если вашей целью является быстрый выход приложения на рынок, вы можете начать с разработки MVP. Нерационально тратить много времени и средств, если вы находитесь на стадии тестирования гипотезы и сбора пользовательского опыта. Но в момент когда вы получите позитивные отзывы о вашем продукте, можете задуматься об увеличении его функционала и дальнейшей разработки.
Для разработки небольших проектов или MVP вы можете использовать open-source фреймворки и платформы.
Для проектов среднего размера необходимо использование сразу нескольких языков программирования и фреймворков, чтобы реализовать весь необходимый функционал.
Крупные корпоративные проекты, например, онлайн-маркетплейсы, социальные сети, ERP и многие другие системы, разрабатываются с использованием сразу нескольких языков программирования, фреймворков и других инструментов для реализации большого количества функций, обеспечения интеграций с другими системами. Выбранный технологический стек должен быть безопасным, надежным и позволять легко дорабатывать систему в любое время.
Не каждый технологический стек обладает таким потенциалом. Масштабирование может происходить либо по вертикали за счет добавления нового функционала в приложение, либо по горизонтали путем добавления дополнительных физических машин или процессоров на ваш сервер.
3. Безопасность
Создавать приложение необходимо с учетом передовых методов обеспечения безопасности для снижения уровня угроз. Для минимизации распространенных угроз безопасности может потребоваться проведение тестирования безопасности. Необходимо учитывать насколько безопасный язык программирования и фреймворк вы выбираете для разработки, чтобы избежать проблем с безопасностью.
Заключение
Для разного типа приложений используются разные технологические стеки. К сожалению, единого решения нет. При выборе технологического стека, прежде всего, необходимо учитывать проектные и бизнес требования. Наша опытная команда разработчиков поможет вам подобрать лучшие фреймворки, языки программирования и инструменты для создания приложения по вашим требованиям. Будем рады помочь.