Стратегия и выбор инструментария разработки в стартапе

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 19.12.2016
Размер файла 87,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://allbest.ru

Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики

Стратегия и выбор инструментария разработки в стартапе

Захаров Руслан Николаевич,

аспирант

Введение

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

Выбор правильных инструментов разработки - одна из ключевых частей продукта, так как в действительности в стартапах главный акцент уделяется поиску рынка, захват его доли или создание спроса, привлечение пользователей, поиск рабочей бизнес-модели, а не программирование/создание прототипа[7].

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

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

1. Начальная разработка

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

1. Сократить время разработки до минимально возможного, чтоб доставить продукт на рынок как можно быстрее. Для этого необходимо предотвратить избыточное проектирование[1];

2. Спроектированная система должна быть максимальной простой, при этом достаточно гибкой, т.к. следующий этап с очень большой долей вероятности[2] продукт будет изменён для соответствия запросам рынка;

3. Минимизация издержки на ПО и инфраструктуру;

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

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

IaaS(Infrastructure as a Service, инфраструктура как cервис) предоставляет собой набор обслуживаемых виртуальных(реже - физических) машин, с высокой скоростью подключения к интернету, системами раннего предупреждения отказов аппаратного обеспечения, резервным копированием(за дополнительную плату), возможностью подключения различных типов постоянных хранилищ данных(SSD, HDD, и тд), выбором необходимого количества ядер процессора и выделяемой памяти. Наиболее крупными представителями таких сервисов являются: AWS EC2, Digital Ocean, Microsoft Azure.

Также в аренду предоставляются виртуальные машины, с предустановленным программным обеспечением, которые поддерживаются системными администраторами облака. Они занимаются обеспечением непрерывной работы, установкой обновлений безопасности, поддержкой сетевой связанности. Разработчики могут обращаться к этим серверам посредством публичного API. Наиболее популярные представители: AWS ElastiCache, AWS DynamoDB, AWS RDS, MongoLab, Microsoft Azure CDN, Microsoft Azure Redis Cache, SendGrid;

PaaS(Platform as a Service, платформа как сервис) - это виртуальные машины, которые выполняют пользовательские приложения в изолированной среде в контейнерах, предаствляющих API. Администраторы занимаются вопросами безопасности, своевременного обновления ПО, а так же горизонтальным масштабированием в зависимости от нагрузки. Представителями являются: Google App Engine, Microsoft Azure Cloud services, Heroku, nodejitsu, AWS Elastic Beanstalk;

SaaS(Software as a service, ПО как сервис) - готовые продукты, работающие на ресурсах в облаке, абсолютное большинство которых доступно через веб-браузер. В настоящее время практически все популярные приложения представляют собой SaaS cервисы. Например: Gmail, Yandex Mail, Google Docs, Asana, BitBucket.

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

Таким образом, для увеличения скорости разработки и уменьшения издержек следует воспользоваться облачной инфраструктурой, однако стоит помнить, что по мере увеличения нагрузки стоимость будет возрастать и со временем на этапе масштабирования станет во много раз больше содержания собственной инфраструктуры. Во избежания таких проблем в будущем стоит избегать vendor lock-in[4] - проблемы, возникающей из-за сильной привязки к закрытым API поставщика услуг, например AWS DynamoDB.

Большинство серверных приложений можно запустить на ОС Linux, поддержка которой есть даже в облаке Microsoft Azure. Эта ОС является относительно безопасной и стабильной[6], благодаря большому вниманию со стороны сторонних разработчиков открытого программного обеспечения, поддержки многих крупных игроков рынка, таких как Google, Amazon, Twitter, Facebook, Oracle, IBM и многих других.

В общем случае большинство задач можно решить открытыми технологиями, в зависимости от задачи: PHP, java, python, scala, nodejs, groovy. Последние, в свою очередь имеют большое количество сторонних библиотек, позволяющие быстро делать прототип минимальными усилиями, по сравнению, например, с java2ee, благодаря простому синтаксису и динамической типизации, что в прочем, может быть источником проблем в будущем.

Автоматическое тестирование продукта - важный этап разработки, который молодые программисты предпочитают игнорировать с одной стороны, а профессионалы, проработавшие в крупных корпорациях, напротив делают слишком большой, непозволительный для стартапов акцент. По мнению автора стоит придерживаться принципа тестировать только те части, которые а) являются критическими для продукта, без которых он не состоится как продукт; б) сложно воспроизвести в вручную. Такими частями могут быть: регистрация пользователя, получение оплаты, работа с API, математические вычисления. При использовании языков с динамической типизацией стоит уделить дополнительное внимание тестированию.

Деление задач, их постановку, проверку необходимо вести в системах управления проектами, такие как Asana, GitHub issues, YouTrack, Jira, и другие. Это поможет всегда правильно понимать объем работы команды, прогресс и производительность членов команды. Также это служит хорошей базой знаний.

Для версионирования и синхронизации кода используют системы контроля ревизий. Так, например, git, распределённая система контроля версий прочно завоевавшая популярность[5] среди программистов всего мира на различных языках. В качестве альтернативных можно назвать hg, svn. BitBucket и GitHub являются git-хостингам и позволяют командам хранить код, вести базовый учёт ошибок и постановку задач, накапливать wiki-базу знаний.

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

2. Этап поиска устойчивой бизнес модели

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

Поскольку критическим ресурсом является время итерации(время между релизами) необходимо упростить процесс тестирования и разворачивания новых версий ПО на рабочих серверах с предварительным тестированием на тестовом. Таким образом реализуется схема непрерывной доставки(Continuous Integration, CI). Как и в случае с постановкой задач стоит избегать излишней бюрократизации процесса. Автор предлагает следующую схему

Стадия бета тестирования позволяет на ранних этапах отловить ошибки, чтоб предотвратить их попадание в релиз в рабочее окружение. Бета-тестировщиками могут быть как сама команда так и пользователи сервиса. При достаточной квалификации команды следует воспользоваться подходом staged rollout[7], который заключается в последовательной раскатке новой версии продукта на не большую часть пользователей. Этот подход позволяет уменьшить количество ошибок, если таковые имеются, которые могут затронуть всю пользовательскую базу.

В качестве систем непрерывной доставки можно воспользоваться свободным ПО jenkins CI или коммерческими продуктами, такими как JetBrains TeamCity или Atlassian Bamboo. Эти системы позволяют автоматизировать весь процесс, который, как правило инициируется отправкой изменений в систему контроля ревизий.

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

Так как сбор статистики это отдельная, достаточно большая задача разумно воспользоваться различными сторонними облачными системами, в зависимости от типа продукта можно выделить основные популярные инструменты:

· для веб приложений: Google Analytics, Yandex Metrika, Spring Metrics, KISSmetrics, Piwik и многие другие. Последний является так же свободным ПО и может быть установлен на собственный сервер компании. Это может быть актуально если собираемая статистика имеет чувствительные пользовательские данные, такие как информация о финансовых транзакциях;

· для мобильных приложений: Flurry, Google Analytics, MixPanel и другие. Эти системы позволяют отслеживать пользовательские события, генерируемые программным кодом для отслеживания последовательности действия пользователя.

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

3. Этап масштабирования

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

На данном этапе проявляются технические долги[8] - следствие частых изменений в програмном продукте во время продуктовых экспериментов. Подготовить продукт к массовой аудитории можно:

· переработав всю существующую кодовую базу с расчётом на большую нагрузку и стабильность;

· реализовать все с нуля, т.к на этом этапе есть относительно чёткое представление о требованиях к системе, сценариях использования пользователям, что позволяет спроектировать правильную архитектуру.

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

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

Заключение

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

Библиографический список

1. Overengineering [Электронный ресурс]. Режим доступа: http://en.wikipedia.org/wiki/Overengineering

2. Rip Empson, What Makes A Startup Successful? Blackbox Report Aims To Map The Startup Genome Posted, [Электронный ресурс]. URL: http://techcrunch.com/2011/05/28/what-makes-a-startup-successful-blackbox-report-aims-to-map-the-startup-genome/

3. Luis M. Vaquero, A break in the clouds: towards a cloud definition, ACM SIGCOMM Computer Communication Review archive Volume 39 Issue 1, 2009. 50-55

4. Satzger, B. “Winds of Change: From Vendor Lock-In to the Meta Cloud”, Vienna Univ. of Technol., Vienna, Austria, 69-73

5. James Mckay, “Are there any statistics that show the popularity of Git versus SVN?”, Programmers Stack Exchange [Электронный ресурс]. Режим доступа http://programmers.stackexchange.com/a/150791/153661

6. Pam Baker, Is Linux Really More Secure than Windows? [Эл. ресурс]. Режим доступаhttp://www.esecurityplanet.com/trends/article.php/3933491/Is-Linux-Really-More-Secure-than-Windows.htm

7. Max Marmer, Ertan Dogrultan, Startup Genome Report, [Электронный ресурс]. Режим доступаhttps://s3.amazonaws.com/startupcompass-public/StartupGenomeReport1_Why_Startups_Succeed_v2.pdf

8. Linus Petersson, Hampus Nilsson, “How to Manage Technical Debt in a Lean Startup”, Chalmers University of Technology, University of Gothenburg, 37-38, [Электронный ресурс]. Режим доступа http://publications.lib.chalmers.se/records/fulltext/216789/216789.pdf

Аннотация

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

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

Ключевые слова: инструменты разработки, стартап

Размещено на Allbest.ru

...

Подобные документы

  • Уровень использования вычислительной техники на предприятии ОАО "Тяжмаш" и разработки программистов. Структура подсистем и их характеристики. Выбор модели и метода решения задачи автоматической системы управления. Тестирование программного обеспечения.

    курсовая работа [2,5 M], добавлен 30.06.2014

  • Разработка системы управления проектами для компании ЗАО "Диакон". Экономические параметры разработки и внедрения электронной информационной системы. Технология разработки программного обеспечения. Выбор типа графического интерфейса, его составляющие.

    дипломная работа [1,4 M], добавлен 10.06.2014

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

    дипломная работа [6,5 M], добавлен 08.07.2012

  • Классификация информационных систем, назначение ИС с Web-доступом. Анализ узких мест работы учреждения, нуждающихся в автоматизации. Выбор платформы разработки, физической и логической модели данных, настройка и тестирование информационной системы.

    дипломная работа [5,2 M], добавлен 10.09.2013

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

    курсовая работа [3,6 M], добавлен 16.07.2016

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

    курсовая работа [2,5 M], добавлен 22.03.2017

  • Методы диагностики производительности запросов. Выбор инструментов для front-end разработки. Проектирование архитектур программной системы. Реализация системы регистрации и авторизации пользователей на сайте. Причины неэффективности SQL-запросов в Oracle.

    дипломная работа [1,0 M], добавлен 09.11.2016

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

    презентация [49,0 K], добавлен 07.12.2013

  • Анализ облачных сервисов для автоматизации бизнеса и обоснование преимуществ перехода на облачную обработку данных. Виды и модели облачных сервисов для бизнеса, принципы их работы и характеристики. Задачи автоматизации бизнеса на примере облачных решений.

    дипломная работа [2,3 M], добавлен 06.09.2017

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

    курсовая работа [107,5 K], добавлен 07.09.2015

  • Понятие сетей и связи их компонентов. Характеристики и структура сетей. Основные модели, описывающие поведение сетей. Проектирование и реализация взвешенных сетей: требования к интерфейсу, выбор среды разработки, структура приложения. Анализ результатов.

    курсовая работа [1,1 M], добавлен 29.06.2012

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

    дипломная работа [2,8 M], добавлен 24.03.2014

  • Определение комплекса задач для автоматизации бизнес-процессов отдела по работе с клиентами и склада ООО "ЖилРемСтрой". Выбор стратегии автоматизации и формализация программной задачи. Разработка программного модуля в среде 1C, его тестирование, отладка.

    дипломная работа [3,2 M], добавлен 28.01.2013

  • Анализ предметной области. Основание, назначение для разработки, требования к программному средству. Выбор подхода и модели разработки ПС. Анализ требований, разработка и определение вариантов спецификаций. Описание объектов, свойств и методов.

    курсовая работа [510,3 K], добавлен 23.02.2011

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

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

    презентация [510,7 K], добавлен 21.02.2012

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

    реферат [56,6 K], добавлен 18.03.2015

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

    дипломная работа [2,3 M], добавлен 10.12.2016

  • Постановка задачи разработки сайта компании "ОргТехСервис". Выбор методики проектирование сайта, разработка проекта, тестирование и отладка. Расчет показателей надежности Интернет-услуг. Порядок разработки интерфейсов взаимодействия с пользователем.

    контрольная работа [1,5 M], добавлен 22.10.2014

  • Классификация пользователей проекта Web-приложения "Такси "Люкс". Выбор основных методов и средств разработки. Описание дизайна сайта. Исходный код обработчиков основных событий на страницах. Расчет себестоимости разработки программного продукта.

    дипломная работа [2,5 M], добавлен 26.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.