dataservices in the real time enterprise
DESCRIPTION
DataServices in the real time enterprise. Agenda. What is NetJets IntelliJet 1, our legacy IntelliJet 2 Why Persistence Q&A. NetJets – Company overview. Company Overview. Founded in 1964 by Gen. Dick Lassiter Purchased in 1984 by RTS Capital - PowerPoint PPT PresentationTRANSCRIPT
DataServices in the real time enterprise
AgendaAgenda
What is NetJets
IntelliJet 1, our legacy
IntelliJet 2
Why Persistence
Q&A
NetJets – Company overviewNetJets – Company overview
Company OverviewCompany Overview
Founded in 1964 by Gen. Dick Lassiter Purchased in 1984 by RTS Capital Richard Santulli invented fractional ownership
1986 Sold company to Berkshire Hathaway in 1998 for
$725M Aircraft priced in the $5M - $48M range Fly in to 5000 airports Will fly 250.000 flights in 2003 Will fly to 140 countries in 2003 Employs around 2.800 Pilots Around 500 Aircraft worldwide.. and growing “Multi Billion Dollar” company
What is fractional ownership?What is fractional ownership?
Utilize ‘asset’ more efficiently
Build economies of scale
Allow to sell to 3rd party when necessary
…Works because you can move assets around quickly
$5,000
$10,000
$15,000
$20,000
$25,000
$30,000
$35,000
100 200 300 400 500 600
NetJets Full Ownership
Netjets Order bookNetjets Order book
100 CitationJet 3’s 23 Citation Bravos 78 Citation V Ultras 24 Citation Encores 93 Citation Excels
(+7 Options)
17 Citation VIIs 62 Hawker 800XPs
(+9 options)
27 Hawker 1000s 50 Citation Sovereigns
(+50 options)
50 G-150’s (+50 Options)
50 G-200s (+50 options)
81 Citation Xs 74 Falcon 2000s 25 Falcon 2000EXs
(+25 options)
55 Gulfstream IVs 33 Gulfstream Vs 29 BBJs
$21B on order(!) 871 aircraft!
Owner profilesOwner profiles
Our owners are..– 25% public companies– 25% private individuals– 50% private companies
Among which are..– Arnold Schwarzenegger– Tiger Woods– Pete Sampras– Warren Buffet & family (of course..)– many more I can’t talk about!
The IntelliJet family of SoftwareThe IntelliJet family of Software
IntelliJet 1 – Our legacyIntelliJet 1 – Our legacy
Proprietary in-house development Fat Client GUI Borland C++ BTrieve database Server runs on Novell Operating System Sub-second response time under all
conditions Released in 1994
Fleet growthFleet growth
0
50
100
150
200
250
300
350
400
450
500
Jan-93 Jan-94 Jan-95 Jan-96 Jan-97 Jan-98 Jan-99 Jan-00 Jan-01 Jan-02 Jan-03 Jan-04
Time
Fleet Size Introduction of IntelliJet 1
Introduction of IntelliJet 2
IntelliJet 1 – The issuesIntelliJet 1 – The issues
BTrieve database outdated and hard to extract business intelligence– Database is not relational
Overall outdated technology & architecture Business had outgrown the concepts of IntelliJet
1 – Completely passive system; helps you do the
job, does nothing for you Lack of security and auditing features Could not web enable the application Business was changing fast… needed same
level of customer service
IntelliJet 2 - The technology challengeIntelliJet 2 - The technology challenge
Build a system based on industry standards that is – scalable – reliable – Fast response time!– easy to integrate with– ‘up’ 24x7– real-time system– it must support 1000+ concurrent users
Functional scope of IntelliJet 2Functional scope of IntelliJet 2 Data maintenance
– Vendor data– Aircraft performance data– Airport data
CRM – Maintains customer profiles and relationships– Account maintenance
Reservation entry system Billing system Aircraft performance engine Operational system (filing of flight plans,
flight release) Scheduling system
IntelliJet 1 vs. IntelliJet 2IntelliJet 1 vs. IntelliJet 2
Collects profile data in ‘free from text notes’
Passive time line Data repository Monthly largely
manual billing process Designed to automate
operation of ‘dozens’ of aircraft
Loosely integrated with 3rd party systems
Profile data in structured format
Active timeline Automation and
workflow Real time billing process
that is mostly automated
Designed to scale to 1000’s of aircraft and 1000’s of users
Strong integration points with 3rd party systems
Why Data Services…Why Data Services…
Architectural RequirementsArchitectural Requirements
We knew we wanted a– Distributed system running on commodity hardware– High levels of reliability– System that could deliver near instant response
times– Scale seamlessly– approach based on industry standards
• J2EE• Oracle• OO-approach
We needed data services..
Reason 1Reason 1 : Complexity: Complexity
ContractVariation
(from Contract)
JeppesenJetPlan
(from Flight)
<<Singleton>>
One crew log entry per crew member per
completed leg.
SingleCheckCRO
(from Flight CRO/CUOs)
FeasibilityResultsCRO
(from Flight CRO/CUOs)...)
Task
(from Reservation)
Taskable
(from Reservation)
<<Interface>>... >>
ManualWatch
(from Flight)
ETDOffsetWatch
(from Flight)
LateDepartureWatch
(from Flight)
SingleCheck
(from Flight)
SlotTask
slotID : int
(from Flig...
FlightPlanAlerts
(from Flight)
CruiseMode
(from Flight)
EqualTimePoints
(from Flight)
FlightProfile
(from Flight)
AlternateAirport
(from Flight)
EJCrewLogEntry
(from Crew)
FileAndReleaseF
lightPlanTask(from Flight)
FeasibilityResult
(from Flight)
RequiredSlot(from Flight)
Slot(from Airport)
FlightPlan
(from Flight)
QCReview
(from Flight) FlightRelease
(from Flight)
Maintenance
Release
(from Flight)
LegWatch
(from Flight)
WatchComment
(from Flight)
Watch
(from Flight)
0..n
1
0..n
1
theFeasibilityResult
1
0..1
1
0..1
theSlotTask
0..n
1
0..n
1
applicableFlightPlan
0..n
1
0..n
1
theFlightPlan
0..*
1
0..*
1
theFlightPlan
0..n
1
0..n
1
theFlightPlan
Creates1
0..*
0..1
0..1
0..1
0..1 theDeparturePlan
0..n
0..1
0..n
0..1
theArrivalPlan
0..n1 0..n1 theWatch
PicFlightChecks(from Crew)
PilotAircraftQualification(from Crew)
Training(from Crew)
LockDates(from Crew)
EJCrewMember
(from Crew)
EquipmentTraining(from Crew)
Miscellaneou
sTraining
(from Crew)
NonEJActivityLogEntry
(from Crew)
CrewMember
(from Crew)
ApprovalAndPart135Currency
(from Crew)
NonEJCrew
Member(from Crew)
AccountCrewMember
(from Crew)
EJCrewLogEntry
(from Crew)
CommunicationLog
(from Crew)
SimulationTime
(from Crew)
CommLogEntry
(from Crew)
MessageType
(from Crew)
CharterVendor
CrewMember(from Crew)
MessageSystem
(from Crew)
MessageField(from Crew)
HoursCur
rency(from Crew)
HourlyNotes
(from Crew)
DutyDayNotes
(from Crew)
DutyDay(from Crew)
Designated
DutyRest(from Crew)
CrewMovementRe
questDutyDay(from Crew)
CrewMovementDutyDay
(from Crew)
CrewMovement
(from Crew)
AirlineMovement
(from Crew)
RequestedC
rewHotel
(from Crew)
HotelVendor(from Vendor)
BriefingStatus(from Flight Scheduling))
CrewMovementRequest
(from Crew)
CrewTask
(from Crew)
Task)
GroundMovement
(from Crew)
0..n
1
0..n
1
theEJCrewMember
0..n
1
0..n
1theEJCrewMember
0..1
1
0..1
1
theEJCrewMember
0..1
1
0..1
1
theEJCrewMember
0..n
1
0..n
1
theEJCrewMember
0..1
1
0..1
1
theEJCrewMember
1
0..n
1
0..n
theNonEJActivityLogEntries
+theCrewMember
0..1
+theCrewMember
0..1+theCrewMember1
+XtheCrewMember
1
+theCrewMember
1
1
0..n
1
0..n
approvalAndPart135Currencies
+theEJCrewLogEntries
0..n
1
0..n
1
0..1
1
0..1
theCommLog
1
0..n
1
0..n
theSimulationTime
0..n
1
0..n
1
theCommunicationLog
0..n
1..1
0..n
1..1
theMessageSystem
0..n
0..1
0..n
0..1
theMessageSystem
0..1
0..n
0..1
0..n
theMessageFields
0..1
1
0..1
1
theHoursCurrency
+theHourlyNotes
0..n0..n
1
+theHourlyNote
0..1
+XtheDutyDayNotes0..n
+XtheDutyDay1
+XtheDutyDay
11
0..n
+XtheDutyDay
0..1+XtheDutyDay
0..1
+XtheDutyDays
0..n0..n
1
+XtheDutyDay
1..1
+XtheDutyDay
0..10..1
0..1
+XtheDesignatedDutyRest0..10..1
1
+theCrewMovementRequestDutyDays
0..n
0..1
0..n
+XtheCrewMovementRequestDutyDays
0..n
0..1
0..n
1
0..n
1
0..n
theCrewMovementDutyDays
1
0..n
1
0..ntheCrewMovementDutyDays
+theRequestedCrewHotels
0..n
0..1
0..n
+XtheRequestedCrewHotels
0..n0..n
0..1
0..n
0..1
0..n
0..1
theHotelVendor
0..n
0..1
0..n
0..1
theCrewMovement
0..1
0..n
0..1
0..n
theBriefingStatuses
+XtheBriefingStatuses
0..n
1..1
0..n
1
0..n
1
0..n
theCrewMovementRequestDutyDays
0..1
0..n
0..1
0..n
theBriefingStatuses
0..n
0..1
0..n
0..1
theCrewMovementRequest0..n
0..1
0..n
0..1
theRequestedCrewHotel
GroundVehicleType
(from Vendor)
GroundAirportInfo
(from Vendor)
CateringAirportInfo(from Vendor)
FuelBrand
(from Vendor)
Vendor
(from Vendor)... )
Rankable
(from Vendor)
FBOChain
(from Vendor)
VendorContact
(from Vendor)
CharterVendor
(from Vendor)
1
0..n
1
0..n
theCharterVendorCrewMembers
+theVendorContacts
+theCharterVendor
1..1
0..n
1..1
0..n
StaticDemo
(from Plane)
BaggageArea
(from Plane)
EJMovement
(from Crew)
GroundVendor
(from Vendor)
10..n
+theGroundVendor
1
+theGroundVehicleTypes
0..n
1
0..n
+theGroundVendor
1
+theGroundAirportInfo
0..n
RequestedRentalAuto
(from Reservation)0..n
0..1+theRequestedRentalAuto
0..n
+theGroundVendor
0..1
RequestInstruction
(from Reservation)
SuggestedStop(from Reservation)
SchedulingNote
(from Reservation)
RequestedFuel
(from Reservation)
RequestedOtherGround
(from Reservati...
CateringVendor
(from Vendor)
1
0..n
+theCateringVendor
1
+theCateringAirportInfo
0..n
LegTask
(from Reservation)0..n
0..1
0..n
0..1
theRequiredSlot
0..n
0..1
0..n
0..1
theQCReview
0..1
0..n
0..1
0..n
theLegTasks
FBO(from Vendor)...)1
0..n
+theFBO
1
+theFuelBrand
0..n
0..1
0..n
+theChain
0..1
+theFBOs
0..n
0..n
1
+theStaticDemos0..n
+theFBO
1
0..n
0..1
+theRequestedRentalAutoByFBO
0..n
+theGroundServiceFBO0..1
RequestedLateOps(from Reservation)
0..1
0..n
+theRequestedLateOps
0..1
+theLegTasks
0..n
0..n
1
+theRequestedLateOps
0..n
+theRequestedLocation1
RequestedHangarSpace
(from Reservati... 0..1
0..n
+theRequestedHangarSpace
0..1
+theLegTasks
0..n
0..n
1
+theRequestedHangarSpaces
0..n
+theRequestedLocation
1
RequestedCatering
(from Reservation)... )
0..n
0..1
+theRequestedCatering0..n
+theCateringVendor
0..1
theRequestedCatering
0..1
0..n
+theRequestedCatering
0..1
+theLegTasks
0..n0..n
1
+theRequestedCaterings0..n
+theRequestedLocation
1
0..n
0..1
+theRequestedCateringByFBO0..n
+theCateringServiceFBO
0..1
Requested
Ground(from Reservation)...)
0..n
0..1
+theLegTasks0..n
+theRequestedGround
0..1
1
0..n
+theRequestedLocation
1
+theRequestedGrounds
0..n
Leg(from Flight)
0..n
1
+XtheEJCrewLogEntry
0..n
+XtheLeg1
theLeg
1
0..1
+XtheLeg
1
+XtheFileReleaseFlightPlanTask0..1
theFileReleaseFlightPlanTask
1
0..n
+XtheLeg
1
+XtheFeasibilityResults
0..n
theFeasibilityResults
0..1
0..1
+XtheDepartureRequiredSlot
0..1
+XtheDepLeg
0..1
theDepLeg
0..1
0..1
+XtheArrivalRequiredSlot
0..1
+XtheArrLeg0..1
theArrLeg
0..1
0..1
+XtheDepartureLeg
0..1
+XdepartureSlot0..1
departureSlot
0..1
0..1
+XtheArrivalLeg
0..1
+XarrivalSlot
0..1
arrivalSlot
+0..1
0..1
0..1
+XslotHeldForPrecedingConn
0..1
+XlegHoldingForPrecedingConn
0..1
legHoldingForPrecedingConn
0..1
0..1
+XslotHeldForSucceedingConn0..1
+XlegHoldingForSucceedingConn
0..1
legHoldingForSucceedingConn
+0..1
0..n
1..1
+XtheFlightPlan
0..n
+XtheLeg
1..1
theLeg
1
0..1
+XtheLeg
1
+XtheQCReview0..1
theQCReview
1
0..n
+XtheLeg
1
+XtheLegTasks
0..n
theLegTasks
0..1
1..1
+XtheFlightRelease0..1
+XtheLeg
1..1
theLeg
1..1
0..1
+XtheLeg
1..1+XtheMaintenanceRelease
0..1
theMaintenanceRelease
1
0..n
+XtheLeg
1
+XtheLegWatches
0..n
theLegWatches
0..n
1
+XtheDepartureLeg
0..n
+XtheDepartureFBO
1
0..n
1
+XtheArrivalLeg
0..n
+XtheArrivalFBO
1
1
0..n
+XtheLeg
1
+XtheSuggestedStops
0..n
0..n
0..1
+XtheDepRequestedGround
0..n
+XtheDepartureLeg
0..1
0..n
0..1
+XtheArrRequestedGround
0..n
+XtheArrivalLeg
0..1
1
0..1
+XtheLeg
1
+XtheRequestedFuel
0..1 0..1
0..n
+XtheDepartureLeg0..1
+XtheDepRequestedHangarSpace
0..n
0..1
0..n
+XtheArrivalLeg 0..1
+XtheArrRequestedHangarSpace
0..n
0..1
0..n
+XtheDepartureLeg
0..1
+XtheDepRequestedLateOps
0..n
0..1
0..n
+XtheArrivalLeg
0..1
+XtheArrRequestedLateOps
0..n
0..1
0..n
+XtheCustomerDepartureLeg0..1
+XtheDepRequestedCustomerCatering
0..n
0..1
0..n
+XtheCustomerArrivalLeg0..1
+XtheArrRequestedCustomerCatering
0..n
0..1
0..n
+XtheCrewDepartureLeg0..1
+XtheDepRequestedCrewCatering
0..n0..n
0..1
+XtheArrRequestedCrewCatering
0..n
+XtheCrewArrivalLeg0..1
AuditTrailItem
(from Reservation)
0..n
0..1
+theAuditTrailItems
0..n
+theRequestedLateOps 0..1
0..n
0..1
+theAuditTrailItems
0..n
+theRequestedHangarSpace0..1
0..n
0..1
+theAuditTrailItems
0..n
+theRequestedCatering
0..1
0..n
0..1
+theAuditTrailItems
0..n
+theRequestedGround
0..1
0..1
0..*
+XtheLeg
0..1
+XtheAuditTrailItems
0..*
Individual
)
0..1
1
0..1
1
theIndividual
ContactPerson
(from Reservation)
0..n
0..1
+theContactPersons
0..n
+theIndividual
0..1
Reservation
(from Reservation)... )
+theBookingAgent
+theBookedReservation
0..1
0..1
0..1
0..1
Request
(from Reservation)... )
0..n
1
+theEJMovements
0..n
+theRequest
10..1
0..1
+thePreviousRequest0..1
+theNextRequest
0..1
0..n
1
+XtheLegs
0..n
+XtheRequest
1 0..n
0..1
+theApprovedRequest
0..n
+theApprovedByIndividual
0..1
1
0..n
+theReservation
1
+theRequests
0..n
0..n
1..1
+theRequestInstructions0..n
+theRequest
1..1
0..10..n
+theRequest
0..1
+theSchedulingNotes
0..n
0..1
0..n
+theRequest
0..1
+theAuditTrailItems
0..n
ProgramAirp
ortWaiver
(from Contract)ResponseTimeA
ndCancelMin
(from Contract)
EJCompany(from Common)
1
0..n
1
0..n
theCompanyCrewMember
AircraftTail
(from Plane)
0..n
0..1
+theStaticDemos
0..n
+theAircraftTail 0..1
0..1
0..n +theTail
0..1
+theBaggage
0..n
0..n
0..1
+theAuditTrailItems
0..n
+theTail
0..1
AccrualDate
(from Contract)
AircraftPerDay
(from Contract)
ContractTemplate
(from Contract)
AircraftPerDayCombination
(from Contract)
1
0..n
+theAircraftPerDay1
+theAircraftPerDayCombinations0..n
AircraftShareValue
(from Contract)
1
0..n
+theAircraftPerDayCombination1
+theAircraftShareValues0..n
{number of values = number of contract
associated with Aircraft per day}
ContractHours(from Contract)
Airport
(from Airport)
1
0..n
1
0..n
theArrivalAirlineMovement
1
0..n
1
0..n
theDepartureAirlineMovement
0..1
0..n
0..1
0..n
theArrivalGroundMovement
0..1
0..n
0..1
0..n
theDepartureGroundMovement
0..n
1
0..n
1
theAirport+1
1
0..n
1
0..n
theArrivalCrewMovementRequests
1
0..n
1
0..n
theDepartureCrewMovementRequests
0..n
0..1
0..n
0..1
theAirport
0..1
0..n
+XtheTurnOffLocation
0..1
+XtheDutyDays
0..n
0..n
1
+theGroundAirportInfo
0..n
+theAirport
1
0..n
1
+theSuggestedStops0..n
+theSuggestedAirport
1
Airport
(from Airport)
0..10..n0..1
closestTo
0..n
0..1
0..n
0..1
reportingFor
0..n
0..n
1..1
0..n
1..1
theAlternateAirport
0..n
0..1
0..n
0..1
theHomebase
+0..1
0..1
0..n
0..1
0..n
planPOAAirport 0..1
0..n
0..1
0..n
planPODAirport
0..n
1
+theFBOs
0..n
+theAirport1
{Ordered}
0..n
1
+theCateringAirportInfo
0..n
+theCateringAirport
1
1
0..n
+theAirport
1
+theProgramAirportWaiver
0..n
AirportPair
(from Contract)
0..n
1
+theAirportPair1 0..n
+theAirport1
1
+theAirport2
+theAirportPair2
0..n
1
0..n
1
ContractCha
ngeLog(from Contract)FuelCharge
(from Contract)InternationalPositioningMin
(from Contract)
MonthlyFlatFee(from Contract)
PeakDate(from Contract)
ContractCharge(from Contract)
PrePayment(from Contract)
+XtheContractCharge
+XthePrePayments
0..n
1
0..n
1
ContractBase(from Contract)
1
0..n
+theContractOrTemplate
1+theResponseTimesAndCancelMins
0..n
0..n
1
+theContractHours
0..n
+theContractOrTemplate
1
1
0..n
+theContractOrTemplate1
+theFuelCharges
0..n
1
0..n
+theContractOrTemplate
1
+theInternationalDailyMins
0..n
1
0..n
+XtheContractOrTemplate1
+XtheMonthlyFlatFees
0..n
Interchange
(from Contract)
0..1
0..n
+theContractOrTemplate
0..1
+theInterchanges0..n
AircraftType
(from Plane)
1
0..n
1
0..n
theApprovalAndPart135Currencies
0..n
1
0..n
1
theAircraftType
0..1
0..n
0..1
0..n
theTraining
0..1
0..n
0..1
0..n
thePicLastInstFlightChecks
0..1
0..n
0..1
0..n
theNextInstPicFlightChecks
1
0..n
1
0..n
theLockDates1
0..n
1
0..n
theSimulationTime
1
0..n
+theAircraftType
1
+theStaticDemos
0..n
0..1
0..n
+theType0..1
+theBaggage0..n
0..n
1
+theRequests
0..n
+theRequestedAircraftType
1
0..n
0..1
+theAssocRequests
0..n
+theGuaranteedAircraftType
0..1
0..n
1
+theContractsAndTemplates
0..n
+theAircraftType
1
0..n
1
+theFromInterchanges
0..n
+theFromAircraftType
1
+theToInterchanges
+theToAircraftType
1
0..n
1
0..n
ContractBillingPercentage
(from Reservation)
1
0..n
+theRequest
1+theContractBillingPercentages
0..n
{Sum of all ContractBillingPercentages should = 100%}
Contract
)
0..n
1
+theContracts
0..n
+theAccountingCompany
1
0..n
0..1
+theContracts
0..n
+theAircraftTail
0..1
0..n
1
+theAccrualDates
0..n+theContract
1
0..n
0..1
+theContracts0..n
+theContractTemplate
0..1
0..1
0..n
+theBillingContract
0..1
+theBillingContractVariations0..n
0..1
0..n
+theOperationalContract
0..1
+theOperationalContractVariations0..n
0..1
0..n
+theContractualContract
0..1
+theContractualContractVariations0..n
0..n
1
+theAircraftShareValues
0..n
+theContract
1
0..n
1
+theContractChangeLog0..n
+theContract
1
0..n
1
+thePrePayments
0..n
+theContract
1
Division(from Contract)...)
0..n
1
+thePercentageOfRequestBilled
0..n
+theBilledDivision
1
+theContract
+theDivisions0..n
1
0..n
1
Reason 2 : VolumeReason 2 : Volume
9 tabs of information For one individual(!)
Reason 3: SpeedReason 3: Speed
L
VC
BatchSystem
LC
V
Client-Server
V
L
C
IntelliJet 2
V = Importance of volume of Transaction (throughput)L = Importance of response timeC = Complexity of transaction
A unique combination of requirementsA unique combination of requirements
Avoid Database roundtrips– Need extensive caching
Scalability and reliability– Distributed system
Support complexity– Mature architectural infrastructure– Object Relational Mapping
Why PersistenceWhy Persistence
Java back-end was a corporate mandate
Excluded ‘straight JDBC’ as a realistic option
Compared product to BEA and IBM + O/R Mapping tools
Unique combination of features
Best tool to implement complex real-time data model
Proven ‘core’ of product
IntelliJet 2 – The implementationIntelliJet 2 – The implementation
IntelliJet 2, the numbersIntelliJet 2, the numbers
103k function points 10x the scope of the predecessor system,
IntelliJet 1 About 300 Entity Beans 50-100 session beans 21Gb collected in 6 months 500 concurrent user 30 developers 3 years of development
Logical Architecture overview - currentLogical Architecture overview - current
Large grained SB methods All access to data via
session beans Completely stateless
server Business logic contained
in mid-tier J/Integra for COM
Integration
Entity Beans
Session Beans
J/Integra
Visual Basic GUI
Oracle 9i
EventServer
Timeline
Why not Web Based?Why not Web Based?
Unfortunately Web Based GUI’s are not rich enough to support the needs of the business
Java ‘Thick clients’ – Java community only marginally successful at non web
based clients– Data showed development would take significantly
longer
Visual Basic is relatively easy to ‘hook up’ to Java
Fast and cheap to develop.. users like it..
Architecture overview - futureArchitecture overview - future
Move to EdgeXtend Standardize on BEA Move to Oracle RAC Replace J/Integra with
SOAP Allow diverse system
through a unified interface with web services
Modularize system as much as possible
Oracle 9i
EventServer
BEA
EdgeXtend
SO
AP
Visual Basic .NET
Portal Java
JSR 168other..
A word about web services..A word about web services..
My take on web services– Simply put.. it is plumbing– More momentum than any other technology since HTML– Will ease/replace EAI– Move toward ‘content rendering’– Will re-vitalize the ASP as a WSP
MapPoint Web ServiceSabreCredit Card processing
What it’s not– Standardized sufficiently– Panacea for data problems– A unifier of data concepts (important distinction!)
OASIS, OpenTravel.org etc are!
Hardware serversHardware servers
Started out with Dual Enterprise class Sun E3500 – 6-CPU’s– 3Gb of Memory
Standardized to Dell 2650’s– Windows 2000 Advanced Server– Dual Xeon 2.8Ghz– 4Gb of RAM– 2 x 1Gb Ethernet
Hardware - Database ServersHardware - Database Servers
Started out with Dual Enterprise class Sun E3500 – 6-CPU’s– 3Gb of Memory
Replaced with 3 Sun V880’s – 6 Processors 1Ghz
Moving to RAC 9i on Intel/Linux
EMC Clariion 4700
Timeline & EventServersTimeline & EventServers
Timeline – problem statementTimeline – problem statement
Provide lot of data in a Gant-Chart type format to a thousand users in real time and allow them to navigate the data at very high speed
– Design cannot be statelessAmount of data per day in the 10Mb range
(Java memory usage)Network bandwidth constraints (‘only’
100Mb available)Guaranteed delivery
– Heavy use of caching on client and server– Pub-Sub model
Screenshots - TimelineScreenshots - Timeline
TimeLine – Logical ArchitectureTimeLine – Logical Architecture
PowerTierEntity Beans
View Nodes, representation of visual day for all aircraft
Data Nodes, representation of data
Client Side Cache
Visual Basic
J/Integra
3 – 5 days
1 day
Filtering
Users can ‘opt out’ of certaindata
TimeLine Performance CharacteristicsTimeLine Performance Characteristics
Can support around 500 users on a Dell 2650
Loading a day of history is around 15 seconds
Average publishing time to client on order of 15ms
Maximum throughput around 500 Events/sec
Limited primarily by VM stability and memory
Lessons learnedLessons learned
Real Time enterprise system require specialized architectures including data services solutions
Highly multi-threaded Java applications can be extremely complicated to debug
Java VM’s are surprisingly unstable under high load conditions
Lessons learnedLessons learned
Complex real-time systems ‘push buttons’ vendors are not used to dealing with
Coding business logic in J2EE is harder than it should be!
Combining Microsoft and Java technologies is achievable
Building a real time enterprise system enables new levels of service to our customers, but is not for the ‘faint of heart’
Q & AQ & A