Планирование разработки масштабируемого веб-приложения

StackOverflow https://stackoverflow.com/questions/873329

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Поделитесь, что вы в конечном итоге выбираете и почему для вашей ситуации - это тоже поможет нам учиться у вас!

Другие советы

Не обязательно привязывать себя к одному языку или фреймворку.Возможно, некоторые части вашего сайта лучше работают с разными языками и фреймворками, чем другие.Например, все сайты 37signals основаны на Ruby on Rails, но недавно они написали сообщение в блоге о том, что базовая технология one на самом деле теперь написана на Erlang, потому что таким образом намного проще реализовать параллелизм.

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

Во-первых, что касается языка, то это в значительной степени не имеет значения.PHP, Java и .Net, вероятно, являются тремя крупнейшими, и все они зарекомендовали себя в том смысле, что на них работают одни из крупнейших сайтов в Сети, поэтому не слушайте никого, кто говорит вам, что один из них подходит больше, чем любой другой.

Некоторые могут также включить Ruby и Django / Python в этот список.Я ничего не имею против них, но я не знаю ни о каких крупных (скажем, топ-50) сайтах, использующих либо то, либо другое.

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

  1. Общий доступ;
  2. Виртуальный Частный сервер;
  3. Преданный.

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

Язык - я бы порекомендовал что-нибудь с хорошими фреймворками и хорошими библиотеками тестирования, такими как Perl или Java.

Фреймворк - это зависит от того, что вы планируете делать.Если вы начинаете с хостинга, который не поддерживает FastCGI, лучше избегать таких фреймворков, как Catalyst или Rails.Вот почему я люблю CGI::Application (в первую очередь Perl, но портированный и на другие языки) - он может работать как CGI, FastCGI или mod_perl.Для разработки он может быть запущен с собственного веб-сервера.

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

Это зависит от обстоятельств.

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

Далее я хотел бы пояснить, что значит иметь масштабируемое веб-приложение.Определите это как тестовые примеры, которые могут быть четко протестированы (должны поддерживать X просмотров страниц в секунду со временем отклика < Y секунд).

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top