Главное Авторские колонки Вакансии Образование
5 019 33 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Гайд: как самостоятельно создать большой и многофункциональный веб-сервис или как это было

Личный опыт написания веб-сервиса, включающего в себя 18 модулей и более 50 000 строк кода за 13 месяцев, совмещая с основной работой.
Мнение автора может не совпадать с мнением редакции

Меня зовут Дмитрий, мне 31 год. В начале своей профессиональной деятельности я работал в IT-сфере на различных должностях, от верстальщика сайтов, до руководителя отдела поисковой оптимизации и продвижения сайтов, позже - владел несколькими интернет-магазинами и студией интернет-маркетинга, управлял небольшой оптовой компанией с производством в Китае. За всю карьеру я официально работал программистом около 6 месяцев. Но при этом программирую я почти всю жизнь: люблю автоматизировать рутинные рабочие процессы. Хочу поделиться своим опытом создания достаточно большого проекта в одиночку с нуля. Сразу отмечу, большой проект реально создать одному и как видно из короткой биографической справки обо мне - для этого не нужно быть гуру программирования!

Немного статистики по платформе Youca.org:

  • 18 модулей
  • 253 файла
  • 52 867 строк кода
  • 13 месяцев разработки, совмещенных с основной деятельностью.

На что стоит обратить внимание

После того, как я придумал идею, нужно было приступать к реализации.

С чего начать?

Попробуйте максимально подробно изложить свою идею на бумаге (не обязательно писать карандашом или ручкой, напечатать на компьютере тоже сойдет :) ). Во-первых, расписывая свой проект, вы более полно сможете оценить картину и скорее всего увидите недоработки, которые сразу сможете улучшить. Во-вторых, все будет задокументировано, и вы ничего не забудете. В-третьих, по описанию попробуйте составить список задач, чтобы были более понятны дальнейшие шаги. Что касается формы описания, то я считаю, что это не имеет никакого значения. Не нужно пытаться использовать какие-то умные теории или методы, если вам не удобно потом будет с этим работать. Для себя я сделал простую таблицу сначала с названием пунктов меню, позже, когда стала понятна общая структура, я уже смог трансформировать таблицу в список модулей, описать примерный функционал каждого и некоторые их взаимосвязи. На данном этапе важно понимать состав частей будущего проекта, но совсем не обязательно детально расписывать функциональность каждого. В моем случае изначальное описание хоть и совпадает по составу с реализованным проектом, оно все же примерно на 30% отличается по функциональности.

Далее. Подводные камни

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

На каком языке разрабатывать сервис?

Сколько я ни старался найти наиболее подходящий язык программирования в статьях и на форумах, результатом стало понимание, что у каждого свой язык для решения конкретной задачи. Используйте тот язык, который вы лучше всего знаете! В моем случае – PHP (планировал использовать PHP-FPM, но позже удачно подоспел PHP7)

Какую базу данных использовать?

Тут ответ аналогичен предыдущему вопросу: ту, которую знаете лучше всего. В моем случае – MySQL.

С какого конца браться за список задач по написанию модулей?

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

Как вы будете проектировать бизнес-логику приложения?

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

Для упрощения работы рекомендую использовать небольшой ORM, чтобы не отвлекаться от бизнес-логики на работу с базой данных. Я использовал модель MVC (model – view - controller), в которой классы и методы, непосредственно выполняющие операции с базой данных, выносятся в отдельный файл (модель) и подключил простой ORM, если в будущем понадобится оптимизировать запросы к БД, то сделать это будет не сложно, они никак не связаны с бизнес-логикой. Достаточно будет просто заменить вызовы ORM на прямые запросы в методах моделей модулей.

Что потом?

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

Публикация приложения.

Для настройки веб-сервера я рекомендую связку nginx+PHP7+MySQL. Причем в качестве веб-сервера выступает только nginx, а не nginx в связке c Apache.

P.S. Не забудьте перед запуском приложения установить счетчик статистики на все страницы.

Еще несколько советов

  • Делайте бэкапы после каждой контрольной точки или по другому четкому правилу. Я делал бэкап в конце каждого рабочего дня, не зависимо от того, был ли он длиной в 14 часов или 30 минут. Бэкапы лучше делать на несколько носителей. Я бэкапил все на внешний жесткий диск и параллельно заливал архив в облако файлового хостинга.
  • Для дополнительной мотивации я рисовал себе график работы над модулями, выделял на каждый определенное количество времени. Даже если не укладываешься в отведенное время (а так чаще всего и бывает), то все равно ты всегда видишь прогресс, так он становится более осязаемый, когда в табличке зачеркивается очередной квадратик.
  • Иногда бывает такое время, что ничего не получается, все валится из рук, мысли разбегаются и никак не можешь сосредоточиться на работе. Мой вам совет: плюйте на работу и идите отдыхать, иначе можно наломать дров.

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

Статья подготовлена командой проекта Youca.org

+5
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Автоматизация бизнеса.
Разработка ПО на платформе 1С:Предприятие
Нагибович Константин
>>После того, как я придумал идею, нужно было приступать к реализации.

После придумывания идеи вы пытались узнать нужно ли это кому-нибудь и будут ли за это платить? В противном случае получается разработка ради разработки.
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Исследования рынка безусловно важны во многих случаях, но в данном я ориентировался на собственный опыт и теорию Генри Форда: «Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь.»
Ответить
ADZY
Ассистент для ведения рекламных компаний
Дмитрий Кубитский
я как программист, тоже больше склонен продуктом заниматься чем "тестированием", но 13 месяцев разработки, без обратной связи, наверно не лучшая идея, пораньше бы обратную связь от рынка получить.
Хотя может обратная связь, в процессе разработки была (просто не упомянули)
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Я старался собирать данные по друзьям/знакомым, но тестировать основную идею не получилось бы. Дело в том, что все инструменты платформы не претендуют на уникальность, они все по отдельности существуют в изобилии. Уникальность платформы в объединении этих инструментов и в доступности (все бесплатно).
Ответить
ADZY
Ассистент для ведения рекламных компаний
Дмитрий Кубитский
если всё бесплатно, как тогда зарабатывать?
реклама?
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Думаю, что на первое время без рекламы не обойтись.
Планируется разработка открытого API для разработчиков и агитация и мотивация сторонних разработчиков адаптировать свои локальные сервисы для расширения функциональности платформы, в том числе и платные. В этом случае будет минимальный процент с подписок пользователей на сторонние приложения.
В идеале хочется найти модель наименьшего зла для пользователей.
Ответить
werqwer qwer
Вот по материалу вы с СЕО знакомы. А вот оптимизировать загрузку главно не удосужились. PageSpeed Insights по 0 что в мобайл, что в десктоп.
Ответить
Показать предыдущие комментарии
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Мной нет, возможно администрацией Спарка, некоторые минимальные правки от них бывают.
Ответить
werqwer qwer
Простите тогда. Ошибся. Но ровно помню что старница на которую в этой статье был линк грузилась около 10 секунд. Моя оплошность.
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Ничего страшного, не помню уже была ли ссылка и где, поставил правильную.
Ответить
werqwer qwer
http://youcat.org/ Вот линк который был в статье. Специально смотрел историю. = )
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Хм, опечатка видимо была, спасибо :)
Ответить
Alex Fill
на главной странице было бы неплохо сделать рубрикатор размещенных компаний. это бы подстегнуло меня зарегистрироваться в проекте, увидев публикации других компаний
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Спасибо за Ваш отзыв, подобные мысли были, планирую реализовать нечто подобное.
Ответить
ADZY
Ассистент для ведения рекламных компаний
Дмитрий Кубитский
А я бы хотел увидеть какую-то презенташку, лучше видос с обзором, о том что это за система такая.
ну покрайней мере пока не понятно для чего там вобще регистрироваться.
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Если Вам не сложно посмотрите, пожалуйста, описание платформы: https://spark.ru/startup/youca-org и первую статью: https://spark.ru/startup/youca-org/blog/18883/kak-besplatno-povisit-reputatsiyu-kompanii-v-glazah-klientov-chast-1
Есть ли какое-то понимание по платформе или я не в том ключе пытаюсь донести функциональность до людей?
Ответить
Автоматизация бизнеса.
Разработка ПО на платформе 1С:Предприятие
Нагибович Константин
Эта статья больше похожа на руководство пользователя/администратора.
Выгоды от использования вашей платформы покажите - это в первую очередь. Процесс регистрации и настройки будет необходим после того, как потенциальный пользователь проявит интерес к вашему продукту.
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Константин, спасибо, Вас понял, учту в будущих публикациях.
Ответить
А Ю
Не в том, увы.
Ответить
Артем К
Это просто праздника какой-то. Ни из описания сервиса, ни после регистрации ни на каплю не стало ясно какую он проблему решает
Ответить
Показать предыдущие комментарии
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
А какая у вас платформа (windows, mac) и какой урл хотите использовать?
Допустимы только латинские буквы, цифры и знак подчеркивания "_", при этом URL должен начинаться с буквы.
Ответить
Alexii Getun
это спарк, а не вопросы для девочек mail.ru , естественно я проверил во всех вариациях с http, www, без всего, разные языки, заполнял поля и нет, и так далее
http://i.imgur.com/Vmr8x5T.gifv
PS. windows x64
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Url страницы по сути это его часть, но для пользователя будет не понятно "uri".
Подразумевается адрес страницы на платформе. Https://youca.org/<;адрес страницы> т.е. он не может содержать точек, слешей и т.п.
Пример: https://youca.org/yandex_ru

Добавим как-то ясности в форме, чтобы урл не воспринимался как внешний адрес сайта.
Ответить
Alexii Getun
было бы здорово, потому что я на автомате мельком увидел url и даже ни разу не удосужился проверить
чтож бывает, мой косяк, но всё равно как-то это очень хардкорно
Ответить
Youca
Бесплатная CRM, система поддержки и еще 14 модулей для вас и вашего бизнеса
Леонов Дмитрий
Да, спасибо за отзыв, Вы второй человек, кто так интерпретировал этот пункт, поправили.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.