System Update 2010 CrossRef Workshops

66
The QS How did we build the new query system?

Transcript of System Update 2010 CrossRef Workshops

Page 1: System Update 2010 CrossRef Workshops

The QS

How did we build the new query system?

Page 2: System Update 2010 CrossRef Workshops

Development Team

Andrew Gilmartin, Chuck Koscher, Evans Lin, Hisham Shahtout

Page 3: System Update 2010 CrossRef Workshops

1. Interesting parts of the QS

2. Experiences building the QS

3. Lessons learned for the DS

Page 4: System Update 2010 CrossRef Workshops

Tools

modern, but not too modern

Page 5: System Update 2010 CrossRef Workshops

NetBeans 6.[89]

technique sharing, tool building

Page 6: System Update 2010 CrossRef Workshops

Java 6

generics, annotations, oh my!

Page 7: System Update 2010 CrossRef Workshops

Tomcat 5.5

servlets are components too*

Page 8: System Update 2010 CrossRef Workshops

HAProxy 1.4

http://haproxy.1wt.eu/

Page 9: System Update 2010 CrossRef Workshops
Page 10: System Update 2010 CrossRef Workshops

Oracle && MySQL

valuable || expendable

Page 11: System Update 2010 CrossRef Workshops

ActiveMQ 5.4

wicked fast loose coupling

Page 12: System Update 2010 CrossRef Workshops

Spring 3.0

Really?

Page 13: System Update 2010 CrossRef Workshops

Spring || EJB || ???

reaction, refinement, replacement, re-implement, rejoice

Page 14: System Update 2010 CrossRef Workshops

POJOs || Deployment Descriptors

i just ( do || describe ) objects

Page 15: System Update 2010 CrossRef Workshops

Dependency Injection || Coded Configuration

more than one main()

Page 16: System Update 2010 CrossRef Workshops

Functional Interfaces || Featureful Interfaces

a little well done is enough

Page 17: System Update 2010 CrossRef Workshops

Spring Experiences

some tales are told a little later

Page 18: System Update 2010 CrossRef Workshops

Design

and not doing architecture

Page 19: System Update 2010 CrossRef Workshops

Controllers, Services && Coordination

insides and outsides

Page 20: System Update 2010 CrossRef Workshops

“Where is this article?”!

“Does this DOI have meta-data?”!

Page 21: System Update 2010 CrossRef Workshops

!"!!#$%&'!'&(%)*!"#$%&'!()*!++*!!!+!!!!!!,-&..)*/012,0/..0%324.2,/'50/--%0.2,-./*0$0*)12#$%&'/)10%)33#%*6!!7!!!!!!#80/8%059!'&(%)*,:5&5:/';%&0,<=//0>:'&5/0*!0%3)*&)44)1/*0$0*)12#$%&'/))%(*1$0)%*?6!!@!!!!!!222!!A!!#?$%&'6!!B!!#$%&'!'&(%)*!"#%53#0!67#%8!++*!!!C!!!!!!,-&..)*/012,0/..0%324.2,/'50/--%0.297#%8/)10%)33#%*6!!D!!!!!!#80/8%059!'&(%)*,:5&5:/';%&0,<=//0>:'&5/0*!0%3)*&)44)1/*0$0*)12#$%&'/))%(*1$0)%*?6!!E!!!!!!222!"F!!#?$%&'6!

""!!#$%&'!'&(%)*&)44)1/*0$0*)12#$%&'/))%(*1$0)%*!!"+!!!!!!!!,-&..)*/012,0/..0%324.2,:5&5:/'.%&0,<2/*0$0*)12#$%&'/))%(*1$0)%*6!"7!!!!!!222!"@!!#?$%&'6!

"A!!#$%&'!'&(%)*()*/*0$0*)197#%82#%5*&#*!!"B!!!!!!!!,-&..)*/012,0/..0%324.2>/:,:5&5:/'.%&0,<2,)*/*0$0*)197#%82#%5*&#*6!"C!!!!!!#80/8%059!'&(%)*4G%09;%0H:,%I%1:.509*!0%3)*&)44)1/*0$0*)12#$%&'/))%(*1$0)%*?6!"D!!!!!!222!!"E!!#?$%&'6!+F!!#$%&'!'&(%)*4#0$,$0$/*0$0*)197#%82#%5*&#*!!+"!!!!!!!!,-&..)*/012,0/..0%324.2(%5&>&5&,:5&5:/'.%&0,<2:#0$,$0$/*0$0*)197#%82#%5*&#*6!++!!!!!!#80/8%059!'&(%)*4G%09;%0H:,%I%1:.509*!0%3)*&)44)1/*0$0*)12#$%&'/))%(*1$0)%*!?6!+7!!!!!!222!+@!!#?$%&'6!

Page 22: System Update 2010 CrossRef Workshops

Service Engine

actual heavy lifting

Page 23: System Update 2010 CrossRef Workshops
Page 24: System Update 2010 CrossRef Workshops

Management

x-rays, JMX

Page 25: System Update 2010 CrossRef Workshops

Health

…, lub-dub, lub-dub, …

Page 26: System Update 2010 CrossRef Workshops

8G$-:,!:'5%03&,%!J%&05$%&5KL%&'!M!

!!!!$//-%&'!:.L%&5:'1NOP!Q!

Page 27: System Update 2010 CrossRef Workshops

<558R??,0"F2,0/..0%32/01?<%&05$%&5?>/:S,:5&5:/'S.%&0,<!

<558R??,0"F2,0/..0%32/01?<%&05$%&5?(%5&S>&5&S,:5&5:/'S.%&0,<!

Page 28: System Update 2010 CrossRef Workshops
Page 29: System Update 2010 CrossRef Workshops

!"!!#$%&'!!!+!!!!!!'&(%)*!'#$%0;#$0!++*!!!7!!!!!!,-&..)*/012,0/..0%324.2,/'50/--%0.2J%&05$%&5=/'50/--%0*6!!@!!!!#80/8%059!'&(%)*<%&05$%&5.*6!!A!!!!!!#(&86!!B!!!!!!!!#%'509!!!C!!!!!!!!!!!!T%9)*()*<&*0$0*)1<"#$%&'*!!!D!!!!!!!!!!!!H&-G%S0%3)*>/:=:5&5:/';%&0,<J%&-5<J%&05$%&5*!?6!!E!!!!!!!!#%'509!!"F!!!!!!!!!!!!T%9)*4#0$<($0$<&*0$0*)1<"#$%&'*!!""!!!!!!!!!!!!H&-G%S0%3)*(%5&U&5&=:5&5:/';%&0,<J%&-5<J%&05$%&5*!?6!"+!!!!!!!!222!"7!!!!!!#?(&86!"@!!!!#?80/8%0596!"A!!#?$%&'6!

Page 30: System Update 2010 CrossRef Workshops

Artifacts

secondary (lossy) data flow(s)

Page 31: System Update 2010 CrossRef Workshops
Page 32: System Update 2010 CrossRef Workshops

8G$-:,!:'5%03&,%!V05:3&,5!%W5%'>.!;%0:&-:X&$-%!M!

Q!

8G$-:,!:'5%03&,%!V05:3&,5;%0H:,%!M!

!!!!8G$-:,!H/:>!,/'50:$G5%V05:3&,5N!V05:3&,5!&05:3&,5!OP!Q!

Page 33: System Update 2010 CrossRef Workshops
Page 34: System Update 2010 CrossRef Workshops

Interim Storage

bigger response, expiration

Page 35: System Update 2010 CrossRef Workshops

<558R??,0/..0%32/01?0%50:%H%?Y7VCU="LSL"@ES@DC+SE@"DSE+FBBA+77E7=!

Page 36: System Update 2010 CrossRef Workshops

!"!!8G$-:,!:'5%03&,%!;5/0%!M!!+!!7!!!!$//-%&'!,0%&5%N!!@!!!!!!ZZ[U!77*(\!!A!!!!!!-/'1!>%8/.:5/0[>\!!B!!!!!!-/'1!0%,:8:%'5[>\!!C!!!!!!]W8:0&5:/'^/-:,9!%W8:0&5:/'^/-:,9\!!D!!!!!!;50:'1!,/'5%'5_98%\!!E!!!!!!.1=7020%#$4>,/'5%'5['8G5;50%&(O!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!"F!""!!!!-70=7020%#$4>,0%&5%N!"+!!!!!!ZZ[U!77*(\!"7!!!!!!-/'1!>%8/.:5/0[>\!"@!!!!!!-/'1!0%,:8:%'5[>\!"A!!!!!!]W8:0&5:/'^/-:,9!%W8:0&5:/'^/-:,9\!"B!!!!!!;50:'1!,/'5%'5_98%O!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!"C!"D!!!!a:.5#[5%(6!3:'>V--NO!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!"E!+F!!!!.0#4>3:'>L9ZG:>NZZ[U!GG:>O!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!+"!++!!!!H/:>!8G01%]W8:0%>[5%(.=/'5%'5NO!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!+7!+@!!!!H/:>!,-/.%NO!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!+A!!Q!

Page 37: System Update 2010 CrossRef Workshops

!"!!8G$-:,!:'5%03&,%![5%(!M!!+!!!!7!!!!8G$-:,!ZZ[U!1%5ZG:>NOP!!@!!!!A!!!!8G$-:,!_:(%.5&(8!1%5U%8/.:5%>_:(%.5&(8NOP!!B!!C!!!!8G$-:,!-/'1!1%5U%8/.:5/0[>NOP!!D!!E!!!!8G$-:,!-/'1!1%5I%,:8:%'5[>NOP!"F!""!!!!8G$-:,!;50:'1!1%5=/'5%'5_98%NOP!"+!"7!!!!8G$-:,!['8G5;50%&(!1%5=/'5%'5NO!5<0/`.!['5%0:(;5/0&1%]W,%85:/'P!"@!"A!!!!8G$-:,!]W8:0&5:/'^/-:,9!1%5]W8:0&5:/'^/-:,9NOP!"B!"C!!!!8G$-:,!$//-%&'!:.]W8:0%>NOP!"D!"E!!!!8G$-:,!_:(%.5&(8!1%5]W8:0%>_:(%.5&(8NOP!+"!++!!Q!

Page 38: System Update 2010 CrossRef Workshops

Notifications

urgency, ( now || later ), aggregates

Page 39: System Update 2010 CrossRef Workshops

!"!!8G$-:,!:'5%03&,%!b/5:3:,&5:/';%0H:,%!M!!+!!!!7!!!!!!H/:>!'/5:39Nb/5:3:,&5:/'!'/5:3:,&5:/'OP!!@!!!!A!!!!!!b/5:3:,&5:/'!1%5b/5:3:,&5:/'NZZ[U!50&,T:'1[>OP!!B!!!!C!!!!!!b/5:3:,&5:/';5&5%!1%5b/5:3:,&5:/';5&5%NZZ[U!50&,T:'1[>OP!!D!!!!E!!!!!!b/5:3:,&5:/'!0%(/H%b/5:3:,&5:/'NZZ[U!50&,T:'1[>OP!"F!!Q!

Page 40: System Update 2010 CrossRef Workshops

!"!!8G$-:,!:'5%03&,%!b/5:3:,&5:/'!M!!+!!!!7!!!!!!ZZ[U!1%5_0&,T:'1[>NOP!!@!!!!A!!!!!!$//-%&'!:.U%-:H%09Z01%'5NOP!!B!!!!C!!!!!![>%'5:59!1%5;%'>%0NOP!!D!!!!E!!!!!!;%5#[>%'5:596!1%5I%,:8:%'5.NOP!"F!!!""!!!!!!$//-%&'!<&.U%-:H%09V110%1&5:/'b&(%NOP!"+!!!!!!;50:'1!1%5U%-:H%09V110%1&5:/'b&(%NOP!"7!!!"@!!!!!!$//-%&'!:.U%-:H%09V,T'/`-%>1%>NOP!"A!!!"B!!!!!!$//-%&'!:.U%-:H%09]W8:0&5:/'V,T'/`-%>1%>NOP!"C!!!"D!!!!!!;50:'1!1%5;G$c%,5NOP!"E!!!+F!!!!!!$//-%&'!<&.K%..&1%NOP!+"!!!!!!;50:'1!1%5K%..&1%=/'5%'5NOP!++!!!!!!;50:'1!1%5K%..&1%=/'5%'5_98%NOP!+7!!!+@!!!!!!$//-%&'!<&.['5%0:(;5/0&1%ZZ[U.NOP!+A!!!!!!;%5#ZZ[U6!1%5['5%0:(;5/0&1%ZZ[U.NOP!+B!!!+C!!!!!!$//-%&'!<&.]W8:0&5:/'_:(%.5&(8NOP!+D!!!!!!_:(%.5&(8!1%5]W8:0&5:/'_:(%.5&(8NOP!+E!!Q!

Page 41: System Update 2010 CrossRef Workshops

!"!!8G$-:,!:'5%03&,%!b/5:3:,&5:/';5&5%!M!!+!!!!7!!!!!!ZZ[U!1%5_0&,T:'1[>NOP!!@!!!!A!!!!!!$//-%&'!:.U%-:H%09^%'>:'1NOP!!B!!!!C!!!!!!$//-%&'!:.U%-:H%0%>NOP!!D!!!!E!!!!!!$//-%&'!:.]W8:0%>NOP!"F!!!""!!!!!!$//-%&'!:.I%(/H%>NOP!"+!!!"7!!!!!!_:(%.5&(8!1%5_:(%.5&(8NO!5<0/`.![--%1&-;5&5%]W,%85:/'P!"@!!!"A!!!!!!K&8#[>%'5:59\!;%5#ZZ[U66!1%5U%-:H%09V110%1&5%NO!5<0/`.!222P!"B!!Q!

Page 42: System Update 2010 CrossRef Workshops

Spring Experiences

Page 43: System Update 2010 CrossRef Workshops

Coming up to speed

books are useful … for about 5 hours

Page 44: System Update 2010 CrossRef Workshops

Is that answer for Spring 1.x || 2.x || 3.x?

rummaging around the net

Page 45: System Update 2010 CrossRef Workshops

Deployment Descriptors

they’re back and now called contexts

Page 46: System Update 2010 CrossRef Workshops

Spring Beans && Java Properties

Where do I defined this thing?

Page 47: System Update 2010 CrossRef Workshops

XML

XSDs, id(s) || name(s), conditional sections

Page 48: System Update 2010 CrossRef Workshops

Runtime Configuration Errors

scripting without the support tools

Page 49: System Update 2010 CrossRef Workshops

Bondage

bound to Spring as much as you are to any framework

Page 50: System Update 2010 CrossRef Workshops

It might be there

but not designed as expected

Page 51: System Update 2010 CrossRef Workshops

Development lessons from the QS to apply

with the DS

Page 52: System Update 2010 CrossRef Workshops

Undervalue your own ideas

the view from the backside of the leading edge

Page 53: System Update 2010 CrossRef Workshops

Existing wheels are generally well designed

use code libraries … which are sometimes your own

Page 54: System Update 2010 CrossRef Workshops

Use the API correctly

150/second to 2000/second

Page 55: System Update 2010 CrossRef Workshops

Stopping buck-passing

artifacts, costs, choices

Page 56: System Update 2010 CrossRef Workshops

A does not follow B right away

synchronization and the ReadWriteLock are your friends

Page 57: System Update 2010 CrossRef Workshops

Pick a monitoring tool as-soon-as-possible

instills design for management and monitoring

Page 58: System Update 2010 CrossRef Workshops

The data is already stale

design data for management and convert data for use

Page 59: System Update 2010 CrossRef Workshops

Priming takes a long time

pool XML parsers

Page 60: System Update 2010 CrossRef Workshops

Data conversion takes a longer time

break it up into multiple parts

Page 61: System Update 2010 CrossRef Workshops

Spring Contexts need support tools

we have one, we need more

Page 62: System Update 2010 CrossRef Workshops

Design small interfaces

federation of cliques

Page 63: System Update 2010 CrossRef Workshops

Front-Controller vs Servlets

I want my componentization back

Page 64: System Update 2010 CrossRef Workshops

Keep talking

especially with distant developers

Page 66: System Update 2010 CrossRef Workshops