dataservices in the real time enterprise

37
DataServices in the real time enterprise

Upload: morrison

Post on 22-Jan-2016

29 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: DataServices in the real time enterprise

DataServices in the real time enterprise

Page 2: DataServices in the real time enterprise

AgendaAgenda

What is NetJets

IntelliJet 1, our legacy

IntelliJet 2

Why Persistence

Q&A

Page 3: DataServices in the real time enterprise

NetJets – Company overviewNetJets – Company overview

Page 4: DataServices in the real time enterprise

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

Page 5: DataServices in the real time enterprise

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

Page 6: DataServices in the real time enterprise

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!

Page 7: DataServices in the real time enterprise

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!

Page 8: DataServices in the real time enterprise

The IntelliJet family of SoftwareThe IntelliJet family of Software

Page 9: DataServices in the real time enterprise

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

Page 10: DataServices in the real time enterprise

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

Page 11: DataServices in the real time enterprise

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

Page 12: DataServices in the real time enterprise

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

Page 13: DataServices in the real time enterprise

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

Page 14: DataServices in the real time enterprise

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

Page 15: DataServices in the real time enterprise

Why Data Services…Why Data Services…

Page 16: DataServices in the real time enterprise

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..

Page 17: DataServices in the real time enterprise

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

Page 18: DataServices in the real time enterprise

Reason 2 : VolumeReason 2 : Volume

9 tabs of information For one individual(!)

Page 19: DataServices in the real time enterprise

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

Page 20: DataServices in the real time enterprise

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

Page 21: DataServices in the real time enterprise

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

Page 22: DataServices in the real time enterprise

IntelliJet 2 – The implementationIntelliJet 2 – The implementation

Page 23: DataServices in the real time enterprise

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

Page 24: DataServices in the real time enterprise

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

Page 25: DataServices in the real time enterprise

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..

Page 26: DataServices in the real time enterprise

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..

Page 27: DataServices in the real time enterprise

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!

Page 28: DataServices in the real time enterprise

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

Page 29: DataServices in the real time enterprise

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

Page 30: DataServices in the real time enterprise

Timeline & EventServersTimeline & EventServers

Page 31: DataServices in the real time enterprise

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

Page 32: DataServices in the real time enterprise

Screenshots - TimelineScreenshots - Timeline

Page 33: DataServices in the real time enterprise

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

Page 34: DataServices in the real time enterprise

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

Page 35: DataServices in the real time enterprise

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

Page 36: DataServices in the real time enterprise

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’

Page 37: DataServices in the real time enterprise

Q & AQ & A