The design of an application is key when it comes to achieving the required availability and performance goals.
An availability design has to answer questions like
- where to put state if it can't be avoided
- how to validate the proper service of an application
- how to detect, report and act on errors in the application or underlying software layers
- how to protect data via transactions
- node reintegration, i.e. program and data fallback
- software upgrades
The performance design needs to take care of
- vertical vs. horizontal scalability
- placement of data: replication vs. partitioning, caching
- routing of requests
If a full single system image is not available the application may have to provide the missing parts.
Migrating an application from one cluster architecture to another can be a difficult task. Cluster functionality, services and API's are far from being standardized. Differences in data sizes and/or byte order may require more than an export/import of the data. In order to take the risk out of migration this service looks at the application, middleware, performance and availability requirements. The application analysis includes an evaluation of the cluster specific API's and subsystems used and how the data in files and databases, if any, can be migrated.