Make a legacy workload safer without breaking it
Preserve the protocols and platform behavior that cannot change, then add the smallest compatible managed layer around each remaining failure point.
LESSON GOALS
By the end, you can
- Separate genuine protocol, operating-system, filesystem, and licensing constraints from habits that can change.
- Choose compatible managed brokers, filesystems, proxies, replacement, and balancing while stating the residual risk.
01
Separate hard compatibility from habit
Start by asking what the application truly cannot change today. A required wire protocol or Windows filesystem can be hard; a hand-built server is usually only the current implementation. Inventory protocol, OS, kernel, license, directory, filesystem semantics, local state, session behavior, database driver, deployment method, downtime, and code-change prohibition.
Separate hard contract from habit: ActiveMQ wire compatibility can be hard; a hand-built broker may not be. Windows SMB and directory integration differ from POSIX NFS. A vendor kernel driver can block containers. The first improvement removes the named failure without unsupported rewrite. State residual risk honestly. Load-balancer stickiness preserves affinity for local sessions, but failed targets lose sessions.
Rehosting one VM does not create HA. A managed service must use the deployment mode surviving the failure. Purpose-built selection matches protocol and failure behavior; it does not replace every legacy interface with a fashionable service.
02
Add the smallest compatible managed layer
A useful managed service preserves the required client contract while removing one operating burden or failure point. Amazon MQ fits existing ActiveMQ or RabbitMQ clients; for ActiveMQ choose documented active/standby across AZs when AZ loss matters. SQS is preferable for a cloud-native redesign but not wire-compatible. FSx for Windows fits SMB, NTFS, and directory requirements; EFS supplies NFS/POSIX and is not SMB.
RDS Proxy reduces connection churn for supported clients, subject to engine and session behavior. Transfer Family preserves managed SFTP, FTPS, FTP, or AS2 endpoints; it is not a filesystem or broker. An unchanged HTTP app can run on EC2 across AZs behind ELB with immutable images. Each service removes one burden while preserving compatibility.
03
Improve resilience without claiming a rewrite
When code cannot yet externalise sessions or change protocols, improve the surrounding architecture and label what still fails. Externalize durable state where supported. If sessions remain local, distribute instances and use stickiness temporarily, but quantify loss on failure. Build immutable AMIs, automate replacement, drain connections, and test license activation elsewhere. Include DNS, identity, certificates, storage, broker, database, and vendors in the failure trace.
Isolate legacy ports, use TLS or private paths, rotate credentials, patch images, and audit administration. Compare managed cost against clustered self-operation, but reject low cost violating protocol or AZ survival. Document modernization trigger: when change is possible, externalize sessions or adopt cloud-native messaging. Until then, compatible improvement with explicit risk is honest architecture—not perfect fault tolerance.
Build a compatibility matrix before migration: client protocol and version, authentication method, filesystem locking, case sensitivity, message transactions, reconnect behavior, license host identity, and supported failover mode. Mark each row hard, negotiable, or unknown and test the unknowns with the vendor. This prevents a managed service from being selected on a familiar label while failing a wire-level contract.
During an AZ exercise, terminate the active broker and one application host, then observe broker reconnect time, new-login success, file-share availability, and the declared loss of existing local sessions. Protect old protocols behind private routing and narrow security groups, keep administrative credentials in a managed secret path, and audit vendor access.
Managed Multi-AZ services and idle application capacity cost more than one large VM, but compare them with the stated outage impact and the labor of self-managed clustering. The modernization trigger should be measurable—such as local-session losses exceeding the tolerance—so temporary stickiness does not become permanent architecture by inertia.
DECISION TABLE
Compare the architecture constraints
| requirement | choose | because | reject |
|---|---|---|---|
| ActiveMQ protocol and AZ survival | Amazon MQ active/standby | Protocol and HA mode match | SQS needs rewrite; single broker is one AZ |
| Windows SMB and directory | FSx for Windows Multi-AZ | Windows semantics decide | EFS is NFS/POSIX |
| Local sessions; no code change | Multi-AZ instances plus temporary stickiness | Preserves affinity | It does not preserve failed-target sessions |
| Connection-heavy legacy RDS client | RDS Proxy | Pooling fits | Cache and reader differ |
GUIDED WORKED SCENARIO
Reason from the stated constraints
This is a guided example, not a question to memorise. The knowledge check uses new situations to test the same reasoning.
A licensed Windows app uses local sessions, ActiveMQ, and SMB. Code cannot change nine months. AZ outage must retain new logins and messages, but existing sessions may be lost.
Requirements
- Preserve ActiveMQ
- Preserve Windows SMB
- Serve new sessions after AZ loss
- State existing-session loss
Reasoning path
- Use MQ active/standby.
- Use FSx for Windows Multi-AZ.
- Run immutable EC2 across AZs behind ELB.
- Use stickiness temporarily and document loss.
Why it wins
- It removes AZ single points without violating protocols.
- It does not call affinity fault tolerance.
Why the alternatives lose
Violates code and protocol constraints.
Becomes correct when: Modernization is authorized.Leaves every component a SPOF.
Becomes correct when: No HA is required.Does not solve protocols, license, or sessions.
Becomes correct when: Supported containers and Kubernetes are required.ARCHITECTURE VISUAL · TEXT MODE
Inspect the model
Compatibility worksheet: fixed protocol, filesystem, operating system, local state, smallest compatible AWS service, Availability Zone behavior, residual risk, and the condition that would permit later modernisation.
KNOWLEDGE CHECK
Answer one question at a time
Pass every question to complete this lesson. Each answer includes reasoning before you continue.
KEY TERMS
Glossary
- Legacy workload
- An existing system constrained by older protocols, platforms, dependencies, or change limits.
- Compatibility constraint
- A behavior the replacement must preserve, such as a wire protocol or filesystem interface.
- Amazon MQ
- A managed broker for supported engines and protocols such as ActiveMQ or RabbitMQ.
- SMB
- A network file-sharing protocol commonly used by Windows applications.
- NFS
- A network filesystem protocol commonly used by Linux and Unix clients.
- Session affinity
- Routing a client back to the same target, often called stickiness.
- Residual risk
- A known failure or limitation that remains after the current improvement.
- Immutable AMI
- A tested machine image replaced as a unit rather than repaired manually.
- Connection draining
- Allowing in-flight work to finish before a target is removed.
- Modernisation trigger
- A future condition that permits a deeper protocol, state, or application change.
PRIMARY SOURCES
Verify the claims
- primaryAmazon MQ for ActiveMQ brokersaws-amazon-mq-activemq-brokers · retrieved 2026-07-30
- primaryWhat is Amazon FSx for Windows File Server?aws-storage-fsx-windows · retrieved 2026-07-29
- primaryWhat is Amazon EFS?aws-storage-efs · retrieved 2026-07-29
- primaryAmazon RDS Proxyaws-rds-proxy · retrieved 2026-07-30
- primaryWhat is Amazon EC2 Auto Scaling?aws-compute-asg · retrieved 2026-07-29
- primaryWhat is Elastic Load Balancing?aws-compute-elb · retrieved 2026-07-29
- primaryWhat is AWS Transfer Family?aws-xfer-transfer-family · retrieved 2026-07-29
- primaryWhat is Amazon EC2?aws-compute-ec2 · retrieved 2026-07-29