SlideShare a Scribd company logo
1 of 101
Download to read offline
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level




                          Using Grails on a public facing
                                   Fortune 500 website
                                             10/26/2011
Introduction
Jim Shingler
• Lead Technical Architect for Big Lots
• Beginning Groovy and Grails – Co-Author
• Griffon In Action – Co-Author
• Co-Creator of FallME (IOC Container for JavaME)
• Grails and Griffon plugin contributor
• Speaker
Agenda
•   Background Biglots.com
•   Stats
•   Why Grails
•   Adopting Grails
•   Architecture
•   Plugins
•   Development Tools and Process
•   Performance
•   JVM Tuning
•   Monitoring
BACKGROUND – WWW.BIGLOTS.COM

  Biglots is the nation's largest
   broadline closeout retailer, Big Lots
   has the power to negotiate the best
   deals in the business. We sell a broad
   range of high-quality, brand-name
   products, including consumables,
   seasonal items, furniture,
   housewares, toys, electronics, home
   decor, tools and gifts.
BACKGROUND – WWW.BIGLOTS.COM

  Lots of Items, over 325K
  Not all items in all 1400 stores
  Website has to handle this
   VERY Dynamic,
   High frequency of content change.
BACKGROUND – WWW.BIGLOTS.COM

  Business   Partner – Marketing

 Marketing owns website, sets
  functional direction, sets functional
  priorities, responsible for content
  creation and management.
BACKGROUND – WWW.BIGLOTS.COM

 Business Functional Requirements /
   Objectives
  Bring Website development in-house
  Faster content creation and
   deployment
  Give Business Partner more control
  No Style, Layout Changes
BACKGROUND – WWW.BIGLOTS.COM

 IT Non-Functional Requirements /
   Objectives
  Minimize IT Support required
  Supportable by IT
  Must run on Windows Servers
  Must use SqlServer DB
  Give Business Partner tools they
   need
  Java based
http://rachelmariepaquin.files.wordpress.com/2011/02/tardis_2.jpg
BACKGROUND – WWW.BIGLOTS.COM
                                                                  12/2003




Source: http://wayback.archive.org/web/*/http://www.biglots.com
BACKGROUND – WWW.BIGLOTS.COM
                               12/2004
BACKGROUND – WWW.BIGLOTS.COM
                               12/2005
BACKGROUND – WWW.BIGLOTS.COM

                               12/2006
BACKGROUND – WWW.BIGLOTS.COM
                               12/2007
BACKGROUND – WWW.BIGLOTS.COM

                               12/2008
BACKGROUND – WWW.BIGLOTS.COM
                               12/2009
BACKGROUND – WWW.BIGLOTS.COM
                               02/2011
BACKGROUND – WWW.BIGLOTS.COM
                               Today
BACKGROUND – WWW.BIGLOTS.COM




  Biglots.com            Corporate      Lots2Give.com




          StoreLocator               Kiosk
            Services
BACKGROUND – WWW.BIGLOTS.COM
                                Store Locator
                               Advanced JavaScript
                                  Google Maps
BACKGROUND – WWW.BIGLOTS.COM
                               Weekly Ad
                               I2O Integration
                                  Flash Ad
                                  HTML Ad
BACKGROUND – WWW.BIGLOTS.COM
                                 Rewards Club
                               Back Office Integration
                                  Web Services
BACKGROUND – WWW.BIGLOTS.COM
                                 Rewards Club
                                  Account Maint.
                               Back Office Integration
                                  Web Services
BACKGROUND – WWW.BIGLOTS.COM
                               Search Results
                               Searchable / Elastic
                                 Search Plugin
BACKGROUND – WWW.BIGLOTS.COM
                                    Department
                               Dynamic Changing Images
BACKGROUND – WWW.BIGLOTS.COM
                                 Catalog
                               Dynamic Items
                                  Paging
                                  Sorting
                               Breadcrumbs
BACKGROUND – WWW.BIGLOTS.COM
                                    Item Details
                                        Sharing:
                               Email, Twitter, Facebook, .
                                            ..
                                     Might also like
CAMPAIGNS - EMAIL
WWW.BIGLOTS.COM
STATS




 http://g-ecx.images-amazon.com/images/G/01/ciu/55/9c/5663228348a072b6d4473110.L._AA300_.jpg
STATS

  Page  Views
   Per Hour / Day / Week / Month / Qtr
  Unique visitors
   Per Hour / Day / Week / Month / Qtr
  Frequency of Content Change
   5-15 / Week (Old Site 3-5 / Week)
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level

                             PAGE VIEWS
STATS – PAGE VIEWS (HOUR)
STATS – PAGE VIEWS (DAY)
STATS – PAGE VIEWS (WEEK)
STATS – PAGE VIEWS (MONTH)
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level

                         UNIQUE VISITORS
STATS – UNIQUE VISITORS (HOUR)
STATS – UNIQUE VISITORS (DAY)
STATS – UNIQUE VISITORS (WEEK)
STATS – UNIQUE VISITORS (MONTH)
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level

                            MORE STATS
STATS

        What happened?
STATS – WEBPAGETEST.ORG
STATS
WHY GRAILS




             Why
WHY GRAILS




       Why Not?
WHY GRAILS

 Background:
  Java Shop
  Small Shop (140 People in all of IT, 15 Java Devs)
  Limited experience w/ Web
   Technologies
  Use Spring and Hibernate
WHY GRAILS

 Factors:
  Must  leverage existing skill sets and
   experiences
  Has to be easy
  Must be rapid
  High developer productivity required
  Must scale easily
  Tool support
  Vendor support
WHY GRAILS

 Some Options Considered:
  Struts
  JSF  / Seam
  Wicket
  Rails
  PHP
  Grails
   Choose Grails:
   Experience implementing Wholesale Handheld System
       -Flex, Handheld, and Web interfaces
       -Connected to Local DB and SAP
WHY GRAILS

 Factors:
  Must leverage existing skill sets and
   experiences

 Groovy leverages Java Ecosystem
 Groovy leverages Java skill sets
 Grails leverage Spring, Hibernate and many
  other industry standard frameworks
WHY GRAILS

 Factors:
  Has   to be easy

 Can use Groovy or Java
 Groovy is easy
 Grails conventions
 Grails easy to move outside of conventions
  when you need to
WHY GRAILS

 Factors:
  Must   be rapid

 Grails development is very addictive, You
  get lots done with very little coding
  compared to the old ways
 Fast results
 WARNING: Grails development is very
  addictive. MUST TEST
WHY GRAILS

 Factors:
  Highdeveloper productivity required
 Groovy and Grails allow great developer
  productivity
 Developers produce a lot of functionality
  quickly
 Consistently beating effort estimates

 WARNING: Grails development is very
  addictive. MUST TEST
WHY GRAILS

 Factors:
  Must   scale easily

 Grails scales like any other Java Web
  application, Same approach.
WHY GRAILS

 Factors:
  Tool   support

 IDE – STS (Eclipse)
 Proven industry standard frameworks
 Proven industry standard infrastructure
WHY GRAILS

 Factors:
  Vendor    support

 The company behind Groovy and Grails
WHY GRAILS

 Factors:
  Must  leverage existing skill sets and
   experiences
  Has to be easy
  Must be rapid
  High developer productivity required
  Must scale easily
  Tool support
  Vendor support
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level

                         ADOPTING GRAILS
ADOPTING GRAILS

  Multipronged   approach
   – Jumpstart
   – Books
   – Other Resources
ADOPTING GRAILS – GRAILS JUMPSTART
TRAINING




http://upload.wikimedia.org/wikipedia/commons/4/4a/CBC_Classroom_1932.jpg
ADOPTING GRAILS – GRAILS JUMPSTART
TRAINING
  Grails Course
 Taught by Jeff Brown
     - 4 Day On-Site
     - Elected +1 Day Consulting
     - 8 developers
 Video sample of coarse:
 http://www.springsource.com/training/free-online-video-metaprogramming-
     groovy
ADOPTING GRAILS - BOOKS




http://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Statistics_norway_library.jpg
ADOPTING GRAILS – BOOKS

  Definitive   Guide to Grails
                           December, 2006
                           Graeme Rocher




                             January, 2009
                               2nd Edition
                          Graeme Rocher, Jeff
                                 Brown
ADOPTING GRAILS – BOOKS

  Beginning   Groovy and Grails

                                 June, 2008
                          Christopher Judd, Joseph
                          Nusairat, James Shingler
ADOPTING GRAILS – BOOKS

  Grails   Quick Start
                                October, 2009
                                 Dave Klein




              The Pragmatic Bookshelf
ADOPTING GRAILS – BOOKS

  Grails   In Action
                             May, 2009
                        Glen Smith and Peter
                             Ledbrook
ADOPTING GRAILS – BOOKS

  Groovy   In Action
                         January, 2007
                   Dierk Koenig with Andrew
                  Glover, Paul King, Guillaume
                     Laforge and Jon Skeet




                        Summer, 2012
                           2nd Edition
                  MEAP 10 Chapters Available
                    Dierk König, Guillaume
                    Laforge, Paul King, Jon
                   Skeet, and Hamlet D'Arcy
ADOPTING GRAILS – BOOKS

  Other   Books
ADOPTING GRAILS – OTHER RESOURCES

  Groovy   Mag http://groovymag.com/
 Michael
 Kismal
ADOPTING GRAILS – OTHER RESOURCES




 Grails   Podcast
  http://www.grailspodcast.com
  The Grails Podcast is a bi-weekly podcast
  about the Groovy scripting language,
  the Grails Web Framework and more. It is
  run by Glen Smith from Canberra, Australia
  and Sven Haiges
ADOPTING GRAILS – OTHER RESOURCES

  Groovy   Blogs http://groovyblogs.org
ADOPTING GRAILS – OTHER RESOURCES

  Mail  Groups and Forums
   http://grails.org/Mailing+lists
   http://grails.org/Forums
ADOPTING GRAILS – OTHER RESOURCES
  Twitter         – Some people to follow
         Graeme Rochere - @graemerocher
         Guillaumm Laforge - @glaforge
         Jeff Scott Brown - @jeffscottbrown
         Dierk Konig- @mittie
         Peter Ledbrook - @pledbrook
         Burt Beckwith - @burtbeckwith
         Paul King- @paulk_asert
         Scott Davis - @scottdavis99
         Dave Klein - @daveklein
  This is a good starting place, . . . . There are many more.
ARCHITECTURE




    http://www.besthousedesign.com/wp-content/uploads/2008/10/openhouse-xten-02.jpg
ARCHITECTURE
ARCHITECTURE

               X2
ARCHITECTURE


      X4
ARCHITECTURE - CDN
                     1    A new user request www.biglots.com

                     2    Akamai looks for cookie. Since it isn’t set
                          send the request to BigLots Load
                          Balancer

                     3    BigLots Load Balancer sends the request
                          to an application server

                     4    Application Server returns response to
                          BigLots Load Balancer with cookie set

                     5    BigLots Load Balancer returns response
                          to Akamai

                     6    Akamai returns response to user

                     7    User makes additional request in same
                          session

                     8    Akamai looks for cookie. Since it is found,
                          it is mapped to the appropriate application
                          server

                     9    Akamai sends request to the appropriate
                          application server

                     10   Application server returns response to
                          Akamai

                     11   Akamai returns response to user
ARCHITECTURE – FUNCTIONAL PLUGINS
    Spring Security Core
    Spring Cache
    Elastic Search (Previously Searchable)
    Quartz
    Mail
    JQuery
    JQuery UI
    CKeditor
    Export
    Ref Code
    Sanitizer
    Recaptcha
ARCHITECTURE – DEVELOPMENT PLUGINS

  Code Narc
  GMetrics
  Code Coverage
  Melody
DEVELOPMENT TOOLS AND PROCESS

  IDE: Springsource Tool Suite (STS)
  CI: Bamboo
  Issue Tracking: Jira
  Wiki: Confluence
  SCM: Subversion
  Browsers: All, Favor Firefox and
   Chrome
  Local Dev
   - Tomcat, MySQL, HSQL, Grails 1.3.7
DEVELOPMENT TOOLS AND PROCESS

  Environments
   – Local
   – Dev
   – QA
   – Staging
   – Prod
PERFORMANCE & TUNING




   Measure !!!
   Don’t Guess
   http://www.greatoccupations.com/wp-content/uploads/2010/02/measure.jpg
PERFORMANCE & TUNING


                                         YSlow

                               HTTPFox


                       javamelody



     JMX
                                    Google Page
                                      Speed
PERFORMANCE & TUNING



  Reduce    DB Calls
  Tune Garbage Collection
  Manage Static Content / Assets
  In efficient code
PERFORMANCE & TUNING

 Reduce DB Calls
  Hibernate Caching
   http://grails.org/doc/latest/guide/single.html#5.5.2.2 Caching
   Strategy

  Examine           Lazy vs Eager Fetch
    http://grails.org/doc/latest/guide/single.html#5.3.4 Eager and Lazy Fetching

  Higher        Level Caching using Spring
   Cache
  Indexes (DB Access Analysis)
   http://grails.org/doc/latest/ref/Database%20Mapping/indexColumn.html
PERFORMANCE & TUNING

 Tune Garbage Collection
  Tools: Visual VM, Hyperic, Others
  Avoid / Reduce GC Pause
   Easier with multi core server

  Additional           Resources
   http://www.slideshare.net/kensipe/debugging-your-production-jvm
PERFORMANCE & TUNING - JVM TUNING
PERFORMANCE & TUNING - JVM TUNING
Log It
-Xloggc:D:apps...logsgc_hnwip00109_ent1.log
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+PrintTenuringDistribution


Manage Sizing
-XX:MaxPermSize=512m                        <Permanent Gen Size>
-Xms4096m                                   <Old Gen Initial Heap Size>
-Xmx4096m                                   <Old Gen Maximum Heap Size>
-XX:NewSize=1792m                           <New Gen (nursery) Size>
-Xss384k                                    <Stack Size>


Collectors
-XX:+UseConcMarkSweepGC                     <Old Gen – Concurrent Collector (Low Pause)>
-XX:+UseParNewGC                            <Young Gen - Parallel Collect (Low Pause)>
-XX:+CMSClassUnloadingEnabled               <GC Sweep PermGen – Remove Unused Classes>
PERFORMANCE & TUNING

 Manage Static Content / Assets
  Use a Web Server and Application
   Server
  Move Static Content to Web Server
   and Content Delivery Network (CDN)
                      What
                       happened?
PERFORMANCE & TUNING

 Manage Static Content / Assets
  Use Best Practices




 http://stevesouders.com/hpws/rules.php
 http://developer.yahoo.com/performance/rules.html
 http://juddsolutions.com/downloads/10_performance_tips.pdf
PERFORMANCE & TUNING

 In efficient code
  list.each{item -> …} vs for(item in list)
                                   Closure
                                     Vs
                                  Code Block




                            Advice: You might want to see
                                 how it impacts your
                                     application
PERFORMANCE & TUNING

 In efficient code
  Best Practices




                     Cobertura
PERFORMANCE & TUNING

 In efficient code
  Learn more about Groovy and Grails
 http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/
 http://blog.springsource.com/2010/07/02/gorm-gotchas-part-2/
 http://blog.springsource.com/2010/07/02/gorm-gotchas-part-3/


 Tuning Your Grails Applications
  http://www.youtube.com/watch?v=gl83-80Qq94
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level

                            MONITORING
MONITORING - OPERATIONAL

                 Internal Monitoring: Detailed information on the
                    server (Box), Web Server (IIS), Application
                             Server (TC), Applications

                       Internal Monitoring: Alerting server
                    (Box), OS, Server Logs, Application Logs


                  External Monitoring: User Experience, Runs
                           scripts around the country.


                   External Monitoring: Constantly monitoring
                            security of the web sites
MONITORING - ANALYTICAL

                 External Monitoring: All of the analytics that the
                             business people want


                       External Monitoring: More analytics




                       External Edge Monitoring: Unique
                       Visitors, Popular pages, Errors, …
SECURITY
             External Monitoring: Constant Security
                          Monitoring


           Internal Monitoring: QA Time Security Check
Q & A DISCUSSION

                  Question and Answer

                       Discussion

                         @JShingler
          http://www.linkedin.com/in/jimshingler
               http://jshingler.blogspot.com/
                 ShinglerJim at gmail.com
CLICK TO EDIT MASTER TITLE STYLE
   Click to edit Master text styles
     – Second level
          Third level




           Thank You

More Related Content

Similar to S1 2GX 2011 - Using Grails on a public facing Fortune 500 website

Going Fast on the Mobile Web
Going Fast on the Mobile WebGoing Fast on the Mobile Web
Going Fast on the Mobile WebJason Grigsby
 
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...auexpo Conference
 
Bogdan botea, dmitry nefedkin no fiddle, efficient development on the googl...
Bogdan botea, dmitry nefedkin   no fiddle, efficient development on the googl...Bogdan botea, dmitry nefedkin   no fiddle, efficient development on the googl...
Bogdan botea, dmitry nefedkin no fiddle, efficient development on the googl...Codecamp Romania
 
Securing your Amazon SageMaker model development in a highly regulated enviro...
Securing your Amazon SageMaker model development in a highly regulated enviro...Securing your Amazon SageMaker model development in a highly regulated enviro...
Securing your Amazon SageMaker model development in a highly regulated enviro...Amazon Web Services
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps IsraelAdrian Cockcroft
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 
Google Analytics location data visualised with CARTO & BigQuery
Google Analytics location data visualised with CARTO & BigQueryGoogle Analytics location data visualised with CARTO & BigQuery
Google Analytics location data visualised with CARTO & BigQueryCARTO
 
Feelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldFeelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldKen Kousen
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Onely
 
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup - 360 video production basics
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup -  360 video production basicsFairfax Sydney #mojo #mojocon Feb 2017 Meetup -  360 video production basics
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup - 360 video production basicsJamie Andrei
 
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...affilinet
 
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Paul Brown
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the CommitKim Moir
 
Drupal As A Jigsaw
Drupal As A JigsawDrupal As A Jigsaw
Drupal As A Jigsawnyccamp
 
15 Free CRO Tools
15 Free CRO Tools15 Free CRO Tools
15 Free CRO ToolsDistilled
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideDominic Woodman
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoChristian Heilmann
 
Fastandbeautiful oredev
Fastandbeautiful oredevFastandbeautiful oredev
Fastandbeautiful oredevDoug Sillars
 

Similar to S1 2GX 2011 - Using Grails on a public facing Fortune 500 website (20)

Googlesnippets
GooglesnippetsGooglesnippets
Googlesnippets
 
Going Fast on the Mobile Web
Going Fast on the Mobile WebGoing Fast on the Mobile Web
Going Fast on the Mobile Web
 
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
 
Bogdan botea, dmitry nefedkin no fiddle, efficient development on the googl...
Bogdan botea, dmitry nefedkin   no fiddle, efficient development on the googl...Bogdan botea, dmitry nefedkin   no fiddle, efficient development on the googl...
Bogdan botea, dmitry nefedkin no fiddle, efficient development on the googl...
 
Securing your Amazon SageMaker model development in a highly regulated enviro...
Securing your Amazon SageMaker model development in a highly regulated enviro...Securing your Amazon SageMaker model development in a highly regulated enviro...
Securing your Amazon SageMaker model development in a highly regulated enviro...
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps Israel
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
Google Analytics location data visualised with CARTO & BigQuery
Google Analytics location data visualised with CARTO & BigQueryGoogle Analytics location data visualised with CARTO & BigQuery
Google Analytics location data visualised with CARTO & BigQuery
 
Feelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldFeelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java World
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript
 
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup - 360 video production basics
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup -  360 video production basicsFairfax Sydney #mojo #mojocon Feb 2017 Meetup -  360 video production basics
Fairfax Sydney #mojo #mojocon Feb 2017 Meetup - 360 video production basics
 
FIBO & Schema.org
FIBO & Schema.orgFIBO & Schema.org
FIBO & Schema.org
 
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
 
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
Striking Gold! How Mobile Marketing Pioneers are Winning the Hearts & Minds o...
 
Migrating to Git: Rethinking the Commit
Migrating to Git:  Rethinking the CommitMigrating to Git:  Rethinking the Commit
Migrating to Git: Rethinking the Commit
 
Drupal As A Jigsaw
Drupal As A JigsawDrupal As A Jigsaw
Drupal As A Jigsaw
 
15 Free CRO Tools
15 Free CRO Tools15 Free CRO Tools
15 Free CRO Tools
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech Side
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San Francisco
 
Fastandbeautiful oredev
Fastandbeautiful oredevFastandbeautiful oredev
Fastandbeautiful oredev
 

Recently uploaded

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 

Recently uploaded (20)

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 

S1 2GX 2011 - Using Grails on a public facing Fortune 500 website

  • 1. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level Using Grails on a public facing Fortune 500 website 10/26/2011
  • 2. Introduction Jim Shingler • Lead Technical Architect for Big Lots • Beginning Groovy and Grails – Co-Author • Griffon In Action – Co-Author • Co-Creator of FallME (IOC Container for JavaME) • Grails and Griffon plugin contributor • Speaker
  • 3. Agenda • Background Biglots.com • Stats • Why Grails • Adopting Grails • Architecture • Plugins • Development Tools and Process • Performance • JVM Tuning • Monitoring
  • 4. BACKGROUND – WWW.BIGLOTS.COM  Biglots is the nation's largest broadline closeout retailer, Big Lots has the power to negotiate the best deals in the business. We sell a broad range of high-quality, brand-name products, including consumables, seasonal items, furniture, housewares, toys, electronics, home decor, tools and gifts.
  • 5. BACKGROUND – WWW.BIGLOTS.COM  Lots of Items, over 325K  Not all items in all 1400 stores  Website has to handle this VERY Dynamic, High frequency of content change.
  • 6. BACKGROUND – WWW.BIGLOTS.COM  Business Partner – Marketing Marketing owns website, sets functional direction, sets functional priorities, responsible for content creation and management.
  • 7. BACKGROUND – WWW.BIGLOTS.COM Business Functional Requirements / Objectives  Bring Website development in-house  Faster content creation and deployment  Give Business Partner more control  No Style, Layout Changes
  • 8. BACKGROUND – WWW.BIGLOTS.COM IT Non-Functional Requirements / Objectives  Minimize IT Support required  Supportable by IT  Must run on Windows Servers  Must use SqlServer DB  Give Business Partner tools they need  Java based
  • 10. BACKGROUND – WWW.BIGLOTS.COM 12/2003 Source: http://wayback.archive.org/web/*/http://www.biglots.com
  • 19. BACKGROUND – WWW.BIGLOTS.COM Biglots.com Corporate Lots2Give.com StoreLocator Kiosk Services
  • 20. BACKGROUND – WWW.BIGLOTS.COM Store Locator Advanced JavaScript Google Maps
  • 21. BACKGROUND – WWW.BIGLOTS.COM Weekly Ad I2O Integration Flash Ad HTML Ad
  • 22. BACKGROUND – WWW.BIGLOTS.COM Rewards Club Back Office Integration Web Services
  • 23. BACKGROUND – WWW.BIGLOTS.COM Rewards Club Account Maint. Back Office Integration Web Services
  • 24. BACKGROUND – WWW.BIGLOTS.COM Search Results Searchable / Elastic Search Plugin
  • 25. BACKGROUND – WWW.BIGLOTS.COM Department Dynamic Changing Images
  • 26. BACKGROUND – WWW.BIGLOTS.COM Catalog Dynamic Items Paging Sorting Breadcrumbs
  • 27. BACKGROUND – WWW.BIGLOTS.COM Item Details Sharing: Email, Twitter, Facebook, . .. Might also like
  • 31. STATS  Page Views Per Hour / Day / Week / Month / Qtr  Unique visitors Per Hour / Day / Week / Month / Qtr  Frequency of Content Change 5-15 / Week (Old Site 3-5 / Week)
  • 32. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level PAGE VIEWS
  • 33. STATS – PAGE VIEWS (HOUR)
  • 34. STATS – PAGE VIEWS (DAY)
  • 35. STATS – PAGE VIEWS (WEEK)
  • 36. STATS – PAGE VIEWS (MONTH)
  • 37. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level UNIQUE VISITORS
  • 38. STATS – UNIQUE VISITORS (HOUR)
  • 39. STATS – UNIQUE VISITORS (DAY)
  • 40. STATS – UNIQUE VISITORS (WEEK)
  • 41. STATS – UNIQUE VISITORS (MONTH)
  • 42. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level MORE STATS
  • 43. STATS What happened?
  • 45. STATS
  • 46. WHY GRAILS Why
  • 47. WHY GRAILS Why Not?
  • 48. WHY GRAILS Background:  Java Shop  Small Shop (140 People in all of IT, 15 Java Devs)  Limited experience w/ Web Technologies  Use Spring and Hibernate
  • 49. WHY GRAILS Factors:  Must leverage existing skill sets and experiences  Has to be easy  Must be rapid  High developer productivity required  Must scale easily  Tool support  Vendor support
  • 50. WHY GRAILS Some Options Considered:  Struts  JSF / Seam  Wicket  Rails  PHP  Grails Choose Grails: Experience implementing Wholesale Handheld System -Flex, Handheld, and Web interfaces -Connected to Local DB and SAP
  • 51. WHY GRAILS Factors:  Must leverage existing skill sets and experiences Groovy leverages Java Ecosystem Groovy leverages Java skill sets Grails leverage Spring, Hibernate and many other industry standard frameworks
  • 52. WHY GRAILS Factors:  Has to be easy Can use Groovy or Java Groovy is easy Grails conventions Grails easy to move outside of conventions when you need to
  • 53. WHY GRAILS Factors:  Must be rapid Grails development is very addictive, You get lots done with very little coding compared to the old ways Fast results WARNING: Grails development is very addictive. MUST TEST
  • 54. WHY GRAILS Factors:  Highdeveloper productivity required Groovy and Grails allow great developer productivity Developers produce a lot of functionality quickly Consistently beating effort estimates WARNING: Grails development is very addictive. MUST TEST
  • 55. WHY GRAILS Factors:  Must scale easily Grails scales like any other Java Web application, Same approach.
  • 56. WHY GRAILS Factors:  Tool support IDE – STS (Eclipse) Proven industry standard frameworks Proven industry standard infrastructure
  • 57. WHY GRAILS Factors:  Vendor support The company behind Groovy and Grails
  • 58. WHY GRAILS Factors:  Must leverage existing skill sets and experiences  Has to be easy  Must be rapid  High developer productivity required  Must scale easily  Tool support  Vendor support
  • 59. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level ADOPTING GRAILS
  • 60. ADOPTING GRAILS  Multipronged approach – Jumpstart – Books – Other Resources
  • 61. ADOPTING GRAILS – GRAILS JUMPSTART TRAINING http://upload.wikimedia.org/wikipedia/commons/4/4a/CBC_Classroom_1932.jpg
  • 62. ADOPTING GRAILS – GRAILS JUMPSTART TRAINING  Grails Course Taught by Jeff Brown - 4 Day On-Site - Elected +1 Day Consulting - 8 developers Video sample of coarse: http://www.springsource.com/training/free-online-video-metaprogramming- groovy
  • 63. ADOPTING GRAILS - BOOKS http://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Statistics_norway_library.jpg
  • 64. ADOPTING GRAILS – BOOKS  Definitive Guide to Grails December, 2006 Graeme Rocher January, 2009 2nd Edition Graeme Rocher, Jeff Brown
  • 65. ADOPTING GRAILS – BOOKS  Beginning Groovy and Grails June, 2008 Christopher Judd, Joseph Nusairat, James Shingler
  • 66. ADOPTING GRAILS – BOOKS  Grails Quick Start October, 2009 Dave Klein The Pragmatic Bookshelf
  • 67. ADOPTING GRAILS – BOOKS  Grails In Action May, 2009 Glen Smith and Peter Ledbrook
  • 68. ADOPTING GRAILS – BOOKS  Groovy In Action January, 2007 Dierk Koenig with Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet Summer, 2012 2nd Edition MEAP 10 Chapters Available Dierk König, Guillaume Laforge, Paul King, Jon Skeet, and Hamlet D'Arcy
  • 69. ADOPTING GRAILS – BOOKS  Other Books
  • 70. ADOPTING GRAILS – OTHER RESOURCES  Groovy Mag http://groovymag.com/ Michael Kismal
  • 71. ADOPTING GRAILS – OTHER RESOURCES  Grails Podcast http://www.grailspodcast.com The Grails Podcast is a bi-weekly podcast about the Groovy scripting language, the Grails Web Framework and more. It is run by Glen Smith from Canberra, Australia and Sven Haiges
  • 72. ADOPTING GRAILS – OTHER RESOURCES  Groovy Blogs http://groovyblogs.org
  • 73. ADOPTING GRAILS – OTHER RESOURCES  Mail Groups and Forums http://grails.org/Mailing+lists http://grails.org/Forums
  • 74. ADOPTING GRAILS – OTHER RESOURCES  Twitter – Some people to follow Graeme Rochere - @graemerocher Guillaumm Laforge - @glaforge Jeff Scott Brown - @jeffscottbrown Dierk Konig- @mittie Peter Ledbrook - @pledbrook Burt Beckwith - @burtbeckwith Paul King- @paulk_asert Scott Davis - @scottdavis99 Dave Klein - @daveklein This is a good starting place, . . . . There are many more.
  • 75. ARCHITECTURE http://www.besthousedesign.com/wp-content/uploads/2008/10/openhouse-xten-02.jpg
  • 79. ARCHITECTURE - CDN 1 A new user request www.biglots.com 2 Akamai looks for cookie. Since it isn’t set send the request to BigLots Load Balancer 3 BigLots Load Balancer sends the request to an application server 4 Application Server returns response to BigLots Load Balancer with cookie set 5 BigLots Load Balancer returns response to Akamai 6 Akamai returns response to user 7 User makes additional request in same session 8 Akamai looks for cookie. Since it is found, it is mapped to the appropriate application server 9 Akamai sends request to the appropriate application server 10 Application server returns response to Akamai 11 Akamai returns response to user
  • 80. ARCHITECTURE – FUNCTIONAL PLUGINS  Spring Security Core  Spring Cache  Elastic Search (Previously Searchable)  Quartz  Mail  JQuery  JQuery UI  CKeditor  Export  Ref Code  Sanitizer  Recaptcha
  • 81. ARCHITECTURE – DEVELOPMENT PLUGINS  Code Narc  GMetrics  Code Coverage  Melody
  • 82. DEVELOPMENT TOOLS AND PROCESS  IDE: Springsource Tool Suite (STS)  CI: Bamboo  Issue Tracking: Jira  Wiki: Confluence  SCM: Subversion  Browsers: All, Favor Firefox and Chrome  Local Dev - Tomcat, MySQL, HSQL, Grails 1.3.7
  • 83. DEVELOPMENT TOOLS AND PROCESS  Environments – Local – Dev – QA – Staging – Prod
  • 84. PERFORMANCE & TUNING Measure !!! Don’t Guess http://www.greatoccupations.com/wp-content/uploads/2010/02/measure.jpg
  • 85. PERFORMANCE & TUNING YSlow HTTPFox javamelody JMX Google Page Speed
  • 86. PERFORMANCE & TUNING  Reduce DB Calls  Tune Garbage Collection  Manage Static Content / Assets  In efficient code
  • 87. PERFORMANCE & TUNING Reduce DB Calls  Hibernate Caching http://grails.org/doc/latest/guide/single.html#5.5.2.2 Caching Strategy  Examine Lazy vs Eager Fetch http://grails.org/doc/latest/guide/single.html#5.3.4 Eager and Lazy Fetching  Higher Level Caching using Spring Cache  Indexes (DB Access Analysis) http://grails.org/doc/latest/ref/Database%20Mapping/indexColumn.html
  • 88. PERFORMANCE & TUNING Tune Garbage Collection  Tools: Visual VM, Hyperic, Others  Avoid / Reduce GC Pause Easier with multi core server  Additional Resources http://www.slideshare.net/kensipe/debugging-your-production-jvm
  • 89. PERFORMANCE & TUNING - JVM TUNING
  • 90. PERFORMANCE & TUNING - JVM TUNING Log It -Xloggc:D:apps...logsgc_hnwip00109_ent1.log -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution Manage Sizing -XX:MaxPermSize=512m <Permanent Gen Size> -Xms4096m <Old Gen Initial Heap Size> -Xmx4096m <Old Gen Maximum Heap Size> -XX:NewSize=1792m <New Gen (nursery) Size> -Xss384k <Stack Size> Collectors -XX:+UseConcMarkSweepGC <Old Gen – Concurrent Collector (Low Pause)> -XX:+UseParNewGC <Young Gen - Parallel Collect (Low Pause)> -XX:+CMSClassUnloadingEnabled <GC Sweep PermGen – Remove Unused Classes>
  • 91. PERFORMANCE & TUNING Manage Static Content / Assets  Use a Web Server and Application Server  Move Static Content to Web Server and Content Delivery Network (CDN) What happened?
  • 92. PERFORMANCE & TUNING Manage Static Content / Assets  Use Best Practices http://stevesouders.com/hpws/rules.php http://developer.yahoo.com/performance/rules.html http://juddsolutions.com/downloads/10_performance_tips.pdf
  • 93. PERFORMANCE & TUNING In efficient code  list.each{item -> …} vs for(item in list) Closure Vs Code Block Advice: You might want to see how it impacts your application
  • 94. PERFORMANCE & TUNING In efficient code  Best Practices Cobertura
  • 95. PERFORMANCE & TUNING In efficient code  Learn more about Groovy and Grails http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/ http://blog.springsource.com/2010/07/02/gorm-gotchas-part-2/ http://blog.springsource.com/2010/07/02/gorm-gotchas-part-3/ Tuning Your Grails Applications http://www.youtube.com/watch?v=gl83-80Qq94
  • 96. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level MONITORING
  • 97. MONITORING - OPERATIONAL Internal Monitoring: Detailed information on the server (Box), Web Server (IIS), Application Server (TC), Applications Internal Monitoring: Alerting server (Box), OS, Server Logs, Application Logs External Monitoring: User Experience, Runs scripts around the country. External Monitoring: Constantly monitoring security of the web sites
  • 98. MONITORING - ANALYTICAL External Monitoring: All of the analytics that the business people want External Monitoring: More analytics External Edge Monitoring: Unique Visitors, Popular pages, Errors, …
  • 99. SECURITY External Monitoring: Constant Security Monitoring Internal Monitoring: QA Time Security Check
  • 100. Q & A DISCUSSION Question and Answer Discussion @JShingler http://www.linkedin.com/in/jimshingler http://jshingler.blogspot.com/ ShinglerJim at gmail.com
  • 101. CLICK TO EDIT MASTER TITLE STYLE  Click to edit Master text styles – Second level  Third level Thank You

Editor's Notes

  1. Early DaysNew StoreCorp Conf CallStore LocatorCorpCorp Conf CallInvestor RelationsCommunity RelationsJobsNews Center
  2. Online AdsTipsEmail Campaigns
  3. Advertisements (Furnature)Toys For TotsWholesale Business
  4. -Redesign-Buzz Screens More Ads-Aisle By Aisle
  5. Departments / CatalogsDealsMore Ads
  6. More Refinement
  7. Site Redesign CleanerAll about Retail Separate Corp SiteBuzzClub more pronounced
  8. Grails Port**Introduced Search capability BIG HIT 3rd most popular page
  9. Featured Items
  10. Help Customer Find Store
  11. Third Party Partner for Flash / HTML Ads
  12. Buzz Club-How long until I get a reward
  13. Accoutn Info and what your interested in and more Ads
  14. Today’s websiteMain PageSearchStore LocatorCatalogDepartment PageCategory PageItem PageRewards Customer Loyalty
  15. Today’s websiteMain PageSearchStore LocatorCatalogDepartment PageCategory PageItem PageRewards Customer Loyalty
  16. Items in a catalogBreadcrumbsMulti Page / View All / Sort
  17. Details on individual itemSocial Media LinksRelated Items “Might Also Like”
  18. Campaigns – Emails-Coordinated with website changesDrive Customers to the website2-3 Emails / Week
  19. 18 Release in a little less than a yearBlue are Major ReleaseRed Minor / bug fixGreen Special Event
  20. StatsPages hitsRequestsResponse time (Different Parts of Country)
  21. StatsPages hitsRequestsResponse time (Different Parts of Country)
  22. ~ 160K / Hr
  23. ~2M / Day
  24. ~10M Week
  25. ~35M / Month
  26. ~40K / Hr
  27. ~550K / Day
  28. ~2M / Week
  29. ~6.5M Month
  30. StatsPages hitsRequestsResponse time (Different Parts of Country)
  31. Stats2010 – Load Times and Fully Loaded TimeSignificantly Faster
  32. StatsPages hitsRequestsResponse time (Different Parts of Country)
  33. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  34. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  35. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  36. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  37. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  38. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  39. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  40. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  41. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  42. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  43. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  44. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  45. Why GrailsOptions InvestigateStrutsJSF / SeamWicketRailsGrailsPHPBiglots is a Java ShopChoose Grails Experience implimenting Wholesale Handheld SystemFlex, Handheld, and Web interfacesConnected to Local DB and SAP
  46. Adopting Grails
  47. Adopting Grails
  48. Adopting Grails
  49. Adopting Grails
  50. Adopting Grails
  51. Adopting Grails
  52. Adopting Grails
  53. Adopting Grails
  54. Adopting Grails
  55. Adopting Grails
  56. Adopting Grails
  57. Adopting Grails
  58. Adopting Grails
  59. Adopting Grails
  60. ArchitecturePictureDMZLoad BalancerApplication ServerDatabase ServerHyperic ServerTwo NodesIIS over 4 TomcatsSearch – Started with Searchable, Switching to Elastic
  61. ArchitecturePictureDMZLoad BalancerApplication ServerDatabase ServerHyperic ServerTwo NodesIIS over 4 TomcatsSearch – Started with Searchable, Switching to Elastic
  62. ArchitecturePictureDMZLoad BalancerApplication ServerDatabase ServerHyperic ServerTwo NodesIIS over 4 TomcatsSearch – Started with Searchable, Switching to Elastic
  63. ArchitecturePictureDMZLoad BalancerApplication ServerDatabase ServerHyperic ServerTwo NodesIIS over 4 TomcatsSearch – Started with Searchable, Switching to Elastic
  64. ArchitecturePicture-CDN -CDN LoadBalancing-DMZ LoadBalancing-Application Servers
  65. plugins.ckeditor=3.4.0.1plugins.code-coverage=1.2plugins.codenarc=0.9plugins.cxf=0.5.1plugins.export=0.8plugins.gmetrics=0.2.1plugins.javascript-validator=0.9plugins.jquery=1.4.2.5plugins.jquery-ui=1.8.2.4plugins.mail=0.9plugins.quartz=0.4.2plugins.ref-code=0.3.0plugins.searchable=0.5.5.1plugins.spring-security-core=1.0.1plugins.springcache=1.3
  66. plugins.ckeditor=3.4.0.1plugins.code-coverage=1.2plugins.codenarc=0.9plugins.cxf=0.5.1plugins.export=0.8plugins.gmetrics=0.2.1plugins.javascript-validator=0.9plugins.jquery=1.4.2.5plugins.jquery-ui=1.8.2.4plugins.mail=0.9plugins.quartz=0.4.2plugins.ref-code=0.3.0plugins.searchable=0.5.5.1plugins.spring-security-core=1.0.1plugins.springcache=1.3
  67. Internal Testing: JmeterExternal Testing: KeynoteTools:JmeterVisual VM / JMXInsightGrails JavaMelody
  68. Internal Testing: JmeterExternal Testing: KeynoteTools:JmeterVisual VM / JMXInsightGrails JavaMelody
  69. Not BadPretty Steady
  70. Remember, 5 Separate Applicationshttp://www.slideshare.net/kensipe/debugging-your-production-jvm
  71. HypericHP OpenviewKeynote
  72. HypericHP OpenviewKeynote
  73. HypericHP OpenviewKeynote
  74. HypericHP OpenviewKeynote