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 poin