If you have a massive data window system baked into a Powerbuilder client application persisting to a Oracle database you are likely in a world of pain. This is a business critical system that generates billions of dollars of revenue. Multiple attempts to modernize the system have cratered due to big-bang vendor product driven, technology infatuated soirees. You want to dip your toes into the modern cloud native microservices developer friendly world but have been burnt twice already. You have no interest or inclination in fielding yet another rewrite the system from scratch in 2 years sales pitch. What the hell do you do ? Hit the Bottle ? Pay ORCL another 25M$ in licensing fees. Put a mask on and upgrade Powerbuilder to 2019 R2 ? Is there a way out of this black hole ?
Yes. But it ain't easy.
First acknowledge that this is a tough task. The short-cuts were already taken which is why we are at this F*#$ed up point.
Here is a path that can be trodden. A couple of the smart guys in data Alastair Turner and Gideon Low have heavily influenced my thinking on this topic.
First figure out what is the primary driver for modernization Cost or Productivity. Depending on the answer a different set of strategies needs to be followed.
Let's assume all your customer support professionals are well versed in the screens and actually love the data window UI. The application is functional and can be enhanced with speed in production. The only issue the licensing and cost associated with running Powerbuilder. In such a scenario perhaps migration is a better option i.e. migrate all the data to Postgres. Check to see if your SAP or Appeon version of Powerbuilder supports PostgresSQL as a backend. You might be so bold as to consider migrating your DB to the cloud with Amazon Database Migration service.
Depending on the cost you may choose to use code generators that auto generate Java or C# code from Powerbuilder libraries. Both Appeon and Blu Age have such tools; however buyer beware. Any tool that charges for modernization by LOC is immediately suspect. Code Generators are like Vietnam - easy to get in, hard to get out.
You want to develop new features and microservices and expose APIs to newer channels and other consumers of the service. Here you have a fork in the road.
1. Upgrade to the latest GA version of GA Powerbuilder 2019 R2 and begin an expensive project to RESTify Existing DataWindows as webservices. The limitation with using conversion tools is that you don't really get a chance to identify and fix various classes of important problems—you don't pay-down your technical debt. This is like trading one form of debt for another like replacing your high interest rate debt from Visa with a slightly lower interest rate debt from Capital One. What is in your wallet ?
2. The RIGHT Way. Start by cataloging the business use-cases, and rebuild each one. The legacy system's only real role is to validate that behavior hadn't changed. If you can't get the business rules from the business you will need to reverse-engineer the stored procedures and persistence using tools like ER Diagrams, SchemaSpy or leverage Oracle Dependency Catalog utilities to determine the object dependency tree. Visualization tools can't hurt, but SO MUCH is usually trapped in the stored procedure logic that their use can be as much a hindrance as anything. A good way to visualize the entire business process is to leverage techniques from the app world like Event Storming or User Journey, Workflow, Interaction mapping.
There is no substitute for hard work. There is no real substitute for case by case refactoring. Start with documenting the problem, visualising it and identifying the starting points is of value. Thereafter pick a particular steel thread aka end to end slice and identify the right set of APIs. Leverage the tactical patterns listed below from Sam Newman's Book Monoliths To Microservices (chapter #4) for decomposing data and pulling out services. .
Start the journey of 10,000 miles with the first step. Start small, iterate and demonstrate value to business at the end of each iteration. This is the only way to be successful in the long term with any modernization of a critical complex system at scale.
Good Luck !!
See how ZIM Shipping moved from .NET/PowerBuilder development to Spring Boot with Tanzu Application Service
Post a Comment
Note: Only a member of this blog may post a comment.