Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should I run RavenDB as a windows service or through IIS?

I am playing with the idea of using RavenDB as the data store for an application that will most likely have an HTML UI, a WebService UI, and server utilities that will access the data as well. One reason for using RavenDB is the horizontal scaling it offers through replication and sharding. However, it seems like there are several considerations around running Raven as a windows service or running it through IIS.

  • Security - Is the Raven service more secure or will using IIS allow me more flexibility to restrict by IP address, .NET Membership, etc.
  • Caching - It seems like IIS is the better choice for this feature
  • Architecture - Since I would not want any third party to access the data store would it really make sense to expose Raven through IIS. Also, there would be a business layer between Raven and the various UI's and utilities, so involving IIS seems unnecessary and may introduce unneeded complexity.
  • Performance - The IIS pipeline probably has more overhead on each request than a windows service
  • Scaling - Using IIS is probably more complicated to scale out across multiple servers as opposed to just installing the Raven service with a small batch file

EDITED

I can understand using Raven's Embedded configuration if all you have is a single web client but when you have several different clients, Raven's API needs to be exposed independently to prevent a single client from locking the data files.

like image 534
jedatu Avatar asked Dec 29 '11 21:12

jedatu


1 Answers

Jedatu, We generally host RavenDB inside IIS, it makes some things easier, in particular, management of the server is easier when IIS is taking care of all the activation, etc. We haven't seen any meaningful perf difference, and IIS has nicer options for fine grained management.

like image 58
Ayende Rahien Avatar answered Sep 23 '22 16:09

Ayende Rahien