Philip Stehlik at - Intro to Groovy and Grails


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Philip Stehlik at - Intro to Groovy and Grails

  1. 1. INTRODUCTION TO GROOVYAND GRAILS AT TAULIA2012-07-11 for TechTalks.phPhilip Stehlik
  2. 2. About•  Entrepreneur living in San Francisco•  Co-Founder and CTO Taulia•  Coding since teenage years (PHP, Objective- C, ABAP, JS, Java, Groovy)•  Taulia serving Fortune 2000 companies with financial software (SaaS + Add-On for SAP)•  Engineering team of ~20 people•  Almost everything in Groovy
  3. 3. Taulias tech stack•  Groovy and Grails from day 1 (Grails 1.0)•  Completely in the cloud•  Integrating with many outside systems•  Partners (e-invoicing, orders, payment details, ...)•  Web Services•  Interfacing with Legacy technologies•  Gradle, Spring, Hibernate, Jersey, Maven, ...
  4. 4. How to interact with our systems•  Browser•  REST•  SOAP•  XMLRPC•  File exchange (FTP(S), AS2, SSH)•  Lots of data munching and transformation
  5. 5. Kinds of data•  Invoices, Payment history, Orders•  Vendor data – address, social security, tax ID•  Messages, logins, users•  Logs•  Complete history of 2 yrs of our customers upon project launch
  6. 6. Why we like Groovy•  Simple, nice language•  Dynamic features (for builders, testing, ...)•  Closures•  Tight and easy integration possibilities with Java•  Open source (Apache 2 license)•  Grails
  7. 7. Groovy•  Started development in 2003•  Groovy 1.0 January 2, 2007•  Dynamic language for the Java Virtual Machine
  8. 8. Groovy•  Almost all valid Java code is valid Groovy code•  Mostly dynamic typing (static typing since 2.0 in core)•  Closures•  DSLs and builders•  Object oriented•  Also scripting language
  9. 9. System.out.println("Hello, // optional semicolon World!"); // System.out, brackets,println Hello, World! // main(), class defn // dynamic typingdef name = Luke // GStringprintln "$name, I am your father."String yodaSays = """${name}, your // multi-line stringfather he is.""" // with static typing // BigDecimal equals()assert 0.5 == 1/2def printSize(obj) { // optional duck typing print obj?.size() // safe dereferencing} // native list syntaxdef letters = [a, b, c] // closure supportletters.each { letter -> // overload < on String // or: for (pet in pets) assert letter < d}
  10. 10. Javafor(int x = 0; x < 20; x++){ System.out.println("counter is: " + x );}Groovy20.times { println "counter is: ${it}"}
  11. 11. Running .groovy files•  from command line groovy [file name]•  compile and distribute as JAR/WAR•  groovyConsole•  online•  groovy sh
  12. 12. Code
  13. 13. Grails•  High productivity web development framework•  First version in 2006 (1.0 in 2008)•  Version 2.1 recently released•  Open source (Apache 2 license)•  Supported by SpringSource (VMware)
  14. 14. Grails•  Spring, Hibernate, Groovy•  MVC•  GroovyServerPages•  Convention over configuration•  Plugin system o  MongoDB, Redis o  Jquery, Mootols, Bootstrap, BlueprintCSS o  Quartz, Apache Shiro, GoogleAppEngine o  ...
  15. 15. Code
  16. 16. Additional info•  IDE o  IntelliJ o  STS (SpringSource Tool Suite) o  Eclipse plugin•  Other prominent users o  Netflix (Just released Asgard) o o o  ...
  17. 17. More?
  18. 18. Taulia Architecture•  Everything running on AWS•  Multiple zones and regions•  Tomcat•  Apache•  HAProxy•  MySQL, MongoDB, S3•  All traffic and business data encrypted with at least AES256•  Multiple Grails apps, Servlets, jobs
  19. 19. Idea to Deployment•  One-Pager•  Product team: o  Product Manager o  Engineer o  Quality Engineer Meeting at least weekly with everybody involved to gauge progress.•  Paper prototyping, interviews, refining•  Everybody involved from the beginning
  20. 20. Idea to Deployment #2•  Developer codes locally•  All tests on each commit (Jenkins)•  Auto deploys to integration environment (also publicly accessible for feedback and demos)•  QE and product feedback•  Iterate•  Two week sprints – deploy to public QA and PRD•  Using sleeping features
  21. 21. Thanks!Say hi when you are in San Francisco!