SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Real World ADF Design & Architecture Principles
Performance & Tuning
15th Feb 2013 v1.0
3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Learning Objectives
•  At the end of this module you should be able to:
–  How to prepare for performance by design
–  Setting realistic performance expectations
–  What to consider beyond ADF for performance
–  What to tune within the ADF stack
Image: imagerymajestic/ FreeDigitalPhotos.net
4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
•  The requirements document specifies the application must be
"performant"
•  A generic requirement states all pages for all 3 applications must
return a response within ½ second
•  There is a specific requirement on the OStore product search page
that it must be extremely fast
Non Functional Requirements
5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Performance is a runtime goal that at design time is met
by applying programming best practices. What does this
have to do with architecture?
Exercise
Image: imagerymajestic/ FreeDigitalPhotos.net
Shall we drop this session and
have coffee instead?
6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
•  The quest for performance
•  Performance
–  General Considerations
–  ADF Business Components
–  Controller
–  UI Layer
7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Image: Ambro/ FreeDigitalPhotos.net
Performance tuning
shouldn't be an after
thought
8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Security Dependencies
Pick Any Two
Optimize
Memory
Optimize
CPU
Optimize
Network
9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Start As You Mean to Go On
•  Performance goals are part of the requirements
•  Establish those goals
–  Concentrate on the user experience
–  Think “average” rather than min/max
•  Not all functions in the application need the same goals
–  How often and by how many people?
–  What is the user tolerance
•  Inevitably there will also be “reactive” tuning
–  Plan for this in the schedule
10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Example Goal
“The application must accommodate for long periods of time 300
simultaneously active users with response time average not to
exceed 2 seconds.
The application must accommodate a peak load of 600 active users
for short durations of time with response time average not to exceed
7 seconds”
From:
Techniques for Testing Performance/Scalability and Stress Testing
ADF Applications
March 2011
11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
We're going to struggle to meet those
benchmarks. Why?
Exercise
Image: imagerymajestic/ FreeDigitalPhotos.net
12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Preparing Your Baseline
•  Performance needs to be measured objectively and realistically
•  A bad testing regime can skew results vastly
–  Not unusual for results to be out by a factor of 10x ++
–  So get your testing right!
13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Preparing Your Baseline
•  Define a representative workload on critical areas
•  Test continuously or at least at the end of each sprint
–  It’s simpler to identify the cause of a performance problem at the time it
is introduced
–  Test for both atomic performance and performance under stress
–  How confident are you that the performance after a restart and
performance after 5 days running will be the same?
14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Testing Should…
•  Recognize that real users are not computers
–  Define think time (can be used to scale tests)
–  Use a sensible iteration time
•  Define a representative workload
–  Length / nature of task
–  Data distribution / records contention
–  Numbers of users (aim high not low)
•  Be based on production parameters
–  e.g. Session timeout
15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Testing Tools
•  UI unit testing ≠ functional testing ≠ performance testing
–  (Although all are important)
•  Various tools are available for testing but you need more than
screen automation
•  General recommendation suite based products
–  e.g. Oracle Application Testing Suite (OATS)
•  Basically you need specialized staff or something you can write
once and automate for normal developers
16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
But What Can Developers Do?
•  Core testing should be automated or in the hands of professionals
•  But, developers have some responsibilities to prevent or flag issues
–  How often is this fired?
–  How much state am I holding?
–  How many refreshes?
•  This leads us to…
Keeping an amateur eye on performance
17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
“We should forget about small efficiencies, say about
97% of the time: premature optimization is the root of all
evil.”
Structured Programming with go to Statements
Computing Surveys, Vol 6, No 4, 1974; Donald Knuth
18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
In a Nutshell
•  Never assume, never guess, measure
–  Is an n-tier architecture even the correct choice?
•  Make the general assumption that ADF will probably get it right (or
have a way of doing to)
–  Consider the greater cost of do-it-yourself (DIY)
•  Look at the whole application end to end
–  Observation - Most performance issues will be down to SQL
• Elapsed time or over execution
–  Handle corner cases for what they are
Yes there is a design aspect to performance
19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
•  The quest for performance
•  Performance
–  General Considerations
–  ADF Business Components
–  Controller
–  UI Layer
20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
External Factors to Consider
•  Correct O/S setup
–  HugePages, file descriptors etc.
•  JVM
–  Server mode, generational parallel GC, optimized heaps
•  Application server
–  Logging switched off, correct pool sizes
•  HTTP server
–  Processes and threads
•  LDAP
This should only improve matters
21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Interacting With Web Services
•  First of all… Do you need to?
•  Understand the issues
–  Calls are expensive
–  Operations are (generally) atomic
–  None of the usual semantics are standardized – transaction, array
fetching, DML
Performance Choice
22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Designing Dynamic Systems
•  Not wanting to specify an upper limit
–  e.g. tabsets & regions
•  Insisting on a totally dynamic design
–  How often do you actually need to customize?
•  Sticking with existing home-grown customization infrastructure
•  Confusion between customization, personalization and security
configuration
Common issues effecting performance
23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
•  The quest for performance
•  Performance
–  General Considerations
–  ADF Business Components
–  Controller
–  UI Layer
24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Application Modules
•  Take advantage of AM Sharing for “static” shared data
–  ADF Mbeans provide hit rate info – accessible via EM
•  Use optimistic locking (Now the default in 11.1.2+ )
–  Better suited to browser deployed apps
–  Reduce locking & rollback traffic on the DB
•  Avoid dependency on a specific connection
–  For example PL/SQL package state
•  Use Oracle SQL rather than SQL92
•  Enable lazy loading of definitions
Basic Principles
25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
AM Nesting
•  Provides:
–  A service façade / interface
–  Functional use case
–  Test point
–  Transactional container / connection owner
•  Not all AMs are equal
–  Some are functional boundaries, some are conveniences
–  Some are isolated, some are not
What does the AM actually do?
26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Application Module Pooling
•  Stop and read the
documentation!
•  Excellent coverage in Fusion
Developers Guide
–  Chapter 44 in 11.1.2 version
“Tuning Application Module
Pools and Connection
Pools”
27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
What Happens on Passivation / Activation?
•  Passivation
–  Passivation XML created
• Record diffs, current record pointers, bind variables, (transient
attributes) , (custom user data Map)
–  XML written to DB
•  Activation
–  XML read from DB
–  User Map re-populated
–  Prepare session code invoked
–  Queries re-issued and result set scrolled
Scalability at a cost
28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Application Module Pooling
•  Use pooling of course (jbo.doconnectionpooling)
–  Configuration based on user population
• initpoolsize – take the hit at server startup
• Maxavailablesize – to your projected average peak
•  Aim to avoid passivation / activation costs
–  Set recyclethreshold to maxavailablesize
–  Bump up maxinactiveage
–  Set timetolive = -1
–  Could save to up to 30% on response time
Recomendations
29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
What About Database Connections?
•  First of all configure your AMs to use DataSources
–  Abstracts the connection out of the application
•  Think in terms of AM pools rather than database connection pools
–  Assuming 1 Root AM == 1 Connection (ignoring special cases)
•  Sizing
–  Good rule of thumb is that one AM will serve between 10 and 15 users
comfortably
–  Size for peak load based on this.
What you need to do
30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  VOs define the queries - so this is a key area
•  The preference is to not write the SQL manually
–  You can loose out on optimizations
–  Costly SQL is the no 1. performance problem in most systems
•  Base read-only VOs on EOs to use the cache
•  Let the framework optimize attribute selection (wide EOs)
•  Don’t be afraid of multiple VOs and multiple instances
General Principles
31 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Object Tuning Options
32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  Many knobs to turn
–  The defaults are probably not what you need
–  Consider the use case for each VO & build additional VOs or VO
instances if necessary…
•  Primarily consider the batch-size based on the usage
•  Transient attributes – passivate or recalculate?
•  Access Mode is very dependent on the use case
–  Implications of Page-Ranging - memory v’s network
Tuning Options
33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  Fetch Size decides number of records read from DB in one round
trip
–  JDBC implementation pre-allocates memory that matches with fetch size
to hold result set
–  Set fetch size to range size of iterator in the page definition file + 3
–  For UI bound view objects, keep fetch size less than 30(not too high)
–  The fetch size set for view object instance should be the maximum of
range size configured for all iterators bounds to that instance
–  To improve reusability, specify the fetch size at view object usage level or
view accessor level
Detailed Tuning Tips
34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  Maximum Fetch Size decides total number of records that a view
object can retrieve from database
–  It will silently stop retrieving rows when the amount of rows reaches the
max fetch size.
–  It is useful for either setting to 1 if you know you will only work with a
single row at a time, or for setting to a number like 10 for a "Top Ten"
query where you have included an ORDER BY in the query and want to
retrieve only the top ten rows in that sort order
Detailed Tuning Tips
35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  Range Size decides number of records read in to middle tier for a
single data access
–  If there are multiple UI components bound to same iterator, then range
size should be set as the maximum of all rows to be read for all the
bounded components.
–  For range paging access mode, framework uses range size in building
paginated queries
–  Range size set for iterators in page dentition (non zero value) overrides
range size specified for the underlying view object
Detailed Tuning Tips
36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Tuning Tips
•  Globally setting row limit for view objects in an application
–  Row Fetch Limit can be set globally in adf-config.xml (e.g. 500)
–  It prevents a poorly formulated query from fetching a huge number of
rows
–  You can override this at view object level by setting maximum fetch size
or by overriding getRowLimit() in ViewOblectImpl to return the
appropriate value
Tuning Tips for View Objects
37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Tuning Tips
•  Use declarative query mode whenever possible
–  Declarative solution for building query for a view object
–  This mode causes view object to dynamically adjust the SELECT clause
to include only those columns used in the binding definition
–  Not suitable for SQLs with complex WHERE clause
Tuning Tips for View Objects
38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
View Objects
•  Use view criteria to conditionally append WHERE clause to the
query
•  Mark at least one view criteria item as Required or Selectively
Required
•  Index the columns in database table corresponding to the view
criteria items marked as Required or Selectively Required
•  Avoid Contains and Ends With operators since DB index cannot be
used on these queries.
Tuning Tips for View Criteria in a View Object
39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
BC Tuning Gochyas
•  Fault-ins
–  Explicit extra queries needed to populate attributes not directly populated
by the VO
The things we forget
EmpEO
Validation
involving
Sal
Fault-in
Sal
Comm
Sal is required for the validation
EmpVO
EmpNo
FirstName
LastName
Query
2nd Query
(where EmpNo
= :1)
EmpNo
FirstName
LastName
Sal
Comm
40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Fault-Ins
•  A fault-in is not expensive – it’s a key lookup
–  Assuming you have indexes
–  But it’s still one round trip per row (not array fetched)
•  However, it could be a problem when you have 10s/100s of extra
attributes or wide columns
•  Consider including attributes in core VOs if this is likely to effect a lot
of rows
When does it matter?
41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Entity Objects
•  Always set primary key(s),
–  Do not use default RowId. It is not guaranteed to be unique in clustered
environment
•  Avoid list validator
–  If the list returns more rows. It fetches all rows sequentially .
•  Prefer to use get<AttributeName>() or getAttribute(int index)
over getAttribute(String attributeName)
–  For example empEO.getEmpName() is more performant than
empEO.getAttribute(“EmpName”)
Further best practice
42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
•  The quest for performance
•  Performance
–  General Considerations
–  ADF Business Components
–  Controller
–  UI Layer
43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Controller Specific
•  Be aware of the implications of (not) sharing data controls
•  Regions: convenience / reuse vs. cost
–  Each taskflow has an overhead
•  Enable HA and
Customizations
only if needed in
adf-config.xml
44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
•  The quest for performance
•  Performance
–  General Considerations
–  ADF Business Components
–  Controller
–  UI Layer
45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Pre-Deployment Tasks
•  Switch off “development mode” web.xml parameters
–  Well documented in Tables 8-1 / 8-2 in the Oracle Fusion Middleware
Performance and Tuning Guide
e.g. set oracle.adf.view.rich.CHECK_FILE_MODIFICATION
to false
–  In most cases these options are OFF by default so you’ll only need to
override those you have used
The switches you need to flip
46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
ADF Faces Options
•  View State cache – how much page state history do we remember
(for the back button)
–  In web.xml:
–  Default value is 16 (15 old versions retained)
Things you didn’t know you were remembering…
<contextparam>
<paramname>
org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS
</paramname>
<paramvalue>2</paramvalue>
</contextparam>
47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Cache what you can
•  View Root caching
–  Optimization for AJAX UI which tend to have fewer screens
–  When view is changed, last component tree is discarded
<contextparam>
<paramname>
org.apache.myfaces.trinidad.CACHE_VIEW_ROOT
</paramname>
<paramvalue>true</paramvalue>
</contextparam>
48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
ADF Faces Options
•  Compress the View State cache
–  Trades memory for CPU
–  Example customer application:
•  Live memory reduced by 13% at a cost of 4.5% increase in CPU
And Squeeze…
<contextparam>
<paramname>
org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE
</paramname>
<paramvalue>true</paramvalue>
</contextparam>
49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
ADF Faces Options
•  Use WebCache, ADF auto-configures it for you
•  Configure JS and Images to use the resource servlet
–  Sets cache header & reduces server file handle usage
–  e.g. In web.xml:
Enable Resource Caching
<servletmapping>
<servletname>resources</servletname>
<urlpattern>/images/*</urlpattern>
</servletmapping>
<servletmapping>
<servletname>resources</servletname>
<urlpattern>/js/*</urlpattern>
</servletmapping>
50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
ADF Faces Options
Optimize JSP Servlet (11gR1 / R2 + JSPX)
<initparam>
<paramname>load_description_from_tlds</paramname>
<paramvalue>false</paramvalue>
</initparam>
<initparam>
<paramname>jsp_timeout</paramname>
<paramvalue>600</paramvalue>
</initparam>
<initparam>
<paramname>debug_mode</paramname>
<paramvalue>false</paramvalue>
</initparam>
•  Again in web.xml
51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
UI Code Changes
•  Don’t hold on to component references in pageflow / session scope
(UIManager pattern)
–  Breaks high availability, hogs memory and reflects bad coding practices
•  Defer loading for popups and regions in popups where possible
–  childCreation=“deferred” for popups
–  Activation=“conditional” for regions – switch on popupFetch event
(defined in pageDef)
You Certainly Should Make…
52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Components
•  Use short component IDs
–  up to 10% page load time right there..
•  Only use clientComponent flag when actually needed
–  The framework will automatically manage components mentioned
in PPR
•  Use rendered rather than visible to control visibility
–  Less to send to the client
–  More secure
A few things to consider…
53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
PPR
•  PPR needs to be designed
–  Do use PPR whenever you can
–  But, don’t refresh more than you need to
•  Take advantage of the PPR navigation feature
–  When switched on, page transitions become a partial request
–  e.g. on Fusion use cases, saves ~1second on page transition time.
54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
“If you optimize everything you will always be unhappy.”
Donald Knuth
55 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Conclusion
•  Building for performance can occur at the design phase
•  You need to set realistic expectations
•  Tuning absolutely everything will get you no where
56 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Further Reading
•  Oracle Fusion Middleware Performance and Tuning Guide 11.1.1.6.0
–  Section 8 – Oracle ADF Performance Tuning
•  http://bit.ly/VXH6bz
–  Techniques for Testing Performance/Scalability and Stress Testing ADF
Applications
•  http://bit.ly/13xOQTS
57 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
•  The requirements document specifies the application must be
"performant"
•  A generic requirement states all pages for all 3 applications must
return a response within ½ second
•  There is a specific requirement on the OStore product search page
that it must be extremely fast
Non Functional Requirements
58 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle ADF Architecture TV - Deployment - Build Options
Oracle ADF Architecture TV - Deployment - Build OptionsOracle ADF Architecture TV - Deployment - Build Options
Oracle ADF Architecture TV - Deployment - Build OptionsChris Muir
 
Oracle ADF Architecture TV - Design - Application Customization and MDS
Oracle ADF Architecture TV - Design - Application Customization and MDSOracle ADF Architecture TV - Design - Application Customization and MDS
Oracle ADF Architecture TV - Design - Application Customization and MDSChris Muir
 
Oracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlOracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlChris Muir
 
Oracle ADF Architecture TV - Design - Designing for Internationalization
Oracle ADF Architecture TV - Design - Designing for InternationalizationOracle ADF Architecture TV - Design - Designing for Internationalization
Oracle ADF Architecture TV - Design - Designing for InternationalizationChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsChris Muir
 
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsOracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsChris Muir
 
Oracle ADF Architecture TV - Design - MDS Infrastructure Decisions
Oracle ADF Architecture TV - Design - MDS Infrastructure DecisionsOracle ADF Architecture TV - Design - MDS Infrastructure Decisions
Oracle ADF Architecture TV - Design - MDS Infrastructure DecisionsChris Muir
 
Oracle ADF Architecture TV - Design - Project Dependencies
Oracle ADF Architecture TV - Design - Project DependenciesOracle ADF Architecture TV - Design - Project Dependencies
Oracle ADF Architecture TV - Design - Project DependenciesChris Muir
 
Oracle ADF Architecture TV - Design - Designing for Security
Oracle ADF Architecture TV - Design - Designing for SecurityOracle ADF Architecture TV - Design - Designing for Security
Oracle ADF Architecture TV - Design - Designing for SecurityChris Muir
 
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...Chris Muir
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesChris Muir
 
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsOracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsChris Muir
 
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsOracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsChris Muir
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleChris Muir
 
Oracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignOracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignChris Muir
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsOracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsChris Muir
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...Chris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsOracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsChris Muir
 

Was ist angesagt? (20)

Oracle ADF Architecture TV - Deployment - Build Options
Oracle ADF Architecture TV - Deployment - Build OptionsOracle ADF Architecture TV - Deployment - Build Options
Oracle ADF Architecture TV - Deployment - Build Options
 
Oracle ADF Architecture TV - Design - Application Customization and MDS
Oracle ADF Architecture TV - Design - Application Customization and MDSOracle ADF Architecture TV - Design - Application Customization and MDS
Oracle ADF Architecture TV - Design - Application Customization and MDS
 
Oracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version ControlOracle ADF Architecture TV - Development - Version Control
Oracle ADF Architecture TV - Development - Version Control
 
Oracle ADF Architecture TV - Design - Designing for Internationalization
Oracle ADF Architecture TV - Design - Designing for InternationalizationOracle ADF Architecture TV - Design - Designing for Internationalization
Oracle ADF Architecture TV - Design - Designing for Internationalization
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
 
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsOracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
 
Oracle ADF Architecture TV - Design - MDS Infrastructure Decisions
Oracle ADF Architecture TV - Design - MDS Infrastructure DecisionsOracle ADF Architecture TV - Design - MDS Infrastructure Decisions
Oracle ADF Architecture TV - Design - MDS Infrastructure Decisions
 
Oracle ADF Architecture TV - Design - Project Dependencies
Oracle ADF Architecture TV - Design - Project DependenciesOracle ADF Architecture TV - Design - Project Dependencies
Oracle ADF Architecture TV - Design - Project Dependencies
 
Oracle ADF Architecture TV - Design - Designing for Security
Oracle ADF Architecture TV - Design - Designing for SecurityOracle ADF Architecture TV - Design - Designing for Security
Oracle ADF Architecture TV - Design - Designing for Security
 
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...Oracle ADF Architecture TV -  Planning & Getting Started - Team, Skills and D...
Oracle ADF Architecture TV - Planning & Getting Started - Team, Skills and D...
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration Architectures
 
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsOracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
 
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsOracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
 
Oracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignOracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout Design
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service Architectures
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow Overview
 
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsOracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
 
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsOracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
 

Andere mochten auch

Oracle adf performance tips
Oracle adf performance tipsOracle adf performance tips
Oracle adf performance tipsVinay Kumar
 
Adf performance tuning tips slideshare
Adf performance tuning tips slideshareAdf performance tuning tips slideshare
Adf performance tuning tips slideshareVinay Kumar
 
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow Concepts
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow ConceptsOracle ADF Architecture TV - Design - Advanced ADF Task Flow Concepts
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow ConceptsChris Muir
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk MobileChris Muir
 
Future of Oracle Forms AUSOUG 2013
Future of Oracle Forms AUSOUG 2013Future of Oracle Forms AUSOUG 2013
Future of Oracle Forms AUSOUG 2013Chris Muir
 

Andere mochten auch (7)

Oracle application-development-framework-best-practices
Oracle application-development-framework-best-practicesOracle application-development-framework-best-practices
Oracle application-development-framework-best-practices
 
Oracle adf performance tips
Oracle adf performance tipsOracle adf performance tips
Oracle adf performance tips
 
Adf performance tuning tips slideshare
Adf performance tuning tips slideshareAdf performance tuning tips slideshare
Adf performance tuning tips slideshare
 
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow Concepts
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow ConceptsOracle ADF Architecture TV - Design - Advanced ADF Task Flow Concepts
Oracle ADF Architecture TV - Design - Advanced ADF Task Flow Concepts
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk Mobile
 
Joulex & Junos Space SDK: Customer Success Story
Joulex & Junos Space SDK: Customer Success StoryJoulex & Junos Space SDK: Customer Success Story
Joulex & Junos Space SDK: Customer Success Story
 
Future of Oracle Forms AUSOUG 2013
Future of Oracle Forms AUSOUG 2013Future of Oracle Forms AUSOUG 2013
Future of Oracle Forms AUSOUG 2013
 

Ähnlich wie Oracle ADF Architecture TV - Development - Performance & Tuning

Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Lari Hotari
 
Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]Ashish Srivastava
 
Programming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsProgramming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsBerry Clemens
 
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-help
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-helpOtm 2013 c13_e-17a-plessis-elisabeth-otm-self-help
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-helpjucaab
 
206510 p6 upgrade considerations
206510 p6 upgrade considerations206510 p6 upgrade considerations
206510 p6 upgrade considerationsp6academy
 
Performance Assurance for Packaged Applications
Performance Assurance for Packaged ApplicationsPerformance Assurance for Packaged Applications
Performance Assurance for Packaged ApplicationsAlexander Podelko
 
Info dev flexibility in agile
Info dev flexibility in agileInfo dev flexibility in agile
Info dev flexibility in agileAlyssa Fox
 
Introduction to lean and agile
Introduction to lean and agileIntroduction to lean and agile
Introduction to lean and agileTerry Bunio
 
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Datacratic
 
Impact 2013 2963 - IBM Business Process Manager Top Practices
Impact 2013 2963 - IBM Business Process Manager Top PracticesImpact 2013 2963 - IBM Business Process Manager Top Practices
Impact 2013 2963 - IBM Business Process Manager Top PracticesBrian Petrini
 
Performance tuning Grails Applications GR8Conf US 2014
Performance tuning Grails Applications GR8Conf US 2014Performance tuning Grails Applications GR8Conf US 2014
Performance tuning Grails Applications GR8Conf US 2014Lari Hotari
 
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...Cartegraph
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by OracleAkash Pramanik
 
Omc for oracle_ebs_demo_script
Omc for oracle_ebs_demo_scriptOmc for oracle_ebs_demo_script
Omc for oracle_ebs_demo_scriptSyed Irfan
 
Introduction to the IBM Java Tools
Introduction to the IBM Java ToolsIntroduction to the IBM Java Tools
Introduction to the IBM Java ToolsChris Bailey
 

Ähnlich wie Oracle ADF Architecture TV - Development - Performance & Tuning (20)

Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014Performance tuning Grails applications SpringOne 2GX 2014
Performance tuning Grails applications SpringOne 2GX 2014
 
Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]
 
ADF Performance Monitor
ADF Performance MonitorADF Performance Monitor
ADF Performance Monitor
 
Developer day v2
Developer day v2Developer day v2
Developer day v2
 
Programming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsProgramming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionapps
 
Em13c New Features- Two of Two
Em13c New Features- Two of TwoEm13c New Features- Two of Two
Em13c New Features- Two of Two
 
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-help
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-helpOtm 2013 c13_e-17a-plessis-elisabeth-otm-self-help
Otm 2013 c13_e-17a-plessis-elisabeth-otm-self-help
 
206510 p6 upgrade considerations
206510 p6 upgrade considerations206510 p6 upgrade considerations
206510 p6 upgrade considerations
 
Performance Assurance for Packaged Applications
Performance Assurance for Packaged ApplicationsPerformance Assurance for Packaged Applications
Performance Assurance for Packaged Applications
 
Info dev flexibility in agile
Info dev flexibility in agileInfo dev flexibility in agile
Info dev flexibility in agile
 
IBM Agile ALM Overview
IBM Agile ALM OverviewIBM Agile ALM Overview
IBM Agile ALM Overview
 
Introduction to lean and agile
Introduction to lean and agileIntroduction to lean and agile
Introduction to lean and agile
 
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
Profiling of Engagers and Converters with Audience Analytics and Look-alike M...
 
Impact 2013 2963 - IBM Business Process Manager Top Practices
Impact 2013 2963 - IBM Business Process Manager Top PracticesImpact 2013 2963 - IBM Business Process Manager Top Practices
Impact 2013 2963 - IBM Business Process Manager Top Practices
 
Performance tuning Grails Applications GR8Conf US 2014
Performance tuning Grails Applications GR8Conf US 2014Performance tuning Grails Applications GR8Conf US 2014
Performance tuning Grails Applications GR8Conf US 2014
 
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...
Loras College 2014 Business Analytics Symposium | Aaron Lanzen: Creating Busi...
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by Oracle
 
Developer want change Ops want control - devops
Developer want change Ops want control - devopsDeveloper want change Ops want control - devops
Developer want change Ops want control - devops
 
Omc for oracle_ebs_demo_script
Omc for oracle_ebs_demo_scriptOmc for oracle_ebs_demo_script
Omc for oracle_ebs_demo_script
 
Introduction to the IBM Java Tools
Introduction to the IBM Java ToolsIntroduction to the IBM Java Tools
Introduction to the IBM Java Tools
 

Kürzlich hochgeladen

Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

Oracle ADF Architecture TV - Development - Performance & Tuning

  • 1. 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 2. 2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Real World ADF Design & Architecture Principles Performance & Tuning 15th Feb 2013 v1.0
  • 3. 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Learning Objectives •  At the end of this module you should be able to: –  How to prepare for performance by design –  Setting realistic performance expectations –  What to consider beyond ADF for performance –  What to tune within the ADF stack Image: imagerymajestic/ FreeDigitalPhotos.net
  • 4. 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. •  The requirements document specifies the application must be "performant" •  A generic requirement states all pages for all 3 applications must return a response within ½ second •  There is a specific requirement on the OStore product search page that it must be extremely fast Non Functional Requirements
  • 5. 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Performance is a runtime goal that at design time is met by applying programming best practices. What does this have to do with architecture? Exercise Image: imagerymajestic/ FreeDigitalPhotos.net Shall we drop this session and have coffee instead?
  • 6. 6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Program Agenda •  The quest for performance •  Performance –  General Considerations –  ADF Business Components –  Controller –  UI Layer
  • 7. 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Image: Ambro/ FreeDigitalPhotos.net Performance tuning shouldn't be an after thought
  • 8. 8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Security Dependencies Pick Any Two Optimize Memory Optimize CPU Optimize Network
  • 9. 9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Start As You Mean to Go On •  Performance goals are part of the requirements •  Establish those goals –  Concentrate on the user experience –  Think “average” rather than min/max •  Not all functions in the application need the same goals –  How often and by how many people? –  What is the user tolerance •  Inevitably there will also be “reactive” tuning –  Plan for this in the schedule
  • 10. 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Example Goal “The application must accommodate for long periods of time 300 simultaneously active users with response time average not to exceed 2 seconds. The application must accommodate a peak load of 600 active users for short durations of time with response time average not to exceed 7 seconds” From: Techniques for Testing Performance/Scalability and Stress Testing ADF Applications March 2011
  • 11. 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. We're going to struggle to meet those benchmarks. Why? Exercise Image: imagerymajestic/ FreeDigitalPhotos.net
  • 12. 12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Preparing Your Baseline •  Performance needs to be measured objectively and realistically •  A bad testing regime can skew results vastly –  Not unusual for results to be out by a factor of 10x ++ –  So get your testing right!
  • 13. 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Preparing Your Baseline •  Define a representative workload on critical areas •  Test continuously or at least at the end of each sprint –  It’s simpler to identify the cause of a performance problem at the time it is introduced –  Test for both atomic performance and performance under stress –  How confident are you that the performance after a restart and performance after 5 days running will be the same?
  • 14. 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Testing Should… •  Recognize that real users are not computers –  Define think time (can be used to scale tests) –  Use a sensible iteration time •  Define a representative workload –  Length / nature of task –  Data distribution / records contention –  Numbers of users (aim high not low) •  Be based on production parameters –  e.g. Session timeout
  • 15. 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Testing Tools •  UI unit testing ≠ functional testing ≠ performance testing –  (Although all are important) •  Various tools are available for testing but you need more than screen automation •  General recommendation suite based products –  e.g. Oracle Application Testing Suite (OATS) •  Basically you need specialized staff or something you can write once and automate for normal developers
  • 16. 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. But What Can Developers Do? •  Core testing should be automated or in the hands of professionals •  But, developers have some responsibilities to prevent or flag issues –  How often is this fired? –  How much state am I holding? –  How many refreshes? •  This leads us to… Keeping an amateur eye on performance
  • 17. 17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.” Structured Programming with go to Statements Computing Surveys, Vol 6, No 4, 1974; Donald Knuth
  • 18. 18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. In a Nutshell •  Never assume, never guess, measure –  Is an n-tier architecture even the correct choice? •  Make the general assumption that ADF will probably get it right (or have a way of doing to) –  Consider the greater cost of do-it-yourself (DIY) •  Look at the whole application end to end –  Observation - Most performance issues will be down to SQL • Elapsed time or over execution –  Handle corner cases for what they are Yes there is a design aspect to performance
  • 19. 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Program Agenda •  The quest for performance •  Performance –  General Considerations –  ADF Business Components –  Controller –  UI Layer
  • 20. 20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. External Factors to Consider •  Correct O/S setup –  HugePages, file descriptors etc. •  JVM –  Server mode, generational parallel GC, optimized heaps •  Application server –  Logging switched off, correct pool sizes •  HTTP server –  Processes and threads •  LDAP This should only improve matters
  • 21. 21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Interacting With Web Services •  First of all… Do you need to? •  Understand the issues –  Calls are expensive –  Operations are (generally) atomic –  None of the usual semantics are standardized – transaction, array fetching, DML Performance Choice
  • 22. 22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Designing Dynamic Systems •  Not wanting to specify an upper limit –  e.g. tabsets & regions •  Insisting on a totally dynamic design –  How often do you actually need to customize? •  Sticking with existing home-grown customization infrastructure •  Confusion between customization, personalization and security configuration Common issues effecting performance
  • 23. 23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Program Agenda •  The quest for performance •  Performance –  General Considerations –  ADF Business Components –  Controller –  UI Layer
  • 24. 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Application Modules •  Take advantage of AM Sharing for “static” shared data –  ADF Mbeans provide hit rate info – accessible via EM •  Use optimistic locking (Now the default in 11.1.2+ ) –  Better suited to browser deployed apps –  Reduce locking & rollback traffic on the DB •  Avoid dependency on a specific connection –  For example PL/SQL package state •  Use Oracle SQL rather than SQL92 •  Enable lazy loading of definitions Basic Principles
  • 25. 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. AM Nesting •  Provides: –  A service façade / interface –  Functional use case –  Test point –  Transactional container / connection owner •  Not all AMs are equal –  Some are functional boundaries, some are conveniences –  Some are isolated, some are not What does the AM actually do?
  • 26. 26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Application Module Pooling •  Stop and read the documentation! •  Excellent coverage in Fusion Developers Guide –  Chapter 44 in 11.1.2 version “Tuning Application Module Pools and Connection Pools”
  • 27. 27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. What Happens on Passivation / Activation? •  Passivation –  Passivation XML created • Record diffs, current record pointers, bind variables, (transient attributes) , (custom user data Map) –  XML written to DB •  Activation –  XML read from DB –  User Map re-populated –  Prepare session code invoked –  Queries re-issued and result set scrolled Scalability at a cost
  • 28. 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Application Module Pooling •  Use pooling of course (jbo.doconnectionpooling) –  Configuration based on user population • initpoolsize – take the hit at server startup • Maxavailablesize – to your projected average peak •  Aim to avoid passivation / activation costs –  Set recyclethreshold to maxavailablesize –  Bump up maxinactiveage –  Set timetolive = -1 –  Could save to up to 30% on response time Recomendations
  • 29. 29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. What About Database Connections? •  First of all configure your AMs to use DataSources –  Abstracts the connection out of the application •  Think in terms of AM pools rather than database connection pools –  Assuming 1 Root AM == 1 Connection (ignoring special cases) •  Sizing –  Good rule of thumb is that one AM will serve between 10 and 15 users comfortably –  Size for peak load based on this. What you need to do
  • 30. 30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  VOs define the queries - so this is a key area •  The preference is to not write the SQL manually –  You can loose out on optimizations –  Costly SQL is the no 1. performance problem in most systems •  Base read-only VOs on EOs to use the cache •  Let the framework optimize attribute selection (wide EOs) •  Don’t be afraid of multiple VOs and multiple instances General Principles
  • 31. 31 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Object Tuning Options
  • 32. 32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  Many knobs to turn –  The defaults are probably not what you need –  Consider the use case for each VO & build additional VOs or VO instances if necessary… •  Primarily consider the batch-size based on the usage •  Transient attributes – passivate or recalculate? •  Access Mode is very dependent on the use case –  Implications of Page-Ranging - memory v’s network Tuning Options
  • 33. 33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  Fetch Size decides number of records read from DB in one round trip –  JDBC implementation pre-allocates memory that matches with fetch size to hold result set –  Set fetch size to range size of iterator in the page definition file + 3 –  For UI bound view objects, keep fetch size less than 30(not too high) –  The fetch size set for view object instance should be the maximum of range size configured for all iterators bounds to that instance –  To improve reusability, specify the fetch size at view object usage level or view accessor level Detailed Tuning Tips
  • 34. 34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  Maximum Fetch Size decides total number of records that a view object can retrieve from database –  It will silently stop retrieving rows when the amount of rows reaches the max fetch size. –  It is useful for either setting to 1 if you know you will only work with a single row at a time, or for setting to a number like 10 for a "Top Ten" query where you have included an ORDER BY in the query and want to retrieve only the top ten rows in that sort order Detailed Tuning Tips
  • 35. 35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  Range Size decides number of records read in to middle tier for a single data access –  If there are multiple UI components bound to same iterator, then range size should be set as the maximum of all rows to be read for all the bounded components. –  For range paging access mode, framework uses range size in building paginated queries –  Range size set for iterators in page dentition (non zero value) overrides range size specified for the underlying view object Detailed Tuning Tips
  • 36. 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Tuning Tips •  Globally setting row limit for view objects in an application –  Row Fetch Limit can be set globally in adf-config.xml (e.g. 500) –  It prevents a poorly formulated query from fetching a huge number of rows –  You can override this at view object level by setting maximum fetch size or by overriding getRowLimit() in ViewOblectImpl to return the appropriate value Tuning Tips for View Objects
  • 37. 37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Tuning Tips •  Use declarative query mode whenever possible –  Declarative solution for building query for a view object –  This mode causes view object to dynamically adjust the SELECT clause to include only those columns used in the binding definition –  Not suitable for SQLs with complex WHERE clause Tuning Tips for View Objects
  • 38. 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. View Objects •  Use view criteria to conditionally append WHERE clause to the query •  Mark at least one view criteria item as Required or Selectively Required •  Index the columns in database table corresponding to the view criteria items marked as Required or Selectively Required •  Avoid Contains and Ends With operators since DB index cannot be used on these queries. Tuning Tips for View Criteria in a View Object
  • 39. 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. BC Tuning Gochyas •  Fault-ins –  Explicit extra queries needed to populate attributes not directly populated by the VO The things we forget EmpEO Validation involving Sal Fault-in Sal Comm Sal is required for the validation EmpVO EmpNo FirstName LastName Query 2nd Query (where EmpNo = :1) EmpNo FirstName LastName Sal Comm
  • 40. 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Fault-Ins •  A fault-in is not expensive – it’s a key lookup –  Assuming you have indexes –  But it’s still one round trip per row (not array fetched) •  However, it could be a problem when you have 10s/100s of extra attributes or wide columns •  Consider including attributes in core VOs if this is likely to effect a lot of rows When does it matter?
  • 41. 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Entity Objects •  Always set primary key(s), –  Do not use default RowId. It is not guaranteed to be unique in clustered environment •  Avoid list validator –  If the list returns more rows. It fetches all rows sequentially . •  Prefer to use get<AttributeName>() or getAttribute(int index) over getAttribute(String attributeName) –  For example empEO.getEmpName() is more performant than empEO.getAttribute(“EmpName”) Further best practice
  • 42. 42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Program Agenda •  The quest for performance •  Performance –  General Considerations –  ADF Business Components –  Controller –  UI Layer
  • 43. 43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Controller Specific •  Be aware of the implications of (not) sharing data controls •  Regions: convenience / reuse vs. cost –  Each taskflow has an overhead •  Enable HA and Customizations only if needed in adf-config.xml
  • 44. 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Program Agenda •  The quest for performance •  Performance –  General Considerations –  ADF Business Components –  Controller –  UI Layer
  • 45. 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Pre-Deployment Tasks •  Switch off “development mode” web.xml parameters –  Well documented in Tables 8-1 / 8-2 in the Oracle Fusion Middleware Performance and Tuning Guide e.g. set oracle.adf.view.rich.CHECK_FILE_MODIFICATION to false –  In most cases these options are OFF by default so you’ll only need to override those you have used The switches you need to flip
  • 46. 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ADF Faces Options •  View State cache – how much page state history do we remember (for the back button) –  In web.xml: –  Default value is 16 (15 old versions retained) Things you didn’t know you were remembering… <contextparam> <paramname> org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS </paramname> <paramvalue>2</paramvalue> </contextparam>
  • 47. 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Cache what you can •  View Root caching –  Optimization for AJAX UI which tend to have fewer screens –  When view is changed, last component tree is discarded <contextparam> <paramname> org.apache.myfaces.trinidad.CACHE_VIEW_ROOT </paramname> <paramvalue>true</paramvalue> </contextparam>
  • 48. 48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ADF Faces Options •  Compress the View State cache –  Trades memory for CPU –  Example customer application: •  Live memory reduced by 13% at a cost of 4.5% increase in CPU And Squeeze… <contextparam> <paramname> org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE </paramname> <paramvalue>true</paramvalue> </contextparam>
  • 49. 49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ADF Faces Options •  Use WebCache, ADF auto-configures it for you •  Configure JS and Images to use the resource servlet –  Sets cache header & reduces server file handle usage –  e.g. In web.xml: Enable Resource Caching <servletmapping> <servletname>resources</servletname> <urlpattern>/images/*</urlpattern> </servletmapping> <servletmapping> <servletname>resources</servletname> <urlpattern>/js/*</urlpattern> </servletmapping>
  • 50. 50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ADF Faces Options Optimize JSP Servlet (11gR1 / R2 + JSPX) <initparam> <paramname>load_description_from_tlds</paramname> <paramvalue>false</paramvalue> </initparam> <initparam> <paramname>jsp_timeout</paramname> <paramvalue>600</paramvalue> </initparam> <initparam> <paramname>debug_mode</paramname> <paramvalue>false</paramvalue> </initparam> •  Again in web.xml
  • 51. 51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. UI Code Changes •  Don’t hold on to component references in pageflow / session scope (UIManager pattern) –  Breaks high availability, hogs memory and reflects bad coding practices •  Defer loading for popups and regions in popups where possible –  childCreation=“deferred” for popups –  Activation=“conditional” for regions – switch on popupFetch event (defined in pageDef) You Certainly Should Make…
  • 52. 52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Components •  Use short component IDs –  up to 10% page load time right there.. •  Only use clientComponent flag when actually needed –  The framework will automatically manage components mentioned in PPR •  Use rendered rather than visible to control visibility –  Less to send to the client –  More secure A few things to consider…
  • 53. 53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. PPR •  PPR needs to be designed –  Do use PPR whenever you can –  But, don’t refresh more than you need to •  Take advantage of the PPR navigation feature –  When switched on, page transitions become a partial request –  e.g. on Fusion use cases, saves ~1second on page transition time.
  • 54. 54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. “If you optimize everything you will always be unhappy.” Donald Knuth
  • 55. 55 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Conclusion •  Building for performance can occur at the design phase •  You need to set realistic expectations •  Tuning absolutely everything will get you no where
  • 56. 56 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Further Reading •  Oracle Fusion Middleware Performance and Tuning Guide 11.1.1.6.0 –  Section 8 – Oracle ADF Performance Tuning •  http://bit.ly/VXH6bz –  Techniques for Testing Performance/Scalability and Stress Testing ADF Applications •  http://bit.ly/13xOQTS
  • 57. 57 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. •  The requirements document specifies the application must be "performant" •  A generic requirement states all pages for all 3 applications must return a response within ½ second •  There is a specific requirement on the OStore product search page that it must be extremely fast Non Functional Requirements
  • 58. 58 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.