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

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

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

кадровый резерв

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

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

Конечно, помещать разработчика .NET в стек на основе Java не имеет смысла. Но если это были какие-то второстепенные коммунальные услуги, в которых он / она не имел опыта, то это не было бы проблемой.

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

Платформа

Как и в пьесе Шекспира, в настоящее время существует два основных конкурирующих дома: веб и мобильный. Эта тема хороша для еще десятка статей и, вероятно, никогда не будет решена; более того, первый вариант не отменяет второй, поскольку они могут сосуществовать в современных гаджетах.

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

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

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

В отличие от соперничества между Android и iOS, Интернет - безопасное место для полнофункциональных приложений любого типа. Когда вы решите пойти по мобильному пути, вам придется выбирать между собственным приложением и его кроссплатформенным вариантом. Хотя многоплатформенные приложения обеспечивают более широкий охват аудитории и могут вызывать соблазн, они почти никогда не достигают того уровня качества, который создают собственные приложения. Как правило, язык Swift (распространенный инструмент iOS) не лучший вариант для разработчиков Java (распространенный инструмент разработки для Android), и наоборот, что делает обратную совместимость серьезной проблемой.

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

Тип проекта

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

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

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

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

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

Фреймворки

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

Выбор обычно зависит от совместимости каждого элемента, такого как AngularJS, когда проект выбрал JavaScript. Кроме того, выбор Zend, Symfony или Laravel будет логическим шагом для улучшения разработки проектов на основе PHP; кроме того, при работе с техническим стеком .NET могут пригодиться asp.net MVC или asp.net web API.

Сервер

Область веб-сервера раньше была полем битвы идей, но в настоящее время это место для двух основных конкурентов: Apache и NGINX.

Apache не только бесплатный, но и простой в использовании благодаря функции APR, которая помогает в создании модулей. Он также обладает замечательной совместимостью и обширным источником данных для поддержки своих продуктов. К вашим услугам также шифрование SSL и TLS для повышения безопасности в Интернете.

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

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

Тенденции

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

  • Языки программирования: PHP, Python, Java, Go, JS.
  • Фреймворки: Node.js, Angular.js, Django.
  • Базы данных: MySQL, PostgreSQL
  • Сервер: NGINX, Apache
  • DevOps: Docker, GitHub.
  • Утилиты: Google Analytics.
  • Бизнес-инструменты: Slack, Trello.

Сделанные выводы

Эти общие замечания касаются лишь части возможных комбинаций программного обеспечения при создании системы, которая будет работать с вашим продуктом. Будь то .NET, RAR, LAMP или MEAN, вы также должны учитывать размер будущего проекта - иногда это даже более важно, чем фактические преимущества каждого из вышеупомянутых стеков.

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

Эта статья создана с помощью X1Group.

Эта история опубликована в The Startup, крупнейшем предпринимательском издании Medium, за которым следят +385 976 человек.

Подпишитесь, чтобы получать наши главные новости здесь.