На чем писать проект под большую нагрузку?

Посоветуйте на чем писать проект по большую нагрузку?



50-100к в день.



Если можно с объяснением почему выбор в пользу того или иного решения?



В данный момент склоняюсь к Yii если php, друзья советуют Django. На сколько он подходит к проектам с нагрузкой? что скажете о ruby on rails?
  • Вопрос задан
  • 13712 просмотров
Пригласить эксперта
Ответы на вопрос 24
holyorb2
@holyorb2
Писать нужно на том чем умеешь!
Ответ написан
@bondbig
50-100к в день.
Это что за метрика? Уники? Реквесты? Максимум онлайн?
Ответ написан
@ChemAli
Без разницы. Узкие места все равно будут не в языке и фреймворке, а в архитектурных блоках и каналах обмена данными между ними. Вводных данных недостаточно чтобы дать вам ответ.
Ответ написан
@VlK
Вопрос в корне неправильный и несколько дилетантский: «Хочу сайт, чтоб много народу лазало».

Какой сайт? Сервис а ля Твиттер? Новостной, где можно статику нагенерить? Интерактивный а ля соцсетки? Бэкэнд для игрушки на флеше? Раздавать файлы/видео в больших объемах?

Это может выглядеть настолько по-разному, что даже примерно рассуждать не приходится.
Ответ написан
greyhard
@greyhard
Программист, автолюбитель
iSlava
@iSlava
могу предложить python (django) + wsgi gevent server + memcached + haproxy(можно nginx). всё это отлично выдержит такую нагрузку. на питоне приятно писать, а у Джанги прекрасная документация. дальнейшая поддержка будет лёгкой
Ответ написан
Комментировать
calg0n
@calg0n
Имхо, язык абсолютно не важен. У каждого есть свои минусы и плюсы. Вон Stackoverflow на asp.net, ВКонтакте на пхп + xcache, LJ на перле.
Ответ написан
Begetan
@Begetan
1. Сразу делать nginx

2. Не страдать преждевременной оптимизацией. На мой дилетантский взгляд High Load требует принципиально другого подхода к разработке. У вас, как минимум, должен быть работающий прототип чтобы на нем увидеть узкие места архитектуры и переписать уже все по-правильному. Обычно узкое место это SQL. Поэтому смотрите Memcahed, Redis.

Среда разработки и фрейморк тут вторичен, потому что, как уже сказали, к высокой нагрузке они все из коробки не готовы. Выбирайте то что проще потом допилить.
Ответ написан
rinat_crone
@rinat_crone
Chef Technical Officer
Я бы посоветовал Ruby On Rails. Используется на многих крупных проектах, в частности — в Twitter. Плюс, фреймворк очень богат функционалом, поэтому разработать прототип будет проще простого.
Ответ написан
opium
@opium
Просто люблю качественно работать
Если у вас 100 тысяч уников в день то на чем угодно можно писать, все равно работать будет, хоть то пхп + мускул, хоть то скала + монго, хоть асп + мсскл.
В целом любая платформа дает возможность предусмотреть масштабирование, и говорить что лучше тут не уместно, лучше писать на том что знаешь и сможешь оптимизировать.
Ответ написан
ajaxtelamonid
@ajaxtelamonid
Laravel
Вы не разработчик, а заказчик? Вы не оттуда начали поиск. Написать можно на чем угодно, язык не важен ВООБЩЕ. Скорость одинаковая, все равно все упрется в продуманность кэширования и базу данных (возможно, вам подойдет mysql, а возможно, лучше обратить внимание на postgre).

Ищите профессионала, он сам вам расскажет, на чем лучше делать.
И тут есть ньюансы — на php очень много низкоквалифицированных кадров, как правило умные люди подвязываются на ниве джанги или рельсов. Так что профессионалов там найти легче. Но и стоить это будет дороже.
Ответ написан
@diostm
Пишите на том, на чем знаете лучше всего. Вон твиттер на ruby on rails написан был целиком. Появилась надобность — переписали часть фукнционала толи на Scala, толи на Java.
Ответ написан
Комментировать
AlexeyK
@AlexeyK
А что за проект? С какого рода данными вы будете работать и какова частота запросов/средний размер ответа?
Ответ написан
Комментировать
Fafnir
@Fafnir
Понимаете, масштабирование приложения — это не функция по умолчанию определенного фреймворка или языка. ) Более того, premature оптимизация — это зло. Лучше сначала сделайте хоть что-то, а то конкуренты догонят.
Ответ написан
Комментировать
Gibbzy
@Gibbzy
Тут по мимо реализации еще так же важна работа комманды сис админов, которые должны уметь настраивать веб сервера правильно.
Последний раз писал на Yii проект 50к заходов в сутки, с кэшированием в yii работать приятно и не сложно, фреймворк шустрый, все работало отлично, конечно нужны прямые руки отсутвие всяких неправильных sql запросов итп.

За остальные фреймворки говорить не возьмусь ибо не компитентен.
Ответ написан
Комментировать
@odmin4eg
Совершенно верно сказано, написать можно на чём угодно, выбор новых фреймворков — для само развития, так я начал изучать Джанго, попутно пишу один проектик.

по поводу высоконагруженности, есть у меня сайт, который при 1 тысячи в сутки начал уводить в 100% 2х процессорный зеон, с 4мя гигами памяти… дальше были 2 года оптимизаций и различных слоёв кеширвоания.

если совета хочешь, то пожалуй
1 схема БД с «лёгкими запросами» (а ну и с выбором БД тоже надо верно подойти, чтоб не было с пушки по воробьям)
2 возможность кэширования результатов выборок с БД например в мемкешеде (тут джанго приветом машет, одна строчка в конфиге, хотя уверен и в рельсах оно есть).
— вот этого хватит чтоб понять, а надо ли дальше вкуриваться в оптимизации и «стартанёт ли оно»
если идти дальше
3 если вот прямо стотыщь в сутки, то пожалуй блоки контента сгенерированные тоже ложаться в мемкешед. (ээм может даже noSQL в первый пункт?), а ну и без CDN я думаю не обойтись

а вообще всё чепуха, сколько раз наступал на эти грабли, ВСЕГДА наступал момент «блин проще переписать с нуля»
Ответ написан
Комментировать
@phasma
50-100 тыщ человек в сутки выдержит обычный php + mysql + какой-нибудь memcached или вообще обычный файловый кэш :)
Ответ написан
Комментировать
@kutanov
Писать мозгом надо. Если в достаточной мере знать архитектуру современных компьютеров, особенности самого языка и работу его интерпретатора — построить можно на чем угодно. Тут вопрос в скорости, сложности, простоте реализации каких-то отдельных механизмов.
Ответ написан
Комментировать
Co0l3r
@Co0l3r
В яндексе django используют, в твиттере руби использовали, с php тоже есть примеры. Все эти технологии так или иначе проверены, но и свои слабые места у них есть. Ищите конкретные проблемы, которые могут проявиться в ваших условиях и отталкивайтесь от них.
Ответ написан
Комментировать
Iliapan
@Iliapan
Мне кажется, лучше начать с поиска конкретного человека — специалиста по разработке высоконагруженных систем. А он уже пусть пишет, на чем привык.
Ответ написан
Комментировать
easyman
@easyman
Если стоит вопрос работаюшего прототипа: берите что-нибудь с кучей уже реализованных социальных функций и натягивайте свой шаблон. Например: Community server, Sharepoint 2010.

Что касается реального приложения: надо будет оценить что и насколько необходимо улучшить.
Ответ написан
andoriyu
@andoriyu
Плевать на чем писать начальную версию. Главное сразу продумать хорошую архитектуру приложения. Разнесите приложение на отдельные части (как в твитере например, их вэб-интерфейс сам работает на том же уровне, что и другие клиенты — через API). Опять же все зависит от задачи. Я решил сначала все на ruby сделать, если упрусь в потолок производительности, то перепишу на jruby, если и там упрусь — erlang.

Опять же, все зависит от задачи.
Ответ написан
Комментировать
Язык не важен, так как реализация логики — это второе дело для HiLoad.
Основа всего будет система хранения/выборки/записи данных.
Если запрос на данные пользователя будут уходит в sql и приходить через 0,2 секунды, то 5 пользователей в секунду начнут валить базу.
И еще совет, распишите все до отдельных действий:
запись информации о пользователе
показ формы редактирования личного профиля
и т.д.
и примите за постулат, что каждое действие будет выполнятся на отдельном сервере, тогда мозг немного переключается в режим «как так», а через небольшой срок проектирования системы приходит понимание как оно должно работать, как можно в разных БД хранить разные типы данных и т.п.
Ответ написан
Комментировать
golotyuk
@golotyuk
Много полезной информации о разработке под нагрузки и оптимизации Web приложений:
ruhighload.com/sitemap
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы