Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Java Application Modernization Patterns and Stories from the IBM Garage

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 82 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Ähnlich wie Java Application Modernization Patterns and Stories from the IBM Garage (20)

Anzeige

Weitere von Holly Cummins (20)

Aktuellste (20)

Anzeige

Java Application Modernization Patterns and Stories from the IBM Garage

  1. 1. September, 2019 / © 2019 IBM Corporation Java Application Modernization Patterns and Stories from the IBM Garage
 Dave Mulley IBM Garage Solution Engineering – Application Modernization Team Holly Cummins STSM, WW Development Lead, IBM Cloud Garage

  2. 2. The Journey to Cloud
  3. 3. The Journey to Cloud
  4. 4. Migrate Lift & shift
 applications and
 workloads Modernize Update using 
 containers and
 microservices Innovate Build new
 cloud native
 applications Manage Integrate
 and manage,
 multicloud Driver Improved operations
 and productivity Driver Solve previously unsolved problems Outcomes Greater business agility,
 access to data for insights Driver Lower Capex Types of Cloud Journeys
  5. 5. Investment Protection Adopt new technology and modernize at your pace with IBM Cloud Paks Proven Approaches Prescriptive guidance, online demos and tutorials IBM Garage Architecture for best practices Acceleration Services 90,000 experts 100,000 migrations 38 global studios Turnkey modernization with services aligned with proven approaches Advanced Technology Rich set of containerized Middleware with IBM Cloud Paks Advanced Migration and Developer Tools with IBM Cloud Pak for Applications 4 IBM’s approach to application modernization

  6. 6. 5 Introspects WebSphere, IBM MQ, WebLogic, and Tomcat deployments Included and deployed on Cloud Pak for Applications 4) Diagnostic services IBM Cloud Transformation Advisor Provides recommendations and automation for App Modernization Access and analyze Java EE apps and messaging infrastructure. Analysis Report Potential issues, severity details, possible solutions and estimated resolution effort Technology Report Details on IBM platform support for technologies used in the app Inventory Report High-level inventory of application content and structure IBM Cloud / © 2019 IBM Corporation IBM Confidential
  7. 7. 6 Migration Complexity Moderate: Some code changes needed Complex: Incompatible technologies; external dependencies Simple: No code changes Classify Existing Apps Based on Migration Complexity
  8. 8. vm Identifying Technical Debt • Out of support (JDK 5,6 or 7) or limited lifespan (JDK 8) • IBM proprietary APIs/implementations such as Work Manager, Startup Beans and SCA are not portable. • Many proprietary APIs/implementations are deprecated • Spring 2.5.6 and older is incompatible with JDK 8 • Older Spring Framework versions are unsupported by Pivotal and have documented security vulnerabilities jdk • Running in “backwards compatibility” mode on WAS 8.5 and 9 • Newer versions of JPA, JSF, CDI and JAX-RS are not backwards compatible in some situations • Utilizing deprecated/optional Java EE technologies (JAX-RPC) • Including unsupported/deprecated frameworks (JSF 2.0, Struts 1) • Older, outdated technologies, patterns and strategies (monoliths, EJB, CORBA, SCA etc) • Out of support or limited lifespan WebSphere Runtime. • Monolithic, large footprint runtime requiring patching, upgrades and operations team management traditional runtime spring framework 2/3/4 application java ee 1.4/1.5/6 application proprietary runtime apis
  9. 9. Modernization Options effort required traditional cloud native lift and shift jdk debt runtime debt api debt app debt cloud native debt removed debt remains debt remains debt remains no
  10. 10. Modernization Options effort required traditional cloud native lift and shift operations modernization jdk debt runtime debt api debt app debt cloud native debt removed debt removed debt remains debt remains debt remains debt remains debt remains no partial cloud ready
  11. 11. Modernization Options effort required traditional cloud native lift and shift operations modernization runtime modernization jdk debt runtime debt api debt app debt cloud native debt removed debt removed debt removed debt removed debt removed debt remains debt remains debt remains debt remains debt remains debt remains no partial cloud ready cloud ready
  12. 12. Modernization Options effort required traditional cloud native lift and shift operations modernization runtime modernization application modernization jdk debt runtime debt api debt app debt cloud native debt removed debt removed debt removed debt removed debt removed debt removed debt removed debt removed debt removed debt remains debt remains debt remains debt remains debt remains debt remains no partial cloud ready cloud ready mixed runtimes
  13. 13. Modernization Options effort required traditional cloud native lift and shift operations modernization runtime modernization application modernization redesign and rewrite jdk debt runtime debt api debt app debt cloud native debt removed debt removed debt removed debt removed debt removed debt removed debt removed debt removed cloud native debt removed debt removed debt removed debt removed debt removed debt remains debt remains debt remains debt remains debt remains debt remains no partial cloud ready cloud ready mixed runtimes
  14. 14. Operations Modernization vm jdk traditional runtime java ee 6 application proprietary runtime apis tech debt tech debt tech debt tech debt common devops pipelines common operational services ibm certified container jdk traditional runtime java ee 6 application proprietary runtime apis tech debt tech debt tech debt tech debt ibm certified container some other cloud native application ibm certified container some other cloud native application • Package existing WebSphere ND app in a container with as little change as possible • Run older applications on the same platform as new cloud-native applications • Transform operations to embrace immutable container
  15. 15. Runtime Modernization vm jdk traditional runtime java ee 6 application proprietary runtime apis tech debt tech debt tech debt tech debt common devops pipelines common operational services ibm certified container jdk cloud-ready runtime java ee 6 application opensource runtime apis tech debt tech debt ibm certified container some other cloud native application ibm certified container some other cloud native application tech debt • Change runtime to cloud-ready Liberty runtime • Keep applications changes to a minimum • Run older applications on the same platform as new cloud-native applications • Transform operations to embrace immutable container
  16. 16. Client Story: WebSphere Portal Modernization WAS Portal EJB + JSF EJB + JSF EJB + JSF EJB + JSF Portlet Portlet Portlet Jenkins IBM Cloud Private Jenkins DevOps NGINX SPA frontend Liberty EJB REST Modernization Journey • Modernize EJBs to run on Liberty and with REST interface • Create new frontend • Automate CI/CD with Jenkins and IBM UrbanCode BENEFITS: #1 - Modern, supported runtime with zero migration #2 - Automated provisioning of test environments and automated testing #3 - Reduced business risk by reusing EJB layer Customer implementation being led by IBM Cloud Garage
  17. 17. 16 OCP dev/test environment OCP enablement Validate full deployment scope OCP full deployment OCP integration Compliance & Production readiness Factory Scale : self-service, multi-tenant, charge-back.. Prove Liberty in containers OCP and pipeline integration Validate full scope & timeline Critical mass containerization Full containerization Factory Scale: re-use/publish/Arch Center Sync up with Garage best practices and integrated with DevOps foundations Accelerate Front-end refactoring Factory Scale: Cross-org template Application Modernization - Front-end Application Modernization – Back-end Container Foundation Refactor pipeline for containers Add Liberty containers pipeline Cross-env deployment pipelines with UCD Pipelines deployment Factory Scale: Open source consumption governance DevOps Foundation Complete Front-end refactoring Application Modernization Workstreams
  18. 18. websphere nd Client Story: Service Component Architecture Modernization MessageBus Modernization Journey • Repackaged Java Code as REST Services using SpringBoot • Deployed new Applications with automated CI/CD Jenkins Pipelines BENEFITS: #1 – Removed deprecated SCA framework and exposed applications using APIs #2 - Reduced business risk by reusing Java Code ibm certified container websphere mq ibm certified container springboot rest api java code ibm certified container springboot rest api java code ibm certified container springboot rest api java code ibm certified container springboot rest api java code ibm certified container springboot rest api java code common devops pipelines common operational services sca service sca service sca service sca service sca service java code java code java code java code java code
  19. 19. Application Modernization vm jdk traditional runtime java ee 6 application proprietary runtime apis tech debt tech debt tech debt tech debt ibm certified container jdk cloud-ready runtime java ee 8 application opensource runtime apis tech debt tech debt tech debt ibm certified container jdk cloud-ready runtime java ee 8 application opensource runtime apis tech debt tech debt tech debt ibm certified container jdk cloud-ready runtime java ee 8 application opensource runtime apis tech debt tech debt tech debt common devops pipelines common operational services • Redesign application for new cloud platform • Full microservices implementation
  20. 20. Client story: Auto modernisation Add platform enablers: • GDPR • Security • Load balancing Stack updates: • Containerised for ease of • build • deployment • testing • Rewrote in Node.js Can we do even better? • 77% of APIs unused • 6 APIs would work better as 2
  21. 21. Image courtesy of James St John, flickr The Strangler Fig
  22. 22. App Transition and the Strangler Pattern Existing Site Time NewExisting new development new site existing site coexistence Business as usual. New features added to new site. Coexistence will include beta of new chunks where only a small % of the user population get served up the chunk and a complete 100% transition to new chunks. Note that new features will continue to be added to the existing site until critical mass is reached on the new site.
  23. 23. IBM Cloud / April 2019 / © 2019 IBM Corporation Are Microservices the Solution to Everything...? 
 

  24. 24. IBM Cloud / April 2019 / © 2019 IBM Corporation Are Microservices the Solution to Everything...? 
 
 NO!
  25. 25. IBM Cloud / April 2019 / © 2019 IBM Corporation “The microservices approach is all about handling a complex system, but in order to do so, the approach introduces its own set of complexities. When you use microservices you have to work on automated deployment, monitoring, dealing with failure, eventual consistency, and other factors that a distributed system introduces…” -Martin Fowler
  26. 26. containers will not fix a broken dev culture 25
  27. 27. even kubernetes will not fix a broken dev culture 26
  28. 28. Microservices. What could possibly go wrong?
  29. 29. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage “we don’t exactly know why we have six microservices, but it seems like a good idea to split our application?”
  30. 30. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage containers are a good base
  31. 31. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage containers are a good base it’s not a competition to see how many you can have
  32. 32. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage “each of our microservices has duplicated the same object model … with twenty classes and seventy fields”
  33. 33. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage Microservice
  34. 34. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage Microservice Domain
  35. 35. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage Microservice Domain
  36. 36. @holly_cummins© 2019 IBM Corporation #IBMCloudGarage “every time we change code, something breaks”
  37. 37. © 2019 IBM Corporation “every time we change code, something breaks”
  38. 38. © 2019 IBM Corporation distributed monolith
  39. 39. © 2019 IBM Corporation distributed monolith but without compile-time checking
  40. 40. © 2019 IBM Corporation just because a system runs across 6 containers doesn’t mean it’s decoupled
  41. 41. © 2019 IBM Corporation
  42. 42. © 2019 IBM Corporation mars climate explorer
  43. 43. © 2019 IBM Corporation Courtesy NASA/ JPL-Caltech
  44. 44. © 2019 IBM Corporation
  45. 45. © 2019 IBM Corporation
  46. 46. metric units
  47. 47. metric units imperial units
  48. 48. distributing did not help metric units imperial units
  49. 49. © 2019 IBM Corporation microservices need consumer-driven contract tests
  50. 50. © 2019 IBM Corporation
  51. 51. © 2019 IBM Corporation
  52. 52. © 2019 IBM Corporation What problem were we trying to solve, anyway?
  53. 53. © 2019 IBM Corporation
  54. 54. © 2019 IBM Corporation “the cloud will make us faster.”
  55. 55. “this provisioning software is broken”
  56. 56. what we sold “this provisioning software is broken” 10 minute provision-time
  57. 57. what we sold “this provisioning software is broken” 10 minute provision-time 3 month provision- time what the client saw
  58. 58. what we sold “this provisioning software is broken” 10 minute provision-time 3 month provision- time what the client saw the reason 84-step pre-approval process
  59. 59. © 2019 IBM Corporation “we’re going too slowly. we need to get rid of cobol and make microservices!”
  60. 60. © 2019 IBM Corporation “we’re going too slowly. we need to get rid of cobol and make microservices!” “… but our release board only meets twice a year.”
  61. 61. © 2019 IBM Corporation “we can’t actually release this.”
  62. 62. © 2019 IBM Corporation “we can’t release this microservice… we deploy all our microservices at the same time.”
  63. 63. © 2019 IBM Corporation “to ensure our microservices can’t get deployed independently, we have a single Jenkins job deploying all 60 microservices.”
  64. 64. “we can’t ship until we have more confidence in the quality”
  65. 65. “we can’t ship until we have more confidence in the quality” you can fix that
  66. 66. “our tests aren’t automated”
  67. 67. “our tests aren’t automated”
  68. 68. “we don’t know if our code currently works”
  69. 69. “we don’t know if our code currently works”
  70. 70. “it costs too much to release”
  71. 71. “it costs too much to release”you can fix that
  72. 72. © 2019 IBM Corporation how not to drive a car
  73. 73. © 2019 IBM Corporation feedback is good engineering
  74. 74. © 2019 IBM Corporation feedback is good business
  75. 75. Modernising people :) • Cloud-native development has different best practices • Operations models for containers are different • SRE and CSMO are a whole new world • Learn by doing with experienced partners • Co-creation • Paired programming • Automate everything • Test-driven development • Shift left
  76. 76. IBM Cloud / April 2019 / © 2019 IBM Corporation Was it worth it?
  77. 77. IBM Cloud / April 2019 / © 2019 IBM Corporation Was it worth it? YES
  78. 78. Application Modernization is everywhere A large financial institution wants to leverage cloud efficiencies for their applications. They are bound by government regulations to keep their applications in the country, with data touched only by their country’s citizens. A marketing and experience management giant with high sensitivity data needs a high performance cloud to run their applications. Performance and proximity are key. A major airline has a pipeline of 15-20 applications to move or create new in the cloud. These are production applications with thousands of users which require metering visibility and enterprise-level management. Experiences with 400+ client engagements taught us: • Across industries, organizations recognize application modernization as a key imperative • A ’rip and replace’ only approach is not delivering the necessary changes fast enough • A positive business case, unlocking the value of existing applications is key • Modernization is more than just the application, it is an-inclusive approach across the lifecycle 61
  79. 79. 2 Forrester Consulting (study commissioned by IBM), Beneath The Surface Of Digital Transformation, January 2019. IBM Cloud Garage Approach to Application Modernization IBM Cloud / April 2019 / © 2019 IBM Corporation Activities Initial Framing Session Design Thinking Architecture Minimum Viable Product Build Build Out Client outcomes ü Alignment on the desired business outcome. ü Confirm executive sponsor, product owner ü Selection of candidate app workloads that can deliver the business outcome through modernization ü Business and IT alignment on user experience and roadmap to meet your business outcome ü Identified risks and assumptions in your modernization approach, such as data security ü Agreed on next MVP business experiment ü Defined a minimum viable architecture that mitigates risk ü Deployed and configured a Hybrid and/or Multicloud solution with a data, management, and integration layer ü Modernized, deployed, and tested the application on the cloud environment ü Achieved the stated business goals towards the outcome ü Iterate, refine solution until you achieved the stated business outcome ü Become self–sufficient in achieving business results with the IBM Garage Method. ü Scaled production environment and applications
  80. 80. Think 2018 / DOC ID / Month XX, 2018 / © 2018 IBM Corporation 63 s Learn More: IBM Garage Architecture for Application Modernization IBM ZACS for Application Modernization (internal to IBM) https://ibm.biz/Bd2L8e https://www.ibm.com/cloud/garage/architectures/application-modernization/ https://www.ibm.com/cloud/application-modernization

×