lighttpd + Thin + Ruby + Sinatra + SQLite или легковесные приложения на ruby

25 июня 2010

Практически все начинающие Ruby разработчики. сталкиваются с проблемой потребления больших ресурсов сервера, на котором они запускают свои приложения.

Связка Apache + Ruby on Rails + MySQL является наиболее мощной, но и самой требовательной к ресурсам. Это делает Ruby программиста уязвимым перед коллегами использующими менее требовательные инструменты для разработки приложений. Но время идет и Ruby программистов становится все больше, появляется больше качественных и легких продуктов.

Теперь начнем изучать то что я предлагаю вам взамен ARM связки.

lighttpd — легковесный веб-сервер, разрабатываемый с расчётом на быстроту и защищённость, а также соответствие стандартам. Lighttpd очень похож на nginx, в интернете можно найти довольно много споров на тему что же лучше, что быстрее. Думаю большой разницы не будет заменив lighttpd на nginx.

Thin — быстрый и легкий Ruby сервер. По рисунку с офф сайта можно видеть как Thin обгоняет все остальные Ruby сервера:

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

Sinatra — это фреймворк для разработки веб приложений на Ruby. Является довольно хорошей альтернативой таким популярным фреймворкам как Ruby on Rails и Merb. Вместо шаблона Model-View-Controller в Sinatra используется принцип DSL, т.е. маршруты задаются в основном коде примерно вот так:

get '/' do
      'Hello world!'
end
get '/test' do
      'Test'
end

SQLite — лёгкая встраиваемая реляционная база данных. В отличие от MySQL база данных хранится в файле рядом с приложением и доступ к ней происходит через API. В этом имеются свои плюсы и минусы.

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

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

Комментариев нет

Написать комментарий:

Вы должны войти, чтобы написать комментарий.