On 16 May 2008, at 21:34, [EMAIL PROTECTED] wrote:

Hey,

I'm working on a project, and mongrel may be part of the stack, but I've got some more general questions and ideas I'm hoping to run by this list. The people on this list have a broader knowledgebase and more experience than any place else I know - plus a general friendliness and willingness to help!

I'm working with a company who has a really antique application stack. Literally from 1998. IIS + ASP + MS SQL server. They want me to help "modernize" things. In the abstract I'd say, "get a really good .NET team and go that route." But they want me to help. All I work in these days is Ruby. And that's all I want to work in. :)

So my questions are like this:

1) Can I in good conscience start migrating this company from IIS/ ASP to Mongrel/Ruby/Merb/ORM (or something like that)? They have roughly 2-3M page views per month.

It can be done. Others can better tell you on the hosting costs, but there are sites doing this and apparently making money still :)

1.a) No matter how good they think I am, wouldn't it be smarter to move forward with M$ since that's what they've got already? I don't want to be the guy who screws them deeper into the hole by really confusing their stack.

The biggest problems you'll hit with packing Ruby into a production windows stack are:
 * No decent web proxy, at least, not like nginx and friends.
* Apache I've benched up to 8000/s on a quad core on Windows with a hello world app and the one click installer. If I remember correctly the app was a camping one, so not too bad.
 * The mingw builds of ruby are about 30% faster than the OCI build.
* You'll have to wait for the release of a decent service manager for windows, or roll your own monitor for your services. * Logging integration is faster to do unintegrated - analogger has been working great for us, but you'll need the trunk build from the mercurial repo that has my patches. * Windows ruby socket implementations (and ruby herself) have low limits for the number of file descriptors. JRuby can help I think, we proxy out our services where appropriate.

I hate it when new dudes come in with their "stack" and bias development based on their preferences withou considering what's already there. I'd rather walk away from this if Microsoft is really their odds-on smart choice (i.e. I don't need the money - I have some personal relations that led me here). All I want is the company to be successful.

JRuby could be a good option for you due to the double-stack style of it. You could switch to a Java stack underneath if you need speed / less magic / java programmers / whatever.

2) Their MS SQL setup is relatively fine. Lots of wacky stored procs which bug me but mostly it's fine. Am I crazy to try to run MS SQL against Ruby/ORM? Seems like there are some people doing it?

Personally I'd go PostgreSQL, if they really like their stored procedures, that's not going to play nice with most ruby ORMs. We have a product that seals the entire DB behind stored procedures for security reasons (extreme case). The front end for that app is rails, and we have a single point of control that basically replaces activerecord (acts as our virtual-ORM) with about 200 lines of ruby, and circa 10k lines of (largely generated) plpgsql.

3) If I do this, I'd plan to segment this site into two separate boxes and run the Ruby on a Linux box (and maybe outsource that management to a group like EngineYard). Then have the LB's split traffic between the boxes based on url patterns. Again: crazy? unwise? Currently they're at rackspace which knows poodle about Ruby/ Mongrel afaict.

If you want managed services, then yeah, go for a ruby company. There are a lot of differences to deploying ruby fast than some places are used to or can envisage. As far as splitting traffic goes, eugh, well just think about it carefully.

Context: The front-end site is not impossibly complex. But there is "deep" integration with some backend admin processes which run a large part of the business: some crm, PPC, finance/accounting, email and billing: all partially implemented and built in hand coded ASP. It's a real tangle and it breaks all the time right now. I want to get most of these processes out into third party systems with much narrower points of contact between the production DB's and the specific admin services. This can only happen incrementally over time. This is in addition to the front-end websystem migration.

Do one piece at a time. It sounds like the kind of scenario where you'll be needing to refactor the ASP in order to keep things stable whilst migrating pieces of a large system.

Budgets for this work are not tiny but not enormous. Ditto timeframe. Maybe $250k over 6-8 months.

That's not a lot of money to train up people on ruby. Sure ruby is simple from the outset, but some ideas don't map so well. Expect 3 to 6 months developer learning time before they become seriously productive in the language, unless you're in a house full of rock stars or polygots. Bad ruby code can sometimes be a lot worse than bad code in other languages, but it's really going to depend on the team and how they take to the language.

Any tips or advice on taking on large migration projects such as this would be appreciated. Advice such as "run!" is welcome also. I realize there are no definite answers - I'm just looking for experience or advice on how to reach conclusions here.

Do small chunks at a time. Don't be afraid to refactor the current system in order to be sure of stability. Seriously write your tests, and be careful around the interface boundaries particularly. The problem with tests across interface boundaries is that they're either coupled (and slow), or functional (and slow), or mocked (and therefore one-sided - it'll only test one side of an interface).

I realize this is horribly off-topic and impossibly vague. And I wouldn't ask for this input, except that I highly admire and regard the capabilities and experience of many people who are on this list. I can't think of a smarter mail list who could help advise on this. Any assistance at all will be greatly appreciated.

Thanks!

Steve

p.s. Anyone who has possible interest in this project professionally can also contact me directly off-list.

_______________________________________________
Mongrel-users mailing list
Mongrel-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-users

_______________________________________________
Mongrel-users mailing list
Mongrel-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to