• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
682
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
12
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. INTRODUCTION TO GROOVYAND GRAILS AT TAULIA2012-07-11 for TechTalks.phPhilip Stehlik
  • 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. 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. How to interact with our systems•  Browser•  REST•  SOAP•  XMLRPC•  File exchange (FTP(S), AS2, SSH)•  Lots of data munching and transformation
  • 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. 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. Groovy•  Started development in 2003•  Groovy 1.0 January 2, 2007•  Dynamic language for the Java Virtual Machine
  • 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. 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. Javafor(int x = 0; x < 20; x++){ System.out.println("counter is: " + x );}Groovy20.times { println "counter is: ${it}"}
  • 11. Running .groovy files•  from command line groovy [file name]•  compile and distribute as JAR/WAR•  groovyConsole•  online http://groovyconsole.appspot.com/•  groovy sh
  • 12. Code
  • 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. 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. Code
  • 16. Additional info•  IDE o  IntelliJ o  STS (SpringSource Tool Suite) o  Eclipse plugin•  Other prominent users o  Netflix (Just released Asgard) o  Sky.com o  wired.com o  ...
  • 17. More?
  • 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. 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. 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. Thanks!Say hi when you are in San Francisco!p@pstehlik.com@pstehlikhttp://pstehlik.com