Modern Legacy Systems

1,232 views

Published on

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1b2DRcI.

Robert Annett explores some of the issues of upgrading, maintaining or replacing legacy Java and .NET applications that haven't been touched in a decade, providing advice on solving common problems. Filmed at qconlondon.com.

Robert Annett has been a developer since 1995 and worked in industries from energy management to investment banking. Much of this work has involved upgrading and migrating legacy systems with the occasional green-field project (with integration to legacy systems, of course). He has worked in the IT industry long enough to realize that ALL successful systems become legacy eventually. @robert_annett

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,232
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Modern Legacy Systems

  1. 1. Modern Legacy Systems Robert Annett - 2055 Thursday, 7 March 13
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /net-java-legacy-techniques
  3. 3. Presented at QCon London www.qconlondon.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  4. 4. What is legacy? Old, unstable, unsupported, Non-maintained, supplanted, monolithic, complex, obsolete, bad? It’s not well defined Often used as an insult Thursday, 7 March 13
  5. 5. Bjarne Stroustrup What is legacy? "Legacy code" often differs from its suggested alternative by actually working and scaling. Thursday, 7 March 13
  6. 6. Business Process Lifecycle Software Development Requirements Design Im plem entTest Deploy Maintenance Use Support Maintain LEGACY End-Of-Life Previous Process Manual Spreadsheets Office Tools Legacy Thursday, 7 March 13
  7. 7. Business Process Lifecycle Software Develop- mentPrevious Process Manual Spreadsheets Office Tools Legacy Maintenance Use Support Maintain LEGACY End-Of-Life Time0 20 Thursday, 7 March 13
  8. 8. Is this legacy? ...no it’s a museum piece ©Dave Ross Thursday, 7 March 13
  9. 9. some realmodern legacy systems Java 1.2 running under Solaris 8 on an Ultra Sparc III server using Oracle 8i, or... C# 1.0, Windows server 2000 using SQL Server 2000 Objective C on NeXT server? J++/J#? VB6? FoxPro? Brokat? A combination of manual operations and 'office' tools Thursday, 7 March 13
  10. 10. Scenario You work for a furniture company You get a promotion! You are now responsible for the warehouse inventory system No one has touch it for.... a while. It was written in 2003 It’s a 3-tier architecture... etc etc... It basically works although everyone moans about it. What do you do? Is this the kind of system you’ve seen? Thursday, 7 March 13
  11. 11. What are the common issues? Thursday, 7 March 13
  12. 12. Manifesto for Agile Software Development, 2001 Working software over comprehensive documentation No Documentation usernames/passwords Last release branch? Network information User lists communications protocols location of static datalicenses! Thursday, 7 March 13
  13. 13. Deliberate/Agile Architecture Organic Growth No Overarching Design ©Google Thursday, 7 March 13
  14. 14. Lost Knowledge © Hans Hillewaert Thursday, 7 March 13
  15. 15. Hidden Knowledge ©Wilder Kaiser Application Voodoo! Thursday, 7 March 13
  16. 16. Unused Functionality ©Ellin Beltz Thursday, 7 March 13
  17. 17. Fragility Real or imagined? Thursday, 7 March 13
  18. 18. Coupling tight loose Cohesion! Thursday, 7 March 13
  19. 19. Zombie Technologies Unsupported or... dead and buried Major changes in APIs or just changes in style and fashion Thursday, 7 March 13
  20. 20. Sean Robinson, License Dashboard quoted in Computing Licensing If a company has SQLServer on VMware, licensed on a per core basis that can be dynamically scheduled across hosts - all machines need licenses. Thursday, 7 March 13
  21. 21. Data Protection Act and Information Commissioner Regulation Personal data processed for any purpose or purposes shall not be kept for longer than is necessary for that purpose or those purposes. Thursday, 7 March 13
  22. 22. Politics Who owns the project? Who uses the project? Who pays for the project? Who gets fired if it fails? Whose job is at risk... if successful? No-one likes changes Except developers! Thursday, 7 March 13
  23. 23. It’s not all bad! A legacy system is a successful system You can have a large impact You have real users you can talk to You can learn a lot about the business It’s important but not trendy so you’ll probably get paid well... The bar may be low! Thursday, 7 March 13
  24. 24. what are my strategies? Thursday, 7 March 13
  25. 25. Ignore it? Thursday, 7 March 13
  26. 26. Investigation? Thursday, 7 March 13
  27. 27. Maintenance Sweat those assets! Thursday, 7 March 13
  28. 28. Upgrade Don’t upgrade andabandon. Thursday, 7 March 13
  29. 29. Migrate The business has NFRs as well! Thursday, 7 March 13
  30. 30. Incremental Improvement Functional additions Probably combined with upgrading ...or “just stick it in”... Bewaretechnical debt Thursday, 7 March 13
  31. 31. Replacement/Implementation Completely re-write the system Introduce a new architecture and technology You still need to maintain your legacy system while doing a re-write! Your users AND operations staff will require a lot of retraining Is it better or just cooler? Thursday, 7 March 13
  32. 32. you can mix-and-match the strategies! Don’t just default to re- write Thursday, 7 March 13
  33. 33. executing your Strategy Thursday, 7 March 13
  34. 34. locate the stakeholders Thursday, 7 March 13
  35. 35. Your system Users generating data Database Administrators Users generating reports Operations/Support Staff Compliance and AuditOther systemsThe budget holders Users consuming data These are REAL users Thursday, 7 March 13
  36. 36. draw a diagram of the system Thursday, 7 March 13
  37. 37. leanpub.com Published incrementally Variable pricing Buy now and get free updates Thursday, 7 March 13
  38. 38. 1. Context 2. Containers 3. Components Thinking inside the box ... and, optionally, 4. Classes C4Context Containers Components Classes This only covers the static structure (runtime, infrastructure, deployment, etc are also important) Thursday, 7 March 13
  39. 39. Context • What exists in the system? • Who is using it? (users, actors, roles, personas, etc) • How does it fit into the existing IT environment? Containers • What are the high-level technology decisions? • How do containers communicate with one another? • As a developer, where do I need to write code? Components • What components/services is the system made up of? • Is it clear how the system works at a high-level? • Do all components have a home (a container)? Thursday, 7 March 13
  40. 40. a quick example Thursday, 7 March 13
  41. 41. Warehouse Staff Context: What do we have? Who is using it? Warehouse Management Product Catalogue Warehouse Manager Forklift driver Delivery Installation Manufacturer DesignerSales Sales Orderbook Thursday, 7 March 13
  42. 42. What containers is the system made up of? How do they communicate? Application Server (java-weblogic) Database (Oracle 8i) Client (java swing) Manufacturer Sales Orderbook (EXCEL/VB Sheet) Product Catalogue (Access 2007) ODBC port 1521 csv export JDBC port 1521 RMI port 1521 daily email What questions does this raise? Thursday, 7 March 13
  43. 43. deeper analysis Thursday, 7 March 13
  44. 44. Component Diagrams Class Diagrams (possibly) DB Schemas Configuration Stored data sizings Network settings and traffic The source code Deeper Analysis (suggestions) Beware that what is running may differ from your source control... Thursday, 7 March 13
  45. 45. beware the Dark Side of the source Thursday, 7 March 13
  46. 46. we now know what we’ve got let’s safely make some changes Thursday, 7 March 13
  47. 47. virtualisation is your friend Thursday, 7 March 13
  48. 48. Re-create your PRODUCTION system as a test system. Run tests and metrics for the copy Make sure you can swap in and out the virtualised containers at a high level Try to build and redeploy the components within containers. Preparation Be confident you can deploy and rollback. Thursday, 7 March 13
  49. 49. Create some systems tests Make them realistic uses of the system. Report runs you can compare Consider ‘test’ data in the real system... Build, Virtualise and Deploy Production Preparation It’s paranoid but we can now deploy without fear Thursday, 7 March 13
  50. 50. at last we can modify the system! Thursday, 7 March 13
  51. 51. Worth doing even if replacing Data Cleanse Data Archive Remove unused components Shift resources Tune applications/DBs Code changes if required Stabilisation A stable system proves your competence! Thursday, 7 March 13
  52. 52. Third party products are ALWAYS harder to upgrade/migrate than the sales pitch says. Functional and non-functional behaviour WILL change. Upgrading/Migration Third Party Be prepared to rollback if and when necessary. This should be methodical after all the preparation Thursday, 7 March 13
  53. 53. Formatting Create a new baseline Refactor as you go Break dependencies... and... Legacy Code Modification BUY THIS BOOK Thursday, 7 March 13
  54. 54. “ Strategic rewrites take longer to implement than planned. Be prepared to maintain the legacy for a while. Thursday, 7 March 13
  55. 55. how to leave a good legacy Thursday, 7 March 13
  56. 56. Basic access information Build and deploy instructions Code AND config Asset Register BCP/Failover/Backup Plans ARCHITECTURE DIAGRAM Documentation is not evil! Thursday, 7 March 13
  57. 57. System Integration Functional Non-functional UAT Accessibility... Automate and leave documentation Tests There’s more to testing than XUnit Thursday, 7 March 13
  58. 58. High level design Architecture doesn’t necessitate a 200 page document System Design Thursday, 7 March 13
  59. 59. best practice and right tool for the job but... Thursday, 7 March 13
  60. 60. Technology Consistency and Scope Thursday, 7 March 13
  61. 61. Careful of new technologies It’s about trade offs... Thursday, 7 March 13
  62. 62. Thanks and leave a good legacy! robert.annett@codingthearchitecture.com @robert_annett on Twitter Thursday, 7 March 13
  63. 63. robert.annett@codingthearchitecture.com @robert_annetton Twitter Writing Software development plus training and consulting simon.brown@codingthearchitecture.com @simonbrown on Twitter Thursday, 7 March 13
  64. 64. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/net-java- legacy-techniques

×