Slide 1

Slide 1 text

Improve  your  legacy  application   with  Spring Marten  Deinum   @mdeinum

Slide 2

Slide 2 text

Improve  your  monolithic  legacy  application   with  some  redesign,  refactoring  and  Spring Marten  Deinum   @mdeinum

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

A  Little  History 6

Slide 7

Slide 7 text

Legacy  Software  /  Code “In  computing  a  legacy  system  is  an  old  method,  technology,   computer  system,  or  application  program,"of,  relating  to,  or   being  a  previous  or  outdated  computer  system."  Often  a   pejorative  term,  referencing  a  system  as  "legacy"  often  implies   that  the  system  is  out  of  date  or  in  need  of  replacement.” -­‐  Wikipedia

Slide 8

Slide 8 text

“organiza@ons  which  design  systems  ...  are  constrained  to   produce  designs  which  are  copies  of  the  communica@on   structures  of  these  organiza@ons Legacy  Software  /  Code -­‐  Melvin  E.  Conway  (April  1968)

Slide 9

Slide 9 text

DEMO

Slide 10

Slide 10 text

„I  think  there  has  been  a  general  abandonment  of  good   design  and  development  prac@ces  in  the  Java   community.” Legacy  Software  -­‐  Design -­‐  Vaughn  Vernon

Slide 11

Slide 11 text

„Architecture  is  like  weather:  you  can’t  have  none” Legacy  Software  -­‐  Design -­‐  Oliver  Gierke

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

Legacy  Software  -­‐  Design 13 Domain Presentation Service Data Access Presentation Service Data Access Domain DTO

Slide 14

Slide 14 text

Legacy  Software • Has  proven  to  work  (kind  of)   • Has  proven  business  value   • It  exists  (in  various  degrees  and  languages)   • Have  to  deal  with  it

Slide 15

Slide 15 text

Dealing  With  Legacy  Software • Ignore   • Hide   • Full  Rebuild   • Gradual  Redesign

Slide 16

Slide 16 text

“Monolithic  gravity:  large  system  will  aNract  new  features   and  changes.  In  the  process  it  will  become  larger  and   eventually  collapse.”   Legacy  Software  /  Code -­‐  Eberhard  Wolff  (@ewolff)  on  27  April  2015

Slide 17

Slide 17 text

Dealing  With  Legacy  Software • Ignore   • Hide   • Full  Rebuild   • Gradual  Redesign

Slide 18

Slide 18 text

Dealing  With  Legacy  Software   • Spring  Remoting   • HttpInvoker,  RMI,  Hessian   • JMS,  AMQP,  …   • Spring  WS     • Spring  MVC  Rest  Service   • Spring  Integration   • Anti-­‐Corruption  layer

Slide 19

Slide 19 text

Dealing  With  Legacy  Software • Ignore   • Hide   • Full  Rebuild   • Gradual  Redesign

Slide 20

Slide 20 text

Dealing  With  Legacy  Software   • Starts  of  nice  greenfield   • Hidden  features  in  legacy  software   • Sparse  documentation,     • Knowledge  of  legacy  system   • We  don’t  know  how  to  estimate   • Generally  Big  Bang

Slide 21

Slide 21 text

Dealing  With  Legacy  Software • Ignore   • Hide   • Full  Rebuild   • Gradual  Redesign

Slide 22

Slide 22 text

„If  you  can't  build  a  structured  monolith,  what  makes  you   think  microservices  are  the  answer?” Dealing  With  Legacy  Software -­‐  Simon  Brown

Slide 23

Slide 23 text

DEMO

Slide 24

Slide 24 text

Recap • Legacy  systems  are  here  and  they  probably  will   stay   • Refactoring  can  make  your  life,  and  the  ops   teams,  easier

Slide 25

Slide 25 text

Learn  More.    Stay  Connected. 25 Twitter: twitter.com/mdeinum YouTube: spring.io/video LinkedIn: nl.linkedin.com/in/mdeinum GitHub: github.com/mdeinum

Slide 26

Slide 26 text

Reading  List 26