Title: Strategies For Deploying Java Applications In Your Enterprise Paper 36726 (9/8) @ 1:00PM
1Strategies For Deploying Java Applications In
Your EnterprisePaper 36726 (9/8) _at_ 100PM
People and software for business applications
- Stephen Karniotis
- Technical Alliance Manager Product Manager
- Compuware Corporation
- Stephen.Karniotis_at_Compuware.COM
- www.Compuware.com
2Session Agenda
- Who is Compuware?
- What are the typical application development and
deployment pitfalls? - What are some production deployment pitfalls?
- How to mitigate these problems?
- What technology is available to help?
- Summary
3Compuware Overview
30 Year History -- 12,000 Employees 1.4 Billion
FY 03 -- 6th Largest SW Developer
Global Reach 46 Countries
Professional Services 2900 Customers
Software Products 28,000 Customers
4OptimalView OptimalJ
Uniface FileAid
Vantage VantageView
Fault Manager
Reconcile TrackRecord PointForward
Application
Life Cycle
FileAid
DevPartner Java DevPartnerDB
QACenter Enterprise TestPartner
Application Expert QACenter
Performance Edition
5Yesterdays Development Practices
- Legacy
- Limited number of platforms Mainframes or Large
Severs - Limited development tools COBOL, PL/I or
Assembler - Strict design, coding and deployment standards
- Client/Server
- Multiple disparate platforms tools available
- Some standards, but ineffective across many of
the platforms
6Todays Technology Challenges
- Web-centric
- Very immature technology
- Substantial number of platforms tools available
- Standards lacking or are for limited number of
technologies available - Multiple Development Methodologies
- XP
- BPI
- Code centric vs. Rule centric
7What Has Not Changed
- Meeting business requirements and customer
demands - Demonstrating customer value
- Good customer experience
- Sufficient return on investment
- Positive impact and impressions for the enterprise
8Where We Are Now
- Perceived arrogance within IT
- IT has learned its lesson with Y2K, but still
feels they should drive technology requirements - Return on investment demanded, not suggested
- Quality is absolute, not secondary
- Leverage existing assets for all deployments
9Quality
Cost
Time
10Application Deployment Pitfalls
- Forgot about the customer
- Ignored the primary reason for the application
- Straying from the requirements
- Using cool stuff that really didnt work
- Desired results never achieved
11Look Familiar?
12Design Development Pitfalls
- Poor overall system design
- Choice of technology too early in the process
- Use of unproven or bleeding edge technology
- Integration design insufficient
- Poor application component design
- Excessive use of resources (CPU, Memory, I/O)
- Bad coding practices (unnecessary page
refreshing, etc.)
13Design Development Pitfalls
- Standards dont exist
- Immaturity of Java/J2EE is the common excuse
- Research into industry standards ineffective
- Lack of standards compliance
- Too difficult
- Too restrictive
- Developer pursuit for creativity
14Design Development Pitfalls
- Poor testing strategies
- Testing done in perfect situations
- Failure testing never performed
- Only valid data is used
- Integration testing never performed
- External application communication
- Internal application communication
- Test to fail versus test to succeed!
15Production Deployment Pitfalls
- Infrastructure unable to accommodate new load
- Insufficient bandwidth available
- Incomplete network infrastructure available
- Extra load never defined as part of the
deployment - Java/J2EE dependency on the network is documented
and must be included
16Production Deployment Pitfalls
- Buggy deployments fixed in production
- Directly correlated to lack of proper testing
- Bugs are corrected only in production no
testing of the bug fix performed - Corrections lost if hardware or software upgrades
to infrastructure performed - Application outages
- Caused by above!
- Outages cost money time!!
17Suggested Ways To Improve The Process
- Production Deployment Strategies
- Continual monitoring/managing
- Continual load stress testing
- Repair, test deploy
- Development Strategies
- Design before develop
- Develop in phases
- Test often
- Utilize existing assets versus re-invention
- Quality is king!
- Testing strategies
- Component Testing
- String System Testing
- Infrastructure Testing
- Load Stress Testing
18Design Before Develop
- Complete business process definition
- Model-Driven/Pattern Based Architecture
- UML
- Case Tool technology
- Ignore technology-dependent issues
- Complete application architecture
- Resources and/or Services to provide
- Resources and/or Services to consume
- Complete integration architecture
- Bi-directional communication, requirements, etc.
- Complete application design generate base
application
19Develop Small Test Often
- Develop components first
- Establish common component repository for
reusability - Modify design as code generation is modified to
include common infrastructure components - Develop common infrastructure
- Develop code-stubs
- Test communication between each component before
adding sophistication
20Develop Small Test Often - How
- Oracle JDeveloper 9i
- IDE for creating Java/J2EE applications
- Offers some business workflow/integration
capabilities - Not a true modeling tool
- Compuware OptimalJ
- First to implement OMGs Model Driven
Architecture - Technology agnostic application development tool
for Java/J2EE centric applications - Implements Patterns for business processes and
generates fully-functional applications based on
a visual model
21Improving Development Processes
- OptimalJ
- Reduces application development and deployment
time by implementing a model-driven architecture
for deploying J2EE applications - Allows Java Architects to construct the
application architecture before code is
generated or written - Can deploy Pattern-Based technologies to reduce
the complexity or individuality within
application development projects - Automatically generates all Oracle9iAS specific
deployment descriptors
22Strategic Benefits
- Leverages technology investments within
organization versus purchasing new technology to
deploy to - Developing small helps capture coding problems
early - Helps build the common repository for use by
development teams - Tightens quality of code
23Improving Application Quality
- Component Testing
- Validate the lowest level of the application
before continuing - Validate feature/functionality from ALL points of
entry - Validate code integration for/from all invocation
points - Inspect and reduce consumption of resources
- System (CPU, Memory, I/O)
- Network (transmissions, packets, etc.)
- Validate that code is executed properly and/or
executed at all
24Improving Through Testing
25Strategic Benefits
- Locate coding errors early
- Helps isolate resource consumption problems much
earlier - Helps create string and system test strategy
- If the code is never executed, why does it exist
- Resolve problems before the users do
26Improving Application Quality
- String System Testing
- Complexity of Java/J2EE applications
- Integration with external resources
- Web Services sites
- Internal applications (i.e. HR, Inventory,
etc.) - External web sites (i.e. Credit Processing,
etc.) - Testing individual transactions
- Functional validation
- Isolate both performance and functionality issues
before deployment - Review individual components of specific
transactions for either performance or
functionality issues
27Infrastructure Testing
- Validate construction of infrastructure for
application - Web Server
- Application Server
- Database Server
- Validate
- Interconnectivity
- Communication
- Performance
- Failover
28Load Testing Before Deployment
- Critical step for enterprise-wide application
deployments - Ensure application will withstand the load of
the user community - Must test realistic transactions versus
fictitious transactions - Test must be repeatable
- Java application load testing critical for
validating web interconnectivity
29QACenter Performance Edition
30Production Deployment Improvements
- Managing Change Control
- OEM Change Management Pack
- OEM Diagnostics Pack
- Strict Repair/Test/Resolve policies
- Strict change management policies
- Active monitoring of application performance
after deployment - Planned load test operations during active hours
- Passive monitoring after deployment
- Planned load tests performed in the background
31Production Deployment Improvements
- Vantage
- Application-level diagnosis for
- Performance problems throughout the
infrastructure - Performance issues related to individual
application components - Resource consumption monitoring
- Service level agreement management
- Correlates data for a comprehensive view of the
IT resources for applications
32Technology Complements
33Summary
- Discussed traditional application development
deployment pitfalls - Discuss how Java/J2EE applications are
unfortunately positioned within these pitfalls - Discussed ways to improve application deployments
through - Standards
- Confronting the design issue
- Ensuring quality
- Stress before users rely on the application
- Managing the deployment
34Questions
- Please complete the evaluations!!
35Strategies For Deploying Java Applications In
Your EnterprisePaper 36726 (9/8) _at_ 100PM
People and software for business applications
- Stephen Karniotis
- Technical Alliance Manager Product Manager
- Compuware Corporation
- Stephen.Karniotis_at_Compuware.COM
- www.Compuware.com