SlideShare a Scribd company logo
1 of 75
Lucas Jellema (AMIS, The Netherlands)
THINKING THROUGH
JAVA ENTERPRISE PERFORMANCE




JavaOne 2012, San Francisco
OVERVIEW

• What is performance?
• Where is performance established?
• Advanced tuning methods
• ISYITF Method for Performance Improvement:
   – Do not do it …
• Architecting Enterprise Java applications for improved
  performance
PERFORMANCE DEGRADATION




         65 %
PERFORMANCE DEGRADATION




          Response
            time

          + 65 %
PERFORMANCE



                 Who determines in what way the performance
Expectations
                                                 Measure objectively
                   Business Owner

               Process Duration                 Business Objectives
                           Wait time
                                                                  SLAs


                                          Availability ≈ Performance



 Disappearance Hourglass
                                                  Response time
                          Meaningful response
THE THEATER MANAGER
TYPICAL LAYOUT OF
ENTERPRISE JAVA APPLICATIONS
                           Performance ≈ Wait for Response



      Web Browser




  JEE Application Server




         RDBMS
PERFORMANCE CONTRIBUTORS IN
ENTERPRISE JAVA APPLICATIONS
                           Performance ≈ Wait for Response


                                       Response = Wait + Processing
      Web Browser                      Wait = Network 1 + Response
                                                AppServer
             1


  JEE Application Server              Response = Wait + Processing
                                      Wait = Network 2 + Response
                                               Database
             2


                                      Response = Processing
         RDBMS                 Processing = internal wait (I/O) + CPU
ADVANCED TUNING METHODS

• Use StringBuffer rather than plain String concatenation
• Use SAX for XML parsing instead of DOM
• Carefully select the collection class to use
   – optimize hashcode() in custom Map implementations
• Use profiling tools to identify hotspots in the Java code
• Remove Assertions from production code
• Find optimal JVM switches through trial-and-error
   – Focus on GC, Heap size, thread pools
• Pool resources and reuse objects rather than recreate
• Leverage concurrency features in Java to
   – speed up time-to-completion through parallel execution
   – prevent underuse of CPU during I/O operations
• Optimize algorithms for sorting, pattern matching, iteration,
  serialization, …
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT




The fastest way to perform a task:

DO NOT DO IT
PREVENT UNNEEDED PROCESSING


 if ( expensiveEvaluation & someFlag) {
     ...
 }




 if ( someFlag && expensiveEvaluation) {
     ...
 }
PREVENT UNNEEDED PROCESSING


 log.debug ( “Outcome step 2: ” +
              resultOfExpensiveProcessing );




 if (log.doDebug)
   log.debug ( “Outcome step 2: ” +
              resultOfExpensiveProcessing );
THE SHOPPING ALGORITHM
THE SHOPPING ALGORITHM

•   shopForItem Item ( String itemName) {
        driveToShop;
        Item item = buyItemAtShop ( itemName);
        driveHomeFromShop;
        return item;
    }
GET THIS WEEK’S GROCERIES

getGroceries Item[] ( String[] shoppingList) {
    Item[] items = new Item[ shoppingList.length];
    for (int i=0; i < shoppingList.length; i++) {
        items[i] = shopForItem (shoppingList[i]);
    }
    return items;
}
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT



                          AT ALL
       MORE OFTEN THAN REQUIRED
DO NOT DO IT
SWEET MEMORIES
STOCK MANAGEMENT
STOCK MANAGEMENT
DO NOT DO IT…
MORE OFTEN THAN REQUIRED
• If it has been produced before…
    – Reuse before re-produce!
• If it has been shipped before…
    – Reuse instead of re-ship          Web Browser
• … provided it is still fresh




                                    JEE Application Server




                                           RDBMS
DO NOT DO IT…
MORE OFTEN THAN REQUIRED
• Save on network trips, context
  switches and tiers to cross
• Save on ‘reproducing’ same results
                   -JS data (memory)
                         -Cookies                       Web Browser
                       - HTML 5 db




                          Edge Cache
               Cache                              JEE Application Server
            Cluster Fail-Over
            (Session State)
            Result Store
            Write Behind
                                        Client Result
                                            Cache


                                       Result Cache
                                                          RDBMS
                                       Materialized
                                          View
MORE PERFORMANCE REQUIRES
PARALLEL
MORE PERFORMANCE REQUIRES
PARALLEL
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                   ON YOUR OWN
MOORE’S LAW REVISED: CORES LAW
DO NOT DO IT…
ON YOUR OWN
• Parallel means: multiple resources contributing to a
  task at the same time

• Leverage multi-core CPU
• Achieve scalability and performance with a Cluster
• Introduce parallellism into your application
   – Java: Concurrency (ThreadPools), WorkManager
   – Database: parallel query and DML ,
      dbms_parallel_execute, dbms_job, parallel table
      functions
   – Multi threading: on every tier and even across tiers
• Engage compute grid: multi node processing unit
   – For example: make Hadoop make those nodes work
      for you (divvy up the work and merge the results)
BALANCE RESOURCES TO PREVENT
CLOGGING
HILTON UNION SQUARE – LAST FRIDAY
THE POORLY PERFORMING
               BUSINESS PROCESS LOAN REQUEST

                                                                         Reject
                                                                        request
          Check Identity
 Loan                                        Evaluate
request
           with Federal    Fraud Analysis
                                             Request
             Service
                                                                        Transfer
                                                                         Money

           Max 1 day        Max 2 days      Max 3 days                Max 3 mins
           98% is OK        99.99% is OK




                                                        Max 6 days + 3 mins
THAT DINNER IS TAKING MIGHTY
            LONG…


Dinner is
 Served




                                         All are
                                        satisfied




                                  Max 3 hours + 3 mins
THE DINNER PROCESS




Dinner is   John eats   Mary eats       Daisy           Marty
 Served       soup       soup         eats soup        eats soup


                                         Daisy          Marty
            John eats   Mary eats
                                         eats           eats
              main       main
                                         main           main

                         Daisy
            John eats                All are
                          eats      satisfied
              desert
                         desert


                                                  Max 3 hours + 3 mins
THE SAME DINNER PROCESS
            John eats    John eats
              soup         main
                                     John eats
            Mary eats    Mary eats     desert
Dinner is
             soup         main                             All are
 Served                                                   satisfied
                          Daisy       Daisy
            Daisy eats
                          eats         eats
              soup
                          main        desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                 Max 3 hours + 3 mins
THE OPTIMIZED DINNER PROCESS
            John eats    John eats
              soup         main
                                     John eats
            Mary eats    Mary eats     desert
             soup         main
Dinner is                                                  All are
 Served                                                   satisfied
                          Daisy       Daisy
            Daisy eats
                          eats         eats
              soup
                          main        desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                 Max 1 hours + 3 mins
FURTHER OPTIMIZATIONS
                                     (IF NOT REFINEMENT)
            John eats    John eats
              soup         main
                                       John eats
            Mary eats    Mary eats       desert
             soup         main
Dinner is                                               All are
 Served                                                satisfied
                          Daisy         Daisy
            Daisy eats
                          eats           eats
              soup
                          main          desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                   Max 53 mins
THE POORLY PERFORMING
               BUSINESS PROCESS LOAN REQUEST

                                                                         Reject
                                                                        request
          Check Identity
 Loan                                        Evaluate
request
           with Federal    Fraud Analysis
                                             Request
             Service
                                                                        Transfer
                                                                         Money

           Max 1 day        Max 2 days      Max 3 days                Max 3 mins
           98% is OK        99.99% is OK




                                                        Max 6 days + 3 mins
SPEEDING UP THE BUSINESS
          PROCESS LOAN REQUEST
                Check Identity
                 with Federal
                   Service              Reject
                                       request

 Loan
request
                Fraud Analysis

                                       Transfer
                  Evaluate             Money
                  Request

                 Max 1 day            Max 3 mins
                 Max 2 days
                 Max 3 days
                                 Max 3 days + 3 mins
PANCAKE PARTY
BETTER PERFORMING PANCAKE
PARTY
PIPELINED PANCAKE PARTY: BEST
PERFORMANCE
PIPELINING ACROSS THE TIERS

• Database:
   – Pipelined Table Functions
   – Pipes and Queues
• Middle tier:                   Web Browser
   – Multiple threads
   – Queues (JMS)
• Client tier:
   – AJAX “channels”
   – WebSockets




                                   RDBMS
THE PINNACLE OF UN-PERFORMANCE
FIRE AND FORGET
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                   ON YOUR OWN
                    IMMEDIATELY
FIRE AND FORGET IN THE REAL WORLD
DO NOT DO IT…
IMMEDIATELY (OR SYNCHRONOUSLY)
• Submit information, file a complaint or request, start a
  process, trigger interaction
   – No immediate response is required!
• Asynchronous
   – Start batch job (db) or worker-thread (java)
       • Or fire event
   – Write behind (from grid) (NO SQL)
   – DML Error log
DO NOT DO IT…
IN BATCH (UN-IMMEDIATELY)
• Batch jobs can put peak load on a system – choking
  on line applications
   – Monthly reporting, quarterly prolongation, yearly
      calculation,
• Batch jobs are increasingly unwanted in 24/7
   – When is the “nightly” batch window?
   – Data not current (enough) by today’s standards: “batch
      has not run yet”
• Batch jobs used to be desirable or needed as a result
  of technical limitations – that may not apply anymore
• Continuous, near real-time operations – leveraging
  events, decoupling and integration architectures – are
  a serious alternative
DON’T CALL US … WE’LL CALL YOU
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                    ON YOUR OWN
                     IMMEDIATELY
                 AS PER REQUEST
DO NOT DO IT…
AS PER REQUEST
• Push has two key advantages over poll
   – Most up to date information
   – Reduction in network traffic and load on server
• Push is available in several flavors
   – Middleware to Browser: comet, ADF Active Data
      Service, WebLogic Server HTTP Channels, long poll,
      WebSockets in HTML 5
   – Database to Middleware: JMS/AQ, Database Query
      Result Change Notification, Table Triggers, utl_http
      push to servlet
   – “piggy backing” – adding subscribed-to information in
      regular requests
• Event driven architecture is
  based on push (of events) to
  mediating event handling
  infrastructure
BITE OFF MORE THAN YOU CAN HAVE TO
CHEW
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                            AT ALL
        MORE OFTEN THAN REQUIRED
                      ON YOUR OWN
                       IMMEDIATELY
                   AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
DO NOT DO IT…
IN TOO BIG STEPS
• Performance perception is often: time until page is
  displayed and accessible (hourglass disappears)
• Web pages frequently contain much more than is
  initially visible or even required
   – Tree nodes, inactive tabs, invisible popups, unopened
      dropdown lists
• Performance perception can be enhanced by not
  initially loading what is not required
• Use AJAX based post-loading to (lazy-)fetch content in
  subsequent, background round-trips




• /*+ First Rows */ vs. /*+ All Rows */
PENSION FUND – SEPTEMBER 2012


      Employer             <    >




      Participants




      Job & Benefits
FETCHING THE DATA OF THE PENSION
FUND FOR THE WEB APPLICATION

              select *
                                    1 record
      <   >
              from   employers
              where id = < 324>


              select *               100s records
              from   participants
              where employer_id = < 324>




              select *                10s records
              from   benefits
              where participant_id = <#>
REPORTING ON MANY EMPLOYERS


           select *
                                    100s records
           from   employers           1 query



           select *                10k records
           from   participants     100s queries
           where employer_id = <#>




           select *               100k records
           from   benefits         10k queries
           where participant_id = <#>
SINGLE BULK RETRIEVE REPLACING
MULTIPLE QUERIES
• Have the database bulk up the data retrieval
• Return Ref Cursor, Types and Collections or
  JSON/XML



                 Benefits Package


select *
from   employers
where id in <some set> select *
                       from   participants
                       where employer_id in <some set>
 select b.*
 from   benefits b join participants p
        on (p.id = b.participant_id)
 where p.employer_id in <some set>
DO NOT DO IT…
IN TOO BIG OR TOO SMALL STEPS
• Every network round-trip and context-switch adds
  overhead
   – Compare dialing the operator for every digit in the
     telephone number you want to learn about
• Bundling up information to reduce the number of
  round trips can be advantageous for performance
   – Bring all items from the shop in one round trip
   – Leverage collections and types, XML or JSON to
     retrieve complex, structured object graphs from DB
   – Zipping up multiple web resources in single archive
   – Mashing up icons or images into a single big picture
   – Piggy-back information onto requests
THE HARD WAY
A CONVOLUTED WAY
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
DO NOT DO IT…
IN A CONVOLUTED WAY
• Pragmatism can overcome theoretical purity (or old
  dogs’ tricks)
   – With good reason and well documented

• Have client side Java Script directly access Google
  Maps – by-passing the application server
• Have client directly access Database services
• Use RESTful (JSON, CSV) rather than WS* and XML
  between browser client and application server
• Use POJOs (Entities) throughout the application, from
  JPA to Web Tier – rather than copying/transferring
• When that suffices, use simple substring i/o parsing
  big xml in DOM
• Pass plain CSV/JSON/XML from DB through Java
  middle tier to Client when that is appropriate
BOTTLENECK / CRITICAL CHAIN
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
            IN A SUBOPTIMAL PLACE
BOTTLENECK / CRITICAL CHAIN

• Make sure that the bottleneck resource in your
  enterprise application is not used (at peak times) for
  work that is not critical or that can be outsourced
   – Use auxiliary resources – outside critical chain
   – Engage specialized servers, optimized for specific
     tasks
   – Manage resources in a strict manner
       • Resource manager (DB) or Work manager (WLS)
DO NOT DO IT… LIVE EVENT PROCESSING
IN A SUBOPTIMAL PLACE
• The league of real time events
   – Continuous stream of a multitude of tiny events with
     hardly any payload, to analyze & aggregate
   – Sent from physical sensors (temperature, pressure,
     RFID, security gates), process sensors, Twitter,
     manufacturing equipment, database triggers, web
     servers, ESBs, stock trade tickers, sport statistics,
     RSS, network switches, …
DO NOT DO IT… HTML RENDERING
IN A SUBOPTIMAL PLACE
• (X)HTML is not very compact
   – Information density of HTML is very low
• DHTML, JavaScript &
  AJAX allow for                      Web Browser
   – Dynamic HTML
     rendering in browser
   – Dynamic, Partial
     Page Refresh
• Most HTML presented             JEE Application Server
  by application is pre-
  defined
   – Dynamic data content
     fetched from RDBMS
     or other services is
     small fraction                      RDBMS
DO NOT DO IT…
IN A SUBOPTIMAL PLACE
• Do not perform a task in a resource that is not ideally
  suited for that task
   – If it directly contributes to overall performance
DO NOT DO IT…
IN A SUBOPTIMAL PLACE
•   Leverage database for what it’s good at
     – Data Integrity – Primary Key /Unique Key /Foreign Key
     – Aggregation
     – Sorting
     – Data Rule enforcement
     – Bulk DML and Copy data
     – Analytical Functions, Model clause, Rollup
•   Specialized engines for
     – Imaging and Document Processing
     – Match and Search
     – Speech Recognition
     – Cryptography
     – 3D
     – Real time Data Processing
     – ….
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
            IN A SUBOPTIMAL PLACE
ARCHITECT FOR PERFORMANCE




             Web Browser




         JEE Application Server




                RDBMS
ARCHITECT(URE) FOR PERFORMANCE
                                                                Services ( Google Maps,
                                                                Translation, Conversion,
                                                                       Data Feeds

-JS data (memory)                       Web Browser
     -Cookies        HTML rendering
 - HTML 5 local db   Validation, Calculation, Parsing
                     “Processing” (image, cryption, compression, SETI)




                         Fire&Forget
                                        piggy-                    Post load
                                         back                     (AJAX)
                                                                              by-pass

                                       JEE Application Server
ARCHITECT(URE) FOR PERFORMANCE
                                                                                 Services ( Google Maps,
                                                                                 Translation, Conversion,
                                                                                        Data Feeds

-JS data (memory)                                      Web Browser
     -Cookies                     HTML rendering
 - HTML 5 local db                Validation, Calculation, Parsing
                                  “Processing” (image, cryption, compression, SETI)




                                      Fire&Forget
                           push                        piggy-                        Post load
                                                        back                         (AJAX) by-pass

                                                                                                              Search
        Edge Cache                                        Load balancer                                         &
                                                                                                              Match
                                                    Sticky ip sessions, Throttling                   CEP
           Cache
                                                                                                              CMS
       Cluster Fail-Over              JEE                   JEE                                     Compute
                                                                         WorkManager
       (Session State)                App                   App          Parallel Threads            Grid
       Result Store                  Server                Server        JMS                                Crypto
       Write Behind
                                     Node                  Node              Node                   Image
                                                                                                             Print
                                                                                                            Server
ARCHITECT(URE) FOR PERFORMANCE
                               by-pass
                                                                                                           Search
Edge Cache                                 Load balancer                                                     &
                                                                                                           Match
                                   Sticky ip sessions, Throttling                                 CEP
    Cache
                                                                                                           CMS
Cluster Fail-Over              JEE           JEE                                                 Compute
                                                           WorkManager
(Session State)                App           App           Parallel Threads                       Grid
Result Store                  Server        Server         JMS                                           Crypto
Write Behind
                              Node          Node                         Node                    Image
                    push                                                                                  Print
                                                                                                         Server




                                                           Fire&Forget
                           Client Result                                        Post
                               Cache                                            load

                             AQ/JMS
                             HTTP Push
                             DB QRCN
         Result Cache
                                              Aggregation
                                                                                            Resource Mgt
         Materialized                         Filter & Sort
                                                                                                       Jobs
                                              Data Integrity
            View                              Bulk DML                                           Pipelining
                                                                                       Parallel Processing
                               CBO            RDBMS
Services ( Google Maps,
                                                                                              Translation, Conversion,
                                                                                                    Data Feeds

      -JS data
    (memory)
                                                      Web Browser
                                    HTML rendering
     -Cookies                       Validation, Calculation, Parsing
- HTML 5 local db                   “Processing” (image, cryption, compression, SETI)


                                                                                                Post load




                                        Fire&Forget
                             push                       piggy-
                                                         back                                   (AJAX)

                                                                                                              by-pass
          Edge
          Cache                                           Load balancer
                                                      Sticky ip sessions, Throttling
                                                                                                                      CEP
         Cache                          JEE                       JEE                                                           CMS
       Cluster Fail-Over                                                                                              Compute
       (Session State)                 App                       App           WorkManager
                                                                                                                      Grid
                                                                               Parallel Threads
       Result Store                    Serv                      Serv          JMS                                               Cryp
       Write Behind                    erNo                      erNo                                                             to
                                                                                            Node
                                        de                        de                                                  Image

                             push                                                                                                Print
                                                                                                                                Server




                                                                              Fire&Forget
                                    Client Result                                                  Post
                                        Cache                                                      load


                                      AQ/JMS
                                      HTTP Push
                                      DB QRCN
                    Result
                    Cache                                          Aggregation                                Resource Mgt
                 Materialized                                      Filter & Sort                                          Jobs
                    View                                           Data Integrity                                   Pipelining
                                                                   Bulk DML                               Parallel Processing
                                           CBO
                                                             RDBMS
SUMMARY

• Performance requirements are derived from
  measurable and meaningful business objectives
• Unavailability equals Zero Performance
   – Treat Performance and Availability elements in the
     same equation
• Performance should [also] be addressed in a top-down
  approach, across all tiers and constituent parts
• Some ISYITF guidelines:
   – Do not do it … [AT ALL | MORE OFTEN THAN
     REQUIRED | ON YOUR OWN | IMMEDIATELY | AS
     PER REQUEST | IN TOO BIG OR TOO SMALL
     STEPS | IN A CONVOLUTED WAY | IN A
     SUBOPTIMAL PLACE ]

More Related Content

Viewers also liked

The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012Lucas Jellema
 
Speedy perception trumps speedy reception–smart asynchronous interactions (N...
Speedy perception trumps speedy reception–smart asynchronous interactions  (N...Speedy perception trumps speedy reception–smart asynchronous interactions  (N...
Speedy perception trumps speedy reception–smart asynchronous interactions (N...Lucas Jellema
 
Hadoop, Oracle and the big data revolution collaborate 2013
Hadoop, Oracle and the big data revolution collaborate 2013Hadoop, Oracle and the big data revolution collaborate 2013
Hadoop, Oracle and the big data revolution collaborate 2013Guy Harrison
 
Thriving and surviving the Big Data revolution
Thriving and surviving the Big Data revolutionThriving and surviving the Big Data revolution
Thriving and surviving the Big Data revolutionGuy Harrison
 
Fontys Lecture - The Evolution of the Oracle Database 2016
Fontys Lecture -  The Evolution of the Oracle Database 2016Fontys Lecture -  The Evolution of the Oracle Database 2016
Fontys Lecture - The Evolution of the Oracle Database 2016Lucas Jellema
 
ADF DVT Speed Dating - Meeting the Gantt Charts
ADF DVT Speed Dating - Meeting the Gantt ChartsADF DVT Speed Dating - Meeting the Gantt Charts
ADF DVT Speed Dating - Meeting the Gantt ChartsLucas Jellema
 
Introducing Oracle Real-Time Integration Business Insight
Introducing Oracle Real-Time Integration Business InsightIntroducing Oracle Real-Time Integration Business Insight
Introducing Oracle Real-Time Integration Business InsightLucas Jellema
 
The AMIS Report from Oracle Open World and JavaOne 2011
The AMIS Report from Oracle Open World and JavaOne 2011The AMIS Report from Oracle Open World and JavaOne 2011
The AMIS Report from Oracle Open World and JavaOne 2011Lucas Jellema
 
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Lucas Jellema
 
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016 Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016 Lucas Jellema
 
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...Lucas Jellema
 
Oracle LOB Internals and Performance Tuning
Oracle LOB Internals and Performance TuningOracle LOB Internals and Performance Tuning
Oracle LOB Internals and Performance TuningTanel Poder
 
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)Lucas Jellema
 
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...Lucas Jellema
 
Java ain't scary - introducing Java to PL/SQL Developers
Java ain't scary - introducing Java to PL/SQL DevelopersJava ain't scary - introducing Java to PL/SQL Developers
Java ain't scary - introducing Java to PL/SQL DevelopersLucas Jellema
 
Everything That Is Really Useful in Oracle Database 12c for Application Devel...
Everything That Is Really Useful in Oracle Database 12c for Application Devel...Everything That Is Really Useful in Oracle Database 12c for Application Devel...
Everything That Is Really Useful in Oracle Database 12c for Application Devel...Lucas Jellema
 
Tanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder
 
Introducing Node.js in an Oracle technology environment (including hands-on)
Introducing Node.js in an Oracle technology environment (including hands-on)Introducing Node.js in an Oracle technology environment (including hands-on)
Introducing Node.js in an Oracle technology environment (including hands-on)Lucas Jellema
 
Visualization - how one picture beats a 1000 words - and how to leverage that
Visualization - how one picture beats a 1000 words - and how to leverage thatVisualization - how one picture beats a 1000 words - and how to leverage that
Visualization - how one picture beats a 1000 words - and how to leverage thatLucas Jellema
 
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave Donatelli
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave DonatelliSlides for Oracle OpenWorld 2015 Wednesday Keynote by Dave Donatelli
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave DonatelliLucas Jellema
 

Viewers also liked (20)

The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012
 
Speedy perception trumps speedy reception–smart asynchronous interactions (N...
Speedy perception trumps speedy reception–smart asynchronous interactions  (N...Speedy perception trumps speedy reception–smart asynchronous interactions  (N...
Speedy perception trumps speedy reception–smart asynchronous interactions (N...
 
Hadoop, Oracle and the big data revolution collaborate 2013
Hadoop, Oracle and the big data revolution collaborate 2013Hadoop, Oracle and the big data revolution collaborate 2013
Hadoop, Oracle and the big data revolution collaborate 2013
 
Thriving and surviving the Big Data revolution
Thriving and surviving the Big Data revolutionThriving and surviving the Big Data revolution
Thriving and surviving the Big Data revolution
 
Fontys Lecture - The Evolution of the Oracle Database 2016
Fontys Lecture -  The Evolution of the Oracle Database 2016Fontys Lecture -  The Evolution of the Oracle Database 2016
Fontys Lecture - The Evolution of the Oracle Database 2016
 
ADF DVT Speed Dating - Meeting the Gantt Charts
ADF DVT Speed Dating - Meeting the Gantt ChartsADF DVT Speed Dating - Meeting the Gantt Charts
ADF DVT Speed Dating - Meeting the Gantt Charts
 
Introducing Oracle Real-Time Integration Business Insight
Introducing Oracle Real-Time Integration Business InsightIntroducing Oracle Real-Time Integration Business Insight
Introducing Oracle Real-Time Integration Business Insight
 
The AMIS Report from Oracle Open World and JavaOne 2011
The AMIS Report from Oracle Open World and JavaOne 2011The AMIS Report from Oracle Open World and JavaOne 2011
The AMIS Report from Oracle Open World and JavaOne 2011
 
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
 
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016 Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016
Soaring through the Clouds - Oracle Fusion Middleware Partner Forum 2016
 
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Jown Fowler and Juan Lo...
 
Oracle LOB Internals and Performance Tuning
Oracle LOB Internals and Performance TuningOracle LOB Internals and Performance Tuning
Oracle LOB Internals and Performance Tuning
 
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)
SOA - klein en meeslepend (Waternetwerkdag, 17 november 2011, Nieuwegein)
 
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...
The True State of the Oracle Public Cloud - Dutch Oracle Architects Platform ...
 
Java ain't scary - introducing Java to PL/SQL Developers
Java ain't scary - introducing Java to PL/SQL DevelopersJava ain't scary - introducing Java to PL/SQL Developers
Java ain't scary - introducing Java to PL/SQL Developers
 
Everything That Is Really Useful in Oracle Database 12c for Application Devel...
Everything That Is Really Useful in Oracle Database 12c for Application Devel...Everything That Is Really Useful in Oracle Database 12c for Application Devel...
Everything That Is Really Useful in Oracle Database 12c for Application Devel...
 
Tanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata MigrationsTanel Poder - Performance stories from Exadata Migrations
Tanel Poder - Performance stories from Exadata Migrations
 
Introducing Node.js in an Oracle technology environment (including hands-on)
Introducing Node.js in an Oracle technology environment (including hands-on)Introducing Node.js in an Oracle technology environment (including hands-on)
Introducing Node.js in an Oracle technology environment (including hands-on)
 
Visualization - how one picture beats a 1000 words - and how to leverage that
Visualization - how one picture beats a 1000 words - and how to leverage thatVisualization - how one picture beats a 1000 words - and how to leverage that
Visualization - how one picture beats a 1000 words - and how to leverage that
 
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave Donatelli
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave DonatelliSlides for Oracle OpenWorld 2015 Wednesday Keynote by Dave Donatelli
Slides for Oracle OpenWorld 2015 Wednesday Keynote by Dave Donatelli
 

Similar to Thinking Through Enterprise Performance - JavaOne 2012

The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationAmazon Web Services
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Nathan Bijnens
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009pratiknaik
 
Ohio 2012-help-sysad-out
Ohio 2012-help-sysad-outOhio 2012-help-sysad-out
Ohio 2012-help-sysad-outmralexjuarez
 
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...Dan Usher
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processingducquoc_vn
 
July 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessJuly 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessYahoo Developer Network
 
Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012gerardbeckerleg
 
Novedades Denali Integration Services
Novedades Denali Integration ServicesNovedades Denali Integration Services
Novedades Denali Integration ServicesSolidQ
 
Apache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesApache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesDenis Magda
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applicationsAspenware
 
Azug - successfully breeding rabits
Azug - successfully breeding rabitsAzug - successfully breeding rabits
Azug - successfully breeding rabitsYves Goeleven
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soad0nn9n
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEjaxconf
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimizationAlmog Baku
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development WorkflowJeffery Smith
 
Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Tomer Gabel
 
Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)a32an
 
Cloud Computing with .Net
Cloud Computing with .NetCloud Computing with .Net
Cloud Computing with .NetWesley Faler
 

Similar to Thinking Through Enterprise Performance - JavaOne 2012 (20)

The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost Optimisation
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
Ohio 2012-help-sysad-out
Ohio 2012-help-sysad-outOhio 2012-help-sysad-out
Ohio 2012-help-sysad-out
 
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processing
 
July 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessJuly 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification Process
 
Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012
 
Novedades Denali Integration Services
Novedades Denali Integration ServicesNovedades Denali Integration Services
Novedades Denali Integration Services
 
Apache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesApache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database Capabilities
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applications
 
Azug - successfully breeding rabits
Azug - successfully breeding rabitsAzug - successfully breeding rabits
Azug - successfully breeding rabits
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soa
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
 
JBUG.be jBPM4
JBUG.be jBPM4JBUG.be jBPM4
JBUG.be jBPM4
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimization
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development Workflow
 
Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101
 
Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)
 
Cloud Computing with .Net
Cloud Computing with .NetCloud Computing with .Net
Cloud Computing with .Net
 

More from Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Lucas Jellema
 

More from Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Thinking Through Enterprise Performance - JavaOne 2012

  • 1. Lucas Jellema (AMIS, The Netherlands) THINKING THROUGH JAVA ENTERPRISE PERFORMANCE JavaOne 2012, San Francisco
  • 2. OVERVIEW • What is performance? • Where is performance established? • Advanced tuning methods • ISYITF Method for Performance Improvement: – Do not do it … • Architecting Enterprise Java applications for improved performance
  • 4. PERFORMANCE DEGRADATION Response time + 65 %
  • 5. PERFORMANCE Who determines in what way the performance Expectations Measure objectively Business Owner Process Duration Business Objectives Wait time SLAs Availability ≈ Performance Disappearance Hourglass Response time Meaningful response
  • 7. TYPICAL LAYOUT OF ENTERPRISE JAVA APPLICATIONS Performance ≈ Wait for Response Web Browser JEE Application Server RDBMS
  • 8. PERFORMANCE CONTRIBUTORS IN ENTERPRISE JAVA APPLICATIONS Performance ≈ Wait for Response Response = Wait + Processing Web Browser Wait = Network 1 + Response AppServer 1 JEE Application Server Response = Wait + Processing Wait = Network 2 + Response Database 2 Response = Processing RDBMS Processing = internal wait (I/O) + CPU
  • 9. ADVANCED TUNING METHODS • Use StringBuffer rather than plain String concatenation • Use SAX for XML parsing instead of DOM • Carefully select the collection class to use – optimize hashcode() in custom Map implementations • Use profiling tools to identify hotspots in the Java code • Remove Assertions from production code • Find optimal JVM switches through trial-and-error – Focus on GC, Heap size, thread pools • Pool resources and reuse objects rather than recreate • Leverage concurrency features in Java to – speed up time-to-completion through parallel execution – prevent underuse of CPU during I/O operations • Optimize algorithms for sorting, pattern matching, iteration, serialization, …
  • 10. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT The fastest way to perform a task: DO NOT DO IT
  • 11. PREVENT UNNEEDED PROCESSING if ( expensiveEvaluation & someFlag) { ... } if ( someFlag && expensiveEvaluation) { ... }
  • 12. PREVENT UNNEEDED PROCESSING log.debug ( “Outcome step 2: ” + resultOfExpensiveProcessing ); if (log.doDebug) log.debug ( “Outcome step 2: ” + resultOfExpensiveProcessing );
  • 14. THE SHOPPING ALGORITHM • shopForItem Item ( String itemName) { driveToShop; Item item = buyItemAtShop ( itemName); driveHomeFromShop; return item; }
  • 15. GET THIS WEEK’S GROCERIES getGroceries Item[] ( String[] shoppingList) { Item[] items = new Item[ shoppingList.length]; for (int i=0; i < shoppingList.length; i++) { items[i] = shopForItem (shoppingList[i]); } return items; }
  • 16. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT AT ALL MORE OFTEN THAN REQUIRED DO NOT DO IT
  • 20. DO NOT DO IT… MORE OFTEN THAN REQUIRED • If it has been produced before… – Reuse before re-produce! • If it has been shipped before… – Reuse instead of re-ship Web Browser • … provided it is still fresh JEE Application Server RDBMS
  • 21. DO NOT DO IT… MORE OFTEN THAN REQUIRED • Save on network trips, context switches and tiers to cross • Save on ‘reproducing’ same results -JS data (memory) -Cookies Web Browser - HTML 5 db Edge Cache Cache JEE Application Server Cluster Fail-Over (Session State) Result Store Write Behind Client Result Cache Result Cache RDBMS Materialized View
  • 24. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN
  • 26. DO NOT DO IT… ON YOUR OWN • Parallel means: multiple resources contributing to a task at the same time • Leverage multi-core CPU • Achieve scalability and performance with a Cluster • Introduce parallellism into your application – Java: Concurrency (ThreadPools), WorkManager – Database: parallel query and DML , dbms_parallel_execute, dbms_job, parallel table functions – Multi threading: on every tier and even across tiers • Engage compute grid: multi node processing unit – For example: make Hadoop make those nodes work for you (divvy up the work and merge the results)
  • 27. BALANCE RESOURCES TO PREVENT CLOGGING
  • 28. HILTON UNION SQUARE – LAST FRIDAY
  • 29. THE POORLY PERFORMING BUSINESS PROCESS LOAN REQUEST Reject request Check Identity Loan Evaluate request with Federal Fraud Analysis Request Service Transfer Money Max 1 day Max 2 days Max 3 days Max 3 mins 98% is OK 99.99% is OK Max 6 days + 3 mins
  • 30. THAT DINNER IS TAKING MIGHTY LONG… Dinner is Served All are satisfied Max 3 hours + 3 mins
  • 31. THE DINNER PROCESS Dinner is John eats Mary eats Daisy Marty Served soup soup eats soup eats soup Daisy Marty John eats Mary eats eats eats main main main main Daisy John eats All are eats satisfied desert desert Max 3 hours + 3 mins
  • 32. THE SAME DINNER PROCESS John eats John eats soup main John eats Mary eats Mary eats desert Dinner is soup main All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 3 hours + 3 mins
  • 33. THE OPTIMIZED DINNER PROCESS John eats John eats soup main John eats Mary eats Mary eats desert soup main Dinner is All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 1 hours + 3 mins
  • 34. FURTHER OPTIMIZATIONS (IF NOT REFINEMENT) John eats John eats soup main John eats Mary eats Mary eats desert soup main Dinner is All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 53 mins
  • 35. THE POORLY PERFORMING BUSINESS PROCESS LOAN REQUEST Reject request Check Identity Loan Evaluate request with Federal Fraud Analysis Request Service Transfer Money Max 1 day Max 2 days Max 3 days Max 3 mins 98% is OK 99.99% is OK Max 6 days + 3 mins
  • 36. SPEEDING UP THE BUSINESS PROCESS LOAN REQUEST Check Identity with Federal Service Reject request Loan request Fraud Analysis Transfer Evaluate Money Request Max 1 day Max 3 mins Max 2 days Max 3 days Max 3 days + 3 mins
  • 39. PIPELINED PANCAKE PARTY: BEST PERFORMANCE
  • 40. PIPELINING ACROSS THE TIERS • Database: – Pipelined Table Functions – Pipes and Queues • Middle tier: Web Browser – Multiple threads – Queues (JMS) • Client tier: – AJAX “channels” – WebSockets RDBMS
  • 41. THE PINNACLE OF UN-PERFORMANCE
  • 43. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY
  • 44. FIRE AND FORGET IN THE REAL WORLD
  • 45. DO NOT DO IT… IMMEDIATELY (OR SYNCHRONOUSLY) • Submit information, file a complaint or request, start a process, trigger interaction – No immediate response is required! • Asynchronous – Start batch job (db) or worker-thread (java) • Or fire event – Write behind (from grid) (NO SQL) – DML Error log
  • 46. DO NOT DO IT… IN BATCH (UN-IMMEDIATELY) • Batch jobs can put peak load on a system – choking on line applications – Monthly reporting, quarterly prolongation, yearly calculation, • Batch jobs are increasingly unwanted in 24/7 – When is the “nightly” batch window? – Data not current (enough) by today’s standards: “batch has not run yet” • Batch jobs used to be desirable or needed as a result of technical limitations – that may not apply anymore • Continuous, near real-time operations – leveraging events, decoupling and integration architectures – are a serious alternative
  • 47. DON’T CALL US … WE’LL CALL YOU
  • 48. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST
  • 49. DO NOT DO IT… AS PER REQUEST • Push has two key advantages over poll – Most up to date information – Reduction in network traffic and load on server • Push is available in several flavors – Middleware to Browser: comet, ADF Active Data Service, WebLogic Server HTTP Channels, long poll, WebSockets in HTML 5 – Database to Middleware: JMS/AQ, Database Query Result Change Notification, Table Triggers, utl_http push to servlet – “piggy backing” – adding subscribed-to information in regular requests • Event driven architecture is based on push (of events) to mediating event handling infrastructure
  • 50. BITE OFF MORE THAN YOU CAN HAVE TO CHEW
  • 51. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS
  • 52. DO NOT DO IT… IN TOO BIG STEPS • Performance perception is often: time until page is displayed and accessible (hourglass disappears) • Web pages frequently contain much more than is initially visible or even required – Tree nodes, inactive tabs, invisible popups, unopened dropdown lists • Performance perception can be enhanced by not initially loading what is not required • Use AJAX based post-loading to (lazy-)fetch content in subsequent, background round-trips • /*+ First Rows */ vs. /*+ All Rows */
  • 53. PENSION FUND – SEPTEMBER 2012 Employer < > Participants Job & Benefits
  • 54. FETCHING THE DATA OF THE PENSION FUND FOR THE WEB APPLICATION select * 1 record < > from employers where id = < 324> select * 100s records from participants where employer_id = < 324> select * 10s records from benefits where participant_id = <#>
  • 55. REPORTING ON MANY EMPLOYERS select * 100s records from employers 1 query select * 10k records from participants 100s queries where employer_id = <#> select * 100k records from benefits 10k queries where participant_id = <#>
  • 56. SINGLE BULK RETRIEVE REPLACING MULTIPLE QUERIES • Have the database bulk up the data retrieval • Return Ref Cursor, Types and Collections or JSON/XML Benefits Package select * from employers where id in <some set> select * from participants where employer_id in <some set> select b.* from benefits b join participants p on (p.id = b.participant_id) where p.employer_id in <some set>
  • 57. DO NOT DO IT… IN TOO BIG OR TOO SMALL STEPS • Every network round-trip and context-switch adds overhead – Compare dialing the operator for every digit in the telephone number you want to learn about • Bundling up information to reduce the number of round trips can be advantageous for performance – Bring all items from the shop in one round trip – Leverage collections and types, XML or JSON to retrieve complex, structured object graphs from DB – Zipping up multiple web resources in single archive – Mashing up icons or images into a single big picture – Piggy-back information onto requests
  • 60. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY
  • 61. DO NOT DO IT… IN A CONVOLUTED WAY • Pragmatism can overcome theoretical purity (or old dogs’ tricks) – With good reason and well documented • Have client side Java Script directly access Google Maps – by-passing the application server • Have client directly access Database services • Use RESTful (JSON, CSV) rather than WS* and XML between browser client and application server • Use POJOs (Entities) throughout the application, from JPA to Web Tier – rather than copying/transferring • When that suffices, use simple substring i/o parsing big xml in DOM • Pass plain CSV/JSON/XML from DB through Java middle tier to Client when that is appropriate
  • 63. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY IN A SUBOPTIMAL PLACE
  • 64. BOTTLENECK / CRITICAL CHAIN • Make sure that the bottleneck resource in your enterprise application is not used (at peak times) for work that is not critical or that can be outsourced – Use auxiliary resources – outside critical chain – Engage specialized servers, optimized for specific tasks – Manage resources in a strict manner • Resource manager (DB) or Work manager (WLS)
  • 65. DO NOT DO IT… LIVE EVENT PROCESSING IN A SUBOPTIMAL PLACE • The league of real time events – Continuous stream of a multitude of tiny events with hardly any payload, to analyze & aggregate – Sent from physical sensors (temperature, pressure, RFID, security gates), process sensors, Twitter, manufacturing equipment, database triggers, web servers, ESBs, stock trade tickers, sport statistics, RSS, network switches, …
  • 66. DO NOT DO IT… HTML RENDERING IN A SUBOPTIMAL PLACE • (X)HTML is not very compact – Information density of HTML is very low • DHTML, JavaScript & AJAX allow for Web Browser – Dynamic HTML rendering in browser – Dynamic, Partial Page Refresh • Most HTML presented JEE Application Server by application is pre- defined – Dynamic data content fetched from RDBMS or other services is small fraction RDBMS
  • 67. DO NOT DO IT… IN A SUBOPTIMAL PLACE • Do not perform a task in a resource that is not ideally suited for that task – If it directly contributes to overall performance
  • 68. DO NOT DO IT… IN A SUBOPTIMAL PLACE • Leverage database for what it’s good at – Data Integrity – Primary Key /Unique Key /Foreign Key – Aggregation – Sorting – Data Rule enforcement – Bulk DML and Copy data – Analytical Functions, Model clause, Rollup • Specialized engines for – Imaging and Document Processing – Match and Search – Speech Recognition – Cryptography – 3D – Real time Data Processing – ….
  • 69. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY IN A SUBOPTIMAL PLACE
  • 70. ARCHITECT FOR PERFORMANCE Web Browser JEE Application Server RDBMS
  • 71. ARCHITECT(URE) FOR PERFORMANCE Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser -Cookies HTML rendering - HTML 5 local db Validation, Calculation, Parsing “Processing” (image, cryption, compression, SETI) Fire&Forget piggy- Post load back (AJAX) by-pass JEE Application Server
  • 72. ARCHITECT(URE) FOR PERFORMANCE Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser -Cookies HTML rendering - HTML 5 local db Validation, Calculation, Parsing “Processing” (image, cryption, compression, SETI) Fire&Forget push piggy- Post load back (AJAX) by-pass Search Edge Cache Load balancer & Match Sticky ip sessions, Throttling CEP Cache CMS Cluster Fail-Over JEE JEE Compute WorkManager (Session State) App App Parallel Threads Grid Result Store Server Server JMS Crypto Write Behind Node Node Node Image Print Server
  • 73. ARCHITECT(URE) FOR PERFORMANCE by-pass Search Edge Cache Load balancer & Match Sticky ip sessions, Throttling CEP Cache CMS Cluster Fail-Over JEE JEE Compute WorkManager (Session State) App App Parallel Threads Grid Result Store Server Server JMS Crypto Write Behind Node Node Node Image push Print Server Fire&Forget Client Result Post Cache load AQ/JMS HTTP Push DB QRCN Result Cache Aggregation Resource Mgt Materialized Filter & Sort Jobs Data Integrity View Bulk DML Pipelining Parallel Processing CBO RDBMS
  • 74. Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser HTML rendering -Cookies Validation, Calculation, Parsing - HTML 5 local db “Processing” (image, cryption, compression, SETI) Post load Fire&Forget push piggy- back (AJAX) by-pass Edge Cache Load balancer Sticky ip sessions, Throttling CEP Cache JEE JEE CMS Cluster Fail-Over Compute (Session State) App App WorkManager Grid Parallel Threads Result Store Serv Serv JMS Cryp Write Behind erNo erNo to Node de de Image push Print Server Fire&Forget Client Result Post Cache load AQ/JMS HTTP Push DB QRCN Result Cache Aggregation Resource Mgt Materialized Filter & Sort Jobs View Data Integrity Pipelining Bulk DML Parallel Processing CBO RDBMS
  • 75. SUMMARY • Performance requirements are derived from measurable and meaningful business objectives • Unavailability equals Zero Performance – Treat Performance and Availability elements in the same equation • Performance should [also] be addressed in a top-down approach, across all tiers and constituent parts • Some ISYITF guidelines: – Do not do it … [AT ALL | MORE OFTEN THAN REQUIRED | ON YOUR OWN | IMMEDIATELY | AS PER REQUEST | IN TOO BIG OR TOO SMALL STEPS | IN A CONVOLUTED WAY | IN A SUBOPTIMAL PLACE ]

Editor's Notes

  1. Process
  2. Na een upgrade van SOA Suite 10g (ESB) naar OSB 11g, 65% slechtereresponsetijd
  3. Na een upgrade van SOA Suite 10g (ESB) naar OSB 11g, 65% slechtereresponsetijd
  4. ISYITF = it is staring you in the face
  5. Cache – spreekuit: kasjeKastjesBrowser: Client (browser, cookie or Java Script memory; HTML 5 offers persistent, cross session local db like storage)App Server : Edge (WebServer)JVM (and cluster)Cross cluster shared cachedb or memory gridDatabase (not requery at least)
  6. http://thecleancoder.blogspot.com/2010/08/why-clojure.htmlWhat this means is that our computers can still get faster, but only if we put multiple CPUs on a chip.  This is why we&apos;ve seen all these multi-core processors showing up.  And thatmeans that programs that need greater speed will have to be able to take advantage of the multiple cores.
  7. Additional bar tendersNo improved performanceIn fact: some degradation(new) Bottleneck: coffee machinesSystem is I/O bound, increase CPU will only increase the ‘threading overhead’ and degrade performanceSame with more toilets: the washing basins become the new bottle neckSynchronization points
  8. Compare ECT:Unload all containers, than start moving out (train?)Unload one, put on truck and start driving; then unload next one
  9. Plaatje van printerPrint Job wordtnaar printer gestuurdWil je zandloper tot de printer klaar is met de klus?Of een melding ‘job has started’ en doorgaan met je werk
  10. Do not do (synchronous) work in resources that are not ideally equipped/do that work in a suboptimal way
  11. Copy data in PL/SQL (rather than bring from DB to Middletier, copy, send back again)