Future of Grails

Post on 08-Sep-2014

2,411 views 0 download

Tags:

description

Talk from the Bay Area Groovy & Grails User Group on the future of Grails

transcript

The Future of GrailsDan Woods

!@danveloper

Where Did Grails Really Shine?

Agile Development !

• Development-first experience !

• Brought hot-reloading to enterprise development !

• Seamless transition from "old guard" !

• Rapid prototyping of concepts !

• Groovy!

Sensible Autowirings !

• Bringing all the platform components together, with no effort !

• Driving autowirings through configuration !

• GORM -- Easy to employ DDD while maintaining an anemic model !

• BootStrap.groovy ... Such an undervalued premise

"Smart" Convention over Configuration

!• Encourages a common (and good!) architecture

for all Grails apps !

• Taking MVC to the next level !

• "Right place at the right time with the right name" artifact generation

A Build System for the Web !

• Trail blazed the programmatic build system, even before Gradle !

• Completely deterministic build lifecycle !

• The basis for all Grails scripts and lifecycle events, supporting core extensions

Makes the Fun Things Easy !

• Grails put Spring, Hibernate, and Groovy into a warp conduit! !

• Bringing together desperate tech communities under a common umbrella (and way of doing things) !

• Built infrastructure around other frameworks, making them sensible and easy-to-use

"Convention over configuration, taken too far, doesn't let you wire things together"

!

- Luke Daley

Where has Grails Suffered the Most?

Black Magic !

• Mysterious code generation !

• Runtime MetaClass extensions that cause non-deterministic dispatching !

• A "Stringly" typed framework... !

• Goldilocks Groovy -- Grails porridge is a bit too hot

Too Far From The Source !

• Debugging issues within an incorporated framework can be really hard !

• Stacktraces rarely would reveal the root of the problem (this has gotten much better) !

• Impossible to ascertain the various sources influencing behavior

Bulky & Fat !

• Wiring everything together means that everything must be present !

• Produces mega artifacts -- WAR by design, JAR by option (thanks, Burt) !

• Not a good candidate for running in PaaS/cloud infrastructure

Let's build a plugin framework... !

• ... and let's let any unknown number of sources impact my: app lifecycle; request; development experience; !

• Introduces high levels of complexity to every execution cycle !

• Binary plugins: and now we're going to let plugins hide their source !

• Really messes up an otherwise sound architecture

"Who the f*%k chose Spring?" !

- Rob Fletcher, recent HipChat conversation

Grails 3

A Paradigm Shift in Grails... !

• Grails 3 will take on a library approach as a framework !

• No more (or limited) code generation !

• Builds will happen through Gradle, using Gradle plugins ... Limited magic

The Good Parts Will Stay... !

• The core concept of convention over configuration !

• The sensible incorporation, and wiring together, of best-in-breed frameworks !

• Agile development experience will remain a paramount goal

The Best is Yet To Come... !

• Grails 3 will make the framework composable -- pick and choose functionality you need !

• Introducing "Application Profiles" -- a strategy for grouping goal-oriented features of the framework !

• Improved performance -- Performance Legend, Lari Hotari now a core team member !

• Probably see greater adoption of Groovy in the core

Spring Boot !

• Grails 3 will be built on top of Spring Boot !

• Brings the continental Spring ecosystem, and integration points !

• Will add common structure and reduce verbosity of Spring Boot applications, while garnering all the benefits

Migrating from Grails 2.x to 3.x !

• There's no migration path here... This is a whole new way of doing things !

• That includes plugins... It's unclear what the plugin story is for Grails 3 -- likely libraries with lifecycle hooks

How are we doing things...?

Spring Boot !

• Early adopters of Spring Boot !

• Getting a jump start on figuring out the pain points of Boot integration !

• Communicating openly and frequently with the core team at Pivotal !

• Building our own infrastructure around Spring Boot technologies

Asgard !

!

The next evolution of Asgard will be a microservice PaaS built on top of Spring Boot

Don't get too wrapped up... !

• Designed our PaaS without framework lock-in !

• Very much designing for ways that we can evolve as new technologies (like Grails 3) emerge !

• Hoping our experiences with Boot will benefit the Grails community

Come work with us... We need your

help!

jobs.netflix.com