NodeJS vs Play Framework for large project
The stack you choose should depend upon the needs of your application. Let's look at Play vs. Node for their strengths:
Node
- Real-time applications (chat, feeds)
- Event-driven architecture
- Can perform client-server duties (e.g. serve files), but not well-suited for this
- Database management, testing tools, etc, available as additional packages
Play!
- Client-server applications (website, services)
- Share-nothing architecture
- Can perform real-time duties (e.g. Websockets), but not well-suited for this
- Database management (including migrations!), testing tools, etc, built into core
If your application more closely matches a traditional web-based model, Play is probably your best choice. If you need immediate feedback and real-time dynamic messaging, Node is the better choice.
For large traditional applications, seriously consider the Play! Framework because of the built-in unit and functional testing along with database migrations. If incorporated into the development process, these go a long way toward an end product that works as expected and is stable and error-free.
There are 10 major categories you should consider when comparing web frameworks:
- Learn: getting started, ramp up, overall learning curve.
- Develop: routing, templates, i18n, forms, json, xml, data store access, real time web.
- Test: unit tests, functional tests, integration tests, test coverage.
- Secure: CSRF, XSS, code injection, headers, authentication, security advisories.
- Build: compile, run tests, preprocess static content (sass/less/CoffeScript), package.
- Deploy: hosting, monitoring, configuration.
- Debug: step by step debugger, profilers, logging,
- Scale: throughput, latency, concurrency.
- Maintain: code reuse, stability, maturity, type safety, IDEs.
- Share: open source activity, mailing lists, popularity, plugins, commercial support, jobs.
Check out my talk Node.js vs Play Framework for a detailed breakdown of how these two frameworks compare across these 10 dimensions.