Q&A With Todd Ellermann, V.P. Of Engineering at Virtualtourist.com and Founder of the SBJUG.org (South Bay Java User Group)
People often ask us for input on the best language to use when building a new product. In addition to passing along information about the availability of certain skillsets, we reach to our network for technical input. In this vein, Todd Ellermann, VP of Engineering and IT at Virtualtourist.com (and the founder of the South Bay Java User Group – http://www.sbjug.org/), offered the below insights on why Groovy and Grails is his language and framework of choice.
Fun Fact: The Internet began as a single page at the URL http://info.cern.ch/hypertext/WWW/TheProject.html.
What is Groovy and Grails?
Groovy is a dynamic programming language for the Java Virtual Machine with modern programming features similar to Ruby or Python. I like to think of it as a modern Java that is more readable, testable and maintainable. Arising out of the Groovy language is Grails, a web application framework which takes key industry learning’s from frameworks like Rails and brings “Code by Convention” to the JVM, all while leveraging the established ecosystems of Spring and Hibernate. Also important to note is that Grails compiles into a WAR file and can be deployed on any existing infrastructure running application servers like Tomcat, Websphere, WebLogic, JBoss, or Jetty.
Why would I consider moving my development team/process to use Grails?
Productivity, Productivity, Productivity! In the four years we have been using Grails at Virtualtourist.com we have seen a doubling in the amount of new product delivery a single developer can produce using grails. In addition, we see about 30% more refactoring, occurring naturally as part of every project. Prior to introducing Grails, we had zero functional, zero integration and zero unit tests. We now have about 40% test coverage for integration and functional tests.
How much productivity loss will it cost me to change technology platforms?
In our experience, 14 developers and 4 years later, the average software engineer with at least 2 years of Java, Spring and Hibernate experience makes a 100% transition in 2-3 weeks. In fact, engineers demonstrate significant productivity gains within 60 days, with no formal training – using only books, the web and simple intranet applications to get started.
Is Grails “Enterprise ready”?
Grails has built in i18n support. You can leverage all the libraries of Java to connect to enterprise systems like MQ Series, SAP, AS400, and consume web services of all types (SOAP,REST,XML-RPC). Over 100 companies worldwide offer Grails development services including SpringSource (a division of VMWare). Grails supports all the major RDBMS systems and any NoSQL solutions that have Java drivers. There are over 4000 people on the grails mailing list and there are currently 800 open source grails plug-ins available. Grails has Spring Security (ACEGI) or Apache Shiro as readily available plug-ins, and has a CAS plug-in to talk to ActiveDirectory(LDAP). There are lots more questions to truly answer the “Enterprise ready” question, but these were the highlights that caught my attention.
Will Grails scale/perform?
My response will have to be anecdotal – because it’s the only kind of data I have, but Virtualtourist.com is now 97% Grails and has over 12 million pages indexed in Google. We service 100 requests per second with an average time to deliver HTML to the browser of 500 milliseconds. Our load testing indicates to us with our current infrastructure and configuration that we could handle a spike of up to 3000 requests/second and maintain the current load times. It is my understanding that BigLots is using Grails to service their web site with approximately 4 million monthly visitors (http://www.trafficestimate.com/biglots.com).
Should I use Grails for my startup?
I would choose Grails for any startup I was involved in that did not have an existing team of non-java developers. Free tools like Spring Tool Suite IDE and the plug-in ecosystem, code by convention features, rapid prototyping tools, availability of competent developers (Java), and long term scalability of the platform make Grails a great choice. I would also consider using it for any intranet application that needs to be quickly thrown together to improve company productivity or prototype a proof of concept.
Why do you sound like a Grails commercial?
After 15 years of building web applications with Perl, Ruby, PHP, ASP.net, and Java, I find Groovy and Grails to be the same leap forward that, 14 years ago I thought about Java in relation to C++. Unfortunately, I also hear people confusing Grails with Rails. I believe the founder of Grails (Graeme Rocher) chose the name to convey his use of the lessons learned in Ruby on Rails. Nevertheless, I fear people, not to mention disengaged staffing firms, confuse the two platforms more often than one would expect.
If you want to learn more I highly recommend visiting http://www.springone2gx.com for more information about a conference which is run by the No Fluff Just Stuff guys in conjunction with SpringSource.