Applying the AWS Well-Architected Framework to Modernize a Legacy CRM & Employee Portal Platform
Modernizing enterprise applications is not only about containerization and CI/CD automation — it’s about aligning architecture decisions with the AWS Well-Architected Framework’s six pillars:
- Operational Excellence
- Security
- Reliability
- Performance Efficiency
- Cost Optimization
- Sustainability
This post analyzes a cloud-native CRM & Employee Portal modernization through the lens of Well-Architected best practices.
1. Operational Excellence
Goal: Run and monitor systems to deliver business value and continuously improve processes.
Challenges in Legacy Environment
- Manual 2–3 hour deployments
- No centralized logging
- No automated rollback
- High dependency on human intervention
Architectural Decisions
CI/CD Automation
- GitHub → CodePipeline → CodeBuild → ECR → CodeDeploy → ECS Fargate
- Blue/green deployments with automated rollback
- Infrastructure defined as code
Observability
- CloudWatch metrics and logs for ECS, ALB, RDS
- Custom CloudWatch alarms
- SNS-based alerting
- CloudTrail API activity logging
- External synthetic monitoring
{
"AlarmName": "crm-platform-composite-health",
"AlarmDescription": "Composite alarm — triggers only when both ECS task failures AND high ALB error rate occur simultaneously, reducing alert noise",
"AlarmRule": "ALARM(crm-ecs-task-failure-alarm) AND ALARM(crm-alb-5xx-rate-alarm)",
"ActionsEnabled": true,
"AlarmActions": [
"arn:aws:sns:ap-south-1:<account-id>:crm-oncall-alerts"
]
}
# Create the two child alarms first
# 1 — ECS task failure alarm
aws cloudwatch put-metric-alarm \
--alarm-name crm-ecs-task-failure-alarm \
--namespace AWS/ECS \
--metric-name TaskCount \
--dimensions Name=ClusterName,Value=crm-cluster \
--statistic Minimum \
--period 60 \
--threshold 1 \
--comparison-operator LessThanThreshold \
--evaluation-periods 2 \
--alarm-actions arn:aws:sns:ap-south-1:<account-id>:crm-oncall-alerts
# 2 — ALB 5xx error rate alarm
aws cloudwatch put-metric-alarm \
--alarm-name crm-alb-5xx-rate-alarm \
--namespace AWS/ApplicationELB \
--metric-name HTTPCode_Target_5XX_Count \
--dimensions Name=LoadBalancer,Value=<alb-arn-suffix> \
--statistic Sum \
--period 60 \
--threshold 10 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--alarm-actions arn:aws:sns:ap-south-1:<account-id>:crm-oncall-alerts
# 3 — Composite alarm combining both
aws cloudwatch put-composite-alarm \
--alarm-name crm-platform-composite-health \
--alarm-rule "ALARM(crm-ecs-task-failure-alarm) AND ALARM(crm-alb-5xx-rate-alarm)" \
--alarm-actions arn:aws:sns:ap-south-1:<account-id>:crm-oncall-alerts
The composite alarm is the key operational excellence pattern here. Individual alarms on ECS task count or ALB 5xx errors fire frequently on transient blips — a single noisy alert trains teams to ignore alerts. The composite alarm fires only when both conditions are true simultaneously, which is a genuine platform health event requiring human action. This reduced alert fatigue by ~70% on the CRM platform and improved on-call response quality.
Outcomes
- 98% reduction in deployment time
- Zero-downtime releases
- 80% reduction in manual operations
- Faster incident response
Well-Architected Alignment:
- Perform operations as code
- Make small, reversible changes
- Refine operations procedures frequently
- Anticipate failure
2. Security
Goal: Protect information, systems, and assets while delivering business value.
Legacy Gaps
- Hardcoded credentials
- No encryption enforcement
- No layered network segmentation
- Limited audit trails
Security Controls Implemented
Identity & Access
- IAM task roles (least privilege)
- Role-based CI/CD permissions
- Resource-level IAM policies
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSecretsManagerAccess",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": "arn:aws:secretsmanager:ap-south-1:<account-id>:secret:crm-db-*"
},
{
"Sid": "AllowECRImagePull",
"Effect": "Allow",
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability"
],
"Resource": "arn:aws:ecr:ap-south-1:<account-id>:repository/crm-app"
},
{
"Sid": "AllowCloudWatchLogs",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:ap-south-1:<account-id>:log-group:/ecs/crm-app:*"
},
{
"Sid": "DenyEverythingElse",
"Effect": "Deny",
"NotAction": [
"secretsmanager:GetSecretValue",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
Secrets Management
- AWS Secrets Manager
- Runtime injection of credentials
- Automatic secret rotation
Why Secrets Manager over Parameter Store? Both AWS Secrets Manager and Systems Manager Parameter Store can store credentials securely, and Parameter Store is free for standard parameters. We chose Secrets Manager for this CRM platform for three specific reasons: automatic secret rotation on a defined schedule without any application code change, native integration with RDS to rotate database passwords automatically, and a dedicated audit trail in CloudTrail that logs every secret access event. For a CRM handling customer PII, the rotation capability alone justified the cost — a credential that auto-rotates every 30 days has a fundamentally smaller blast radius than one that relies on manual rotation discipline.
Network Segmentation
- Public subnets (ALB only)
- Private subnets (ECS + RDS)
- Security Groups for micro-segmentation
- Network ACLs as secondary boundary
Encryption
- KMS encryption for RDS
- Encrypted S3 storage
- TLS via CloudFront + ALB
Threat Detection & Audit
- CloudTrail for API logging
- GuardDuty for threat monitoring
- VPC Flow Logs for network visibility
Outcomes
- Elimination of hardcoded secrets
- Full encryption at rest and in transit
- Audit-ready logging for compliance
Well-Architected Alignment:
- Implement strong identity foundation
- Enable traceability
- Protect data in transit and at rest
- Apply security at all layers
3. Reliability
Goal: Ensure workload performs correctly and consistently when expected.
Legacy Risks
- Single-point-of-failure servers
- No fault tolerance
- Long downtime during deployment
Reliability Enhancements
Compute Layer
- ECS tasks across multiple Availability Zones
- Fargate-managed infrastructure
- ALB health checks
Database Layer
- Amazon RDS Multi-AZ deployment
- Automated backups
- Point-in-time recovery
Deployment Resilience
- Blue/green releases
- Automatic rollback
Why Blue/Green over Rolling deployments? Rolling deployments gradually replace instances and are simpler to set up — but they create a window where two versions of the application run simultaneously. For a CRM with active user sessions and database schema dependencies, mixed-version traffic is a real risk. Blue/Green eliminates this entirely: the new version is fully deployed and validated in the green environment before a single byte of live traffic touches it. The ALB listener rule switches traffic in one atomic operation, and rollback is equally instant — flip the listener back. The ~5-minute additional deployment time is a worthwhile trade for zero mixed-version exposure and sub-second rollback capability.
Edge Resilience
- CloudFront CDN reduces regional latency impact
Outcomes
- Zero downtime deployments
- Multi-AZ resilience
- Automated failover for database
- Consistent availability during peak usage
Well-Architected Alignment:
- Automatically recover from failure
- Test recovery procedures
- Scale horizontally
- Manage change through automation
4. Performance Efficiency
Goal: Use IT and computing resources efficiently.
Legacy Constraints
- Fixed hardware capacity
- No auto-scaling
- Global latency issues
Optimization Strategies
Serverless Containers
- ECS with Fargate eliminates overprovisioning
- Scale tasks dynamically
CDN Acceleration
- CloudFront reduces global latency
- Edge caching for static assets
Auto Scaling
- ECS task auto-scaling policies
- ALB request-based scaling
Managed Services
- RDS managed scaling and performance tuning
Outcomes
- Improved global performance
- Elastic scalability during CRM peak loads
- Reduced resource waste
Well-Architected Alignment:
- Democratize advanced technologies
- Go global in minutes
- Use serverless architectures
5. Cost Optimization
Goal: Avoid unnecessary costs.
Legacy Cost Drivers
- Overprovisioned on-prem hardware
- Idle compute during lean periods
- Manual operations overhead
Cost Improvements
Pay-As-You-Go Model
- Fargate eliminates unused capacity costs
- Auto-scaling reduces idle compute
Why Fargate pay-per-use over Reserved EC2? Reserved EC2 instances offer up to 72% savings over On-Demand pricing — but only when utilisation is consistently high. This CRM platform has predictable business-hours peaks and near-zero overnight traffic. With EC2 reserved capacity, you pay for that overnight compute regardless. Fargate tasks scale to zero during off-peak hours, meaning the overnight cost is literally zero. We modelled both options: at the platform's actual utilisation pattern, Fargate came out ~22% cheaper than equivalent Reserved EC2, with the additional benefit of zero capacity management. The trade-off is slightly higher per-vCPU cost at peak — accepted because the off-peak savings more than compensate across a full month.
Reduced Operational Overhead
- Automation reduced manual labor costs
Managed Services
- Reduced DBA and infrastructure management effort
Outcomes
- ~38% overall cost savings
- Improved cost predictability
- Reduced hardware lifecycle expenses
Well-Architected Alignment:
- Adopt consumption model
- Measure overall efficiency
- Stop spending on undifferentiated heavy lifting
6. Sustainability
Goal: Minimise the environmental impact of running cloud workloads.
Sustainability is the newest of the six pillars — added in 2021 — and the one most commonly skipped in modernisation blogs. It deserves more than a footnote.
What changed with this migration:
Moving from on-premises physical servers to AWS Fargate on ECS has a direct and measurable sustainability impact across three dimensions:
Server elimination and energy reduction The legacy CRM ran on dedicated physical servers with fixed power draw — regardless of whether they were serving ten users or ten thousand. Those servers consumed power 24/7, including nights, weekends, and holiday periods when the CRM had near-zero traffic. Fargate tasks scale to zero during off-peak hours, meaning compute energy consumption directly tracks actual workload demand. No idle servers, no idle power draw.
AWS infrastructure efficiency advantage AWS operates at a scale that individual enterprises cannot match. AWS data centres run at Power Usage Effectiveness (PUE) ratings significantly below the industry average of ~1.6 — AWS has published PUE figures approaching 1.2 for its most efficient facilities. Workloads running on AWS infrastructure benefit from this efficiency simply by being there. Additionally, AWS has committed to powering operations with 100% renewable energy — a commitment that covers the ap-south-1 (Mumbai) region where this workload runs.
Right-sizing and overprovisioning elimination On-premises infrastructure is typically overprovisioned to handle peak load — which means the average utilisation is far below capacity, and that idle capacity still consumes power. Auto-scaling on ECS Fargate means the platform runs at consistently higher utilisation, with compute matched to demand in real time.
AWS Customer Carbon Footprint Tool AWS provides the Customer Carbon Footprint Tool in the Cost & Usage dashboard. This tool shows estimated carbon emissions for your AWS usage and compares them against equivalent on-premises emissions. For workloads migrated from physical servers, the reduction is typically substantial — AWS reports that moving on-premises workloads to AWS can reduce carbon emissions by up to 80% depending on region and workload type.
Well-Architected Alignment:
- Understand your impact — measure workload emissions using the Carbon Footprint Tool
- Maximise utilisation — Fargate's serverless model aligns compute consumption with actual demand
- Use managed services — offload infrastructure management to AWS and benefit from their efficiency investments
- Adopt serverless patterns — scale to zero is the most sustainable compute model available
Cross-Pillar Observations
Pillar
Key Modernization Lever
Operational Excellence
CI/CD + Observability
Security
IAM + Secrets Manager + KMS
Reliability
Multi-AZ + Blue/Green
Performance
Fargate + CloudFront
Cost
Serverless scaling
Sustainability
Elastic resource usage
Architectural Maturity Assessment
The modernization demonstrates movement from:
❌ Manual, static, monolithic operations
→
✅ Automated, elastic, secure, observable cloud-native architecture
It aligns strongly with:
- Infrastructure as Code principles
- DevOps-driven change management
- Zero-trust security posture
- Event-driven automation
A Presales Perspective on the Well-Architected Framework
In Presales conversations, the AWS Well-Architected Framework is one of the most powerful tools in the discovery toolkit — not because it impresses customers with AWS vocabulary, but because it gives both sides a shared, structured language to talk about architecture debt honestly.
Most enterprise customers I work with know their current architecture has problems. What they struggle with is articulating which problems matter most, why they matter, and in what order to address them. The six pillars change that conversation. When I walk a customer through a lightweight Well-Architected review — even informally in a whiteboarding session — three things consistently happen: they immediately recognise their own pain points in the pillar descriptions, they start self-identifying gaps they hadn't formally acknowledged before, and the conversation shifts from "we need to migrate to cloud" to "here are the specific architectural decisions we need to make."
The CRM modernisation described in this blog began exactly that way. A WAF-framed discovery surfaced five distinct risk areas — hardcoded credentials, no automated rollback, single-AZ database, fixed hardware capacity, and zero cost visibility — that the customer had previously described collectively as "our system is old and slow." That framing shift, from a vague complaint to five specific, addressable architectural gaps, is what made the business case fundable and the project scoped correctly from day one.
For Presales professionals working with AWS: the Well-Architected Framework is not a post-sale delivery tool. Used early, it is one of the most effective ways to establish technical credibility, structure a customer's thinking, and build a modernisation roadmap that the customer feels ownership over — because they helped identify the gaps themselves.
Final Reflection
Applying the AWS Well-Architected Framework transforms modernization from a migration project into a structured architecture evolution.
This CRM & Employee Portal modernization illustrates that:
- Containerization improves agility
- Automation improves reliability
- Security must be embedded, not layered later
- Managed services reduce undifferentiated operational burden
For AWS architects, the takeaway is clear:
Well-Architected is not a checklist — it is a design discipline.
Author
Rajat Jindal
VP – Presales
AeonX Digital Technology Limited
