Here's the setup at our shop:
- 1 VERY large PHP app (Kohana 2) with many dev's and lots of infrastructure
- Multiple (4-5 and growing) small PHP apps with 1-2 dev's working on these
Issues:
- no testing
- no documentation
- a fragile and tedious deployment process
I'm being moved from the single large app over to the side of the house with the multiple smaller apps. The lack of testing and a proper deployment process in our shop makes me nervous that I'll spend more time fixing bugs and deploying fixes than actually writing code for new features.
Solution A:
- Introduce PHPUnit and Selenium
- Move us over to Phing and Dbdeploy
Problem with A: Setting up PHPUnit has been relatively easy, but functional testing with Selenium has been a total pain. Our VM's work great for dev, but Selenium pegs the needle, plus a few simple tests take forever. I don't doubt I could get all of these technologies playing well together, but it all seems like a mess and the complexity of these working together seems fragile.
Solution B:
- Switch to Rails
- Use integrated testing and/or Rspec/Cucumber (integration of the latter seems simple)
- Use integrated DB migrations
- Use Capistrano for deployments
Based on the major issues of testing, I began to look into Rails. Based on the nature of these other sites we manage, I think Rails may be a good solution. Built-in testing, great community, lots of great tools, and fast development.
Problem with B: Every app we have right now is on Kohana 2 (PHP framework) and no one in the organization knows Rails. The downside to introducing a new technology would be fracturing the teams. If I migrate the sites to Rails, then get hit by a bus, we're kind of screwed.
Bottom line:
Based on our pain points (deployments, testing, documentation, DB migrations), is it worth the cost to switch to Rails? Or should we stay put in Kohana and continue to try and get the other tools built?
Any suggestions? Anyone gone through anything similar? Management has already told me that they're open to hearing about Rails and simply want to use the best tool possible -- whatever that is. Our lead architect, however, will need some convincing if I decide to switch frameworks on our smaller projects.