With the review of your existing legacy architecture complete, you are ready to start identifying the tasks that you need to perform to modernize your OpenEdge environment. Typically, this will include:
  • Identifying the end-user workflow, the UI screens that will be presented to the user, types of client applications, the frontend technologies that will be used to build the client applications, etc.
  • Designing APIs that will be consumed by the UI screens and other types of client applications.
  • Determining the ABL classes and procedures that will live underneath the APIs.
  • Optionally, choosing frameworks that implement design patterns like the Common Component Specification.
  • Identifying databases, database tables, etc that will be used by the ABL business logic.
  • Determining the type of database connection appropriate for your needs—shared-memory connections (where the application and database are on the same machine) or network connections (where the application and database communicate over TCP/IP)1.
  • Determining how context and application state will be managed.
  • Determining other factors such as containerization, load balancing, failover, monitoring, performance, etc.

By the end of your analysis, you should have arrived at a set of actions that you need to perform. These actions typically span across different components and roles, such as for example, a database administrator setting up a multi-tenant database, a DevOps engineer working on a CI-CD pipeline, etc. However, since the focus of this guide is the application itself, its remainder will illustrate how to design and develop a modern OpenEdge application.

1 Although shared-memory connections (also called self-service connections) are faster in certain situations, network connections enable scalability and are therefore the recommended way to connect to a database in a modern deployment design.