SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
INTRODUCTION TO GROOVY
AND GRAILS AT TAULIA
2012-07-11 for TechTalks.ph
Philip Stehlik
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
Taulia's 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, ...
How to interact with our systems
•  Browser
•  REST
•  SOAP
•  XMLRPC
•  File exchange (FTP(S), AS2, SSH)
•  Lots of data munching and transformation
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
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
Groovy
•  Started development in 2003
•  Groovy 1.0 January 2, 2007
•  Dynamic language for the Java Virtual
  Machine
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'
System.out.println("Hello,           // optional semicolon
  World!");                          // System.out, brackets,
println 'Hello, World!'              // main(), class defn

                                     // dynamic typing
def name = 'Luke'                    // GString
println "$name, I am your father."


String yodaSays = """${name}, your   // multi-line string
father he is."""                     // with static typing

                                     // BigDecimal equals()
assert 0.5 == 1/2


def printSize(obj) {                 // optional duck typing
      print obj?.size()              // safe dereferencing
}                                    //   native list syntax
def letters = ['a', 'b', 'c']        //   closure support
letters.each { letter ->             //   overload '<' on String
                                     //   or: for (pet in pets)
    assert letter < 'd'
}
Java
for(int x = 0; x < 20; x++){
  System.out.println("counter is: "
                     + x );
}

Groovy
20.times {
  println "counter is: ${it}"
}
Running .groovy files
•  from command line groovy [file name]
•  compile and distribute as JAR/WAR
•  groovyConsole
•  online http://groovyconsole.appspot.com/
•  groovy sh
Code
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)
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  ...
Code
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  ...
More?
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
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
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
Thanks!


Say hi when you are in San Francisco!

p@pstehlik.com
@pstehlik
http://pstehlik.com

Weitere ähnliche Inhalte

Was ist angesagt?

Mongo db in 3 minutes BoilerMake
Mongo db in 3 minutes   BoilerMakeMongo db in 3 minutes   BoilerMake
Mongo db in 3 minutes BoilerMake
Valeri Karpov
 
C# Development (Sam Corder)
C# Development (Sam Corder)C# Development (Sam Corder)
C# Development (Sam Corder)
MongoSF
 

Was ist angesagt? (20)

Kiosk / PHP
Kiosk / PHP Kiosk / PHP
Kiosk / PHP
 
Secrets with Ansible
Secrets with AnsibleSecrets with Ansible
Secrets with Ansible
 
ElasticSearch
ElasticSearchElasticSearch
ElasticSearch
 
CouchDB in The Room
CouchDB in The RoomCouchDB in The Room
CouchDB in The Room
 
nodecalgary1
nodecalgary1nodecalgary1
nodecalgary1
 
MongoDB at RubyEnRails 2009
MongoDB at RubyEnRails 2009MongoDB at RubyEnRails 2009
MongoDB at RubyEnRails 2009
 
Advanced jQuery (Ajax Exp 2007)
Advanced jQuery (Ajax Exp 2007)Advanced jQuery (Ajax Exp 2007)
Advanced jQuery (Ajax Exp 2007)
 
Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
MongoDB at ZPUGDC
MongoDB at ZPUGDCMongoDB at ZPUGDC
MongoDB at ZPUGDC
 
Drupal 7: What's In It For You?
Drupal 7: What's In It For You?Drupal 7: What's In It For You?
Drupal 7: What's In It For You?
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
 
Mongo db in 3 minutes BoilerMake
Mongo db in 3 minutes   BoilerMakeMongo db in 3 minutes   BoilerMake
Mongo db in 3 minutes BoilerMake
 
State of jQuery and Drupal
State of jQuery and DrupalState of jQuery and Drupal
State of jQuery and Drupal
 
C# Development (Sam Corder)
C# Development (Sam Corder)C# Development (Sam Corder)
C# Development (Sam Corder)
 
Firebird Interbase Database engine hacks or rtfm
Firebird Interbase Database engine hacks or rtfmFirebird Interbase Database engine hacks or rtfm
Firebird Interbase Database engine hacks or rtfm
 
MongoDB at FrozenRails
MongoDB at FrozenRailsMongoDB at FrozenRails
MongoDB at FrozenRails
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap
 
Introducing DynaTrace AJAX Edition
Introducing DynaTrace AJAX EditionIntroducing DynaTrace AJAX Edition
Introducing DynaTrace AJAX Edition
 
bcgr3-jquery
bcgr3-jquerybcgr3-jquery
bcgr3-jquery
 

Ähnlich wie Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails

Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 

Ähnlich wie Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails (20)

Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsBig Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Node azure
Node azureNode azure
Node azure
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The When
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
REST easy with API Platform
REST easy with API PlatformREST easy with API Platform
REST easy with API Platform
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
About Clack
About ClackAbout Clack
About Clack
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)
 
.NET7.pptx
.NET7.pptx.NET7.pptx
.NET7.pptx
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
Managing Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchManaging Your Security Logs with Elasticsearch
Managing Your Security Logs with Elasticsearch
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails

  • 1. INTRODUCTION TO GROOVY AND GRAILS AT TAULIA 2012-07-11 for TechTalks.ph Philip 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. Taulia's 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.
  • 7. 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
  • 8. Groovy •  Started development in 2003 •  Groovy 1.0 January 2, 2007 •  Dynamic language for the Java Virtual Machine
  • 9. 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'
  • 10. System.out.println("Hello, // optional semicolon World!"); // System.out, brackets, println 'Hello, World!' // main(), class defn // dynamic typing def name = 'Luke' // GString println "$name, I am your father." String yodaSays = """${name}, your // multi-line string father he is.""" // with static typing // BigDecimal equals() assert 0.5 == 1/2 def printSize(obj) { // optional duck typing print obj?.size() // safe dereferencing } // native list syntax def letters = ['a', 'b', 'c'] // closure support letters.each { letter -> // overload '<' on String // or: for (pet in pets) assert letter < 'd' }
  • 11. Java for(int x = 0; x < 20; x++){ System.out.println("counter is: " + x ); } Groovy 20.times { println "counter is: ${it}" }
  • 12. Running .groovy files •  from command line groovy [file name] •  compile and distribute as JAR/WAR •  groovyConsole •  online http://groovyconsole.appspot.com/ •  groovy sh
  • 13. Code
  • 14.
  • 15. 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)
  • 16. 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  ...
  • 17. Code
  • 18. 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  ...
  • 19. More?
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. Thanks! Say hi when you are in San Francisco! p@pstehlik.com @pstehlik http://pstehlik.com