Планирование масштабируемой разработки веб-приложений - PullRequest
8 голосов
/ 17 мая 2009

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

Ответы [ 5 ]

12 голосов
/ 17 мая 2009

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

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

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

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

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

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

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

3 голосов
/ 17 мая 2009

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

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

2 голосов
/ 17 мая 2009

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

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

Хостинг зависит от того, как низко вы хотите начать, но в основном порядок:

  1. Shared;
  2. Виртуальный частный сервер;
  3. Посвящается.

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

1 голос
/ 17 мая 2009

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

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

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

0 голосов
/ 17 мая 2009

Это зависит.

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

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

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

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

...