Идея, что разработчики используют код для создания сложных приложений, является правильной, но поверхностной. На самом деле каждый специалист по разработке будет использовать очень специфический набор инструментов для выполнения работы. Поскольку всегда есть много доступных инструментов для выполнения определенной задачи, вы хотите быть уверенным, что инструменты, выбранные вашим Команда разработчиков удовлетворить ваши потребности.
Мы в отрасли ссылаемся на эту коллекцию инструментов, которые будут применены в проекте в качестве технического стека.
Что такое технический стек?
Технический стек — это, по сути, множество технологий, с которыми выбирают, чтобы создать свой проект. Он состоит из решений, которые вы предпочитаете создавать такие элементы системы, как приложение и хранение данных, инструменты DevOps и бизнес-ориентированные интеграции.
Давайте посмотрим на пример. Netflix использует комбинацию Python и Java для питания своего бэк-энда. React используется для передней части приложения. Они используют MySQL и PostgreSQL для обработки баз данных. И, наконец, потоковой гигант полагается на Amazon, чтобы позаботиться о инфраструктуре.
Сочетание этих и других технологических решений было целенаправленно выбрано в соответствии с точными потребностями бизнеса, так как каждый элемент предназначен для того, чтобы разрешить безупречно потоковое видео, загружать контент и получать соответствующие предложения.
Очевидно, что каждый проект разработки программного обеспечения уникален, поэтому нет универсальной формулы для выбора идеальных инструментов. Правильный выбор может быть сделан только на основе тщательного анализа в каждом случае.
Как выбрать подходящий технологический стек?
Теперь, когда мы остановились на важности наличия правильного технологического стека с самого начала, давайте погрузимся в процесс определения одного.
Есть эффективный рабочий процесс, который помогает как команде, так и клиенту понять потребности проекта.
- Шаг 1: Соберите требования. Прежде чем придумать решения, хороший технологический лидер и его команда разработчиков сделает все возможное, чтобы понять продукт. На кого он нацелен? Какие функции должны быть включены? Как они должны работать с технической точки зрения?
- Шаг 2: Определите бизнес -цели. Этот этап предназначен для ответа на «Почему. «Зачем нам нужен продукт? Почему аудитория заботится? Почему функции должны работать одним способом, а не другим?
- Шаг 3: Поместите свой палец на технические детали высокого уровня. Вам понадобятся технический директор, технические лидеры и команда DevOps на этом этапе, поскольку они будут определять видение, инфраструктуру и технические потребности и перевести их в технические требования и задачи для команды разработчиков.
- Шаг 4: Вовлекать команду. Это этап, на которой разработчики анализируют предстоящие проблемы и предлагают наиболее эффективные решения для технического директора.
Важные элементы, которые следует учитывать при выборе технического стека
Есть некоторые очевидные факторы, которые вам нужно учитывать при выборе соответствующего технического стека. Например, банковское приложение, которое имеет доступ к персональным записям и учетным записям клиентов, должно быть построено с учетом безопасности. С другой стороны, служба потоковой передачи видео должна сосредоточить свой технический стек вокруг обработки высокой нагрузки.
Начните с выяснения Область вашего проекта:
- Малый масштаб: Это простые веб -сайты, портфели, блоги, журналы и т. Д. Вероятно, вам не понадобится слишком много в стороне от простого выбора интерфейсных инструментов и структур, таких как Webflow или React.
- Средняя масштаба: Это большие веб-сайты, проекты электронной коммерции или корпоративные приложения, которые имеют точную бизнес-логику. Им понадобится комбинация технологий фронтального и движения, а также удобных средств обработки данных и хранения. Эти типы проектов обычно работают в нескольких системах, поэтому кроссплатформенные интеграции имеют больше смысла, чем создание нескольких местных приложений с нуля.
- Большой масштаб: Это целые социальные сети, платформы электронной коммерции, продукты SaaS и т. Д. Как правило, они являются богатыми функциями, ориентированными на пользователя, и требуют безопасности, масштабируемости, скорости и обслуживаемости в качестве четырех основных столбов, на которых можно построить. Лучший подход здесь — проанализировать технические стеки, которые доказали производительность на рынке. Думаете о конкуренции с Netflix или Uber? Посмотрите, что сначала под их капюшоном.
Время на рынок это еще один важный аспект, о котором вы должны подумать, прежде чем остановиться на техническом стеке. Бывают случаи, когда скорость имеет сущность, и, как таковые, интеграции и продукты, как и продукты, являются вашими лучшими друзьями. Имейте в виду, что вам нужно инвестировать в замену их домашними альтернативами, когда ваш проект преуспевает и растет. На данный момент, однако, придерживайтесь основ и запустите продукт.
Наконец, есть вышеупомянутое безопасность . Лучше всего помнить об этом с самого начала, когда будут хотя бы некоторые конфиденциальные пользовательские данные.
- Используйте интеграцию, если это необходимо, но подумайте о создании пользовательского API, чтобы выполнить их
- Анализ потенциальных способов обеспечения доступа, будь то через шифрование или доступ к ограниченному времени на основе токенов.
- Изучите несколько вариантов базы данных, так как вам понадобится надежное решение для непрерывного хранения резервных копий
- Исследуйте любые другие варианты или альтернативы, которые могут либо поставить под угрозу безопасность вашего продукта, либо улучшить его
Риски выбора неправильного технического стека
Приземление на идеальном техническом стеке для проекта довольно полезна. В итоге вы получите масштабируемый цикл разработки, способный приспособиться к потребностям бизнеса, навыки ваших разработчиков и доступность ресурсов.
Неправильный выбор технических стеков, в свою очередь, может привести к этим проблемам:
- Растет со старой технологией, которая будет трудно поддержать в будущем: Мир технологий полон неопределенности, когда появляются новые технологии, в то время как другие забываются. Это не означает, что на рынке не существует стабильных или надежных технологий, но часто новая вещь может быть более безопасной ставкой для крупномасштабных проектов. Новые технологии лучше по двум основным причинам: необоснованный
- Плохое качество интегрированных компонентов: Сторонние интеграции входят в число Наиболее частые причины нарушений безопасности в программном обеспечении. Помимо проблем безопасности, большинство интеграций требуют конкретных наборов навыков от разработчиков. Это повышает риск застрять с конкретной командой, независимо от того, удовлетворены ли вы их результатами, поскольку альтернативой является переделание продукта с нуля.
- Более высокие затраты на техническое обслуживание и больше повторной работы: Говоря о сторонних интеграциях, различные варианты и варианты не различаются только по функциональности. Текущие сборы и затраты на лицензирование также различаются. Выбор решения, которое не очень хорошо масштабируется или слишком сильно растет по мере развития вашего проекта, приведет к большим инвестициям на вашей стороне. Более того, замена одной интеграции с другой на более поздних этапах разработки требует колоссальных объемов повторной работы. Нажмите здесь, чтобы узнать больше, каковы причины высоких затрат на техническое обслуживание программного обеспечения Анкет
Интеграции и продукты в качестве услуг по сравнению с пользовательскими компонентами
Обсуждая сторонние интеграции, мы сосредоточились на их потенциальных негативных аспектах, но на самом деле интеграция сама по себе не является ни хорошей, ни плохой. В некоторых случаях сторонние инструменты абсолютно необходимы.
Давайте представим, что вы только начинаете новый проект. Инвестиции невелики, пока нет никаких доказательств концепции, и ваша аудитория даже не смотрела на продукт. Инвестирование времени, усилий и ресурсов в строительство каждой функции с нуля — это просто пустая трата на данном этапе.
Другой тип проекта-крупномасштабный с длительной историей и впечатляющей пользовательской базой. Это все еще может извлечь выгоду из множества дополнительных инструментов, но, честно говоря, интеграции редко имеют смысл на данном этапе. Сторонние решения-это домкрат всех сделок. Им часто не хватает определенных элементов функциональности, которые вам могут потребоваться, поскольку проект растет в масштабе.
Другими словами, интеграция может стать узким местом на более поздних этапах развития, поскольку она просто не имеет необходимой функциональности, и нет никакого способа добавить его.
Тогда есть SaaS, PaaS, IAAS или другие продукты в качестве услуги. Они могут звучать аналогично интеграции — по крайней мере, на бумаге — но, как следует из названия, они являются услугами. Разница в том, что ваш продукт не интегрирован с ними. Вместо этого вы используете их для выполнения набора конкретных функций, а все управления, разработка новых функций и поддержка лежит на плечах поставщика услуг.
Помимо этого очевидного преимущества использования AAS, существует также тот факт, что большинство услуг, которые могли бы быть сделаны к настоящему времени, уже доступны, поэтому предприятиям нет необходимости изобретать колесо. Для небольших компаний гораздо эффективнее создавать свой продукт, используя доступные ресурсы и запускать вещи оттуда с реальными отзывами под рукой. Крупнейшие компании должны делегировать те элементы, которые также не являются критически важными (всякий раз, когда это имеет финансовый смысл). Dropbox, например, использовал услуги AWS прямо до такой степени, что разработка собственных центров обработки данных была более экономически эффективной, в то время как Netflix по-прежнему полагается на AWS только потому, что для них дешевле. По крайней мере на данный момент.
Тем не менее, продукты AAS попадают в те же недостатки интеграции: им не хватает масштабируемости. Каждый бизнес перерастает их рано или поздно, будь то из -за потенциальных финансовых выгод или ограничений безопасности.
Итак, должны ли вы использовать интеграции в своем техническом стеке?
Плюсы:
- Быстро и просто в реализации
- Доступный и более бюджетный
Минусы:
- Ограниченная функциональность
- Не хватает потенциала для вашей масштабируемости по мере роста расходов вместе с проектом
Как насчет разработки всех систем в доме?
Плюсы:
- Гораздо более гибкий и адаптированный к вашему проекту
- Более безопасно и надежно
Минусы:
- Развитие занимает много времени и ресурсов
Нижняя линия
В разработке программного обеспечения нет серебряных пуль. Каждый проект, даже если он похож на другие решения, уникален по крайней мере в одном направлении. Вот почему поставить пальцем на идеальный технологический стек — одно из самых важных стратегических решений, которые вы будете принимать на протяжении всего жизненного цикла развития и даже далеко за его пределами. Пожалуйста, рассмотрите факторы, которые мы упомянули в статье выше при разработке масштабируемого, будущего технического стека.
Ранее опубликовано в maddevs.io
Оригинал: «https://dev.to/maddevs/tech-stack-101-how-to-choose-a-stack-of-technologies-to-fit-your-project-22e»