2 / 10 Key Digital Infrastructure Considerations
1 Continuous improvement is key
As the delivery of new iterations of applications
becomes increasingly crucial, applying the DevOps
construct of continuous delivery (CD) needs to be at
the heart of the application design. CD determines
the speed at which organizations can respond to
threats, risks and opportunities.
For more, read our white paper, “Continuous
Integration and Continuous Delivery to Facilitate
Web Service Testing.”
AWS services such as CodeBuild, CodePipeline,
Elastic Beanstalk and CloudFormation can play
a pivotal role in ensuring faster, more consistent
delivery of the application.
2 Consider being serverless
Wherever possible, consider using serverless
architectures in application design. Leveraging
content delivery network services such as Amazon
CloudFront helps in delivering content (static and
dynamic) to end users worldwide with minimal latency.
Utilizing a combination of AWS services such as
Simple Storage Service (S3), API Gateway, Lambda
and DynamoDB/Aurora to host completely serverless
web applications on the cloud can reduce costs
and eorts while providing excellent availability and
durability. Compared to the traditional approach,
using services such as S3, CloudFront and Lambda
can reduce the eort (and thereby costs) needed to
build and manage multiple app/web servers.
3 Advocate loose coupling
Adopt loose coupling in the application architecture
to ensure that dependencies between the application
tiers/components are minimal. Achieving loose
coupling will enable dierent tiers/components to
scale independently based on the demand. Simple
queue services (SQS) makes it easy and cost-eective
to decouple application components.
When loosely coupled applications (such as web tiers,
Hadoop, Stateless applications, etc.) leverage Spot
instances, it improves the application’s robustness
while also reducing costs significantly. As a best
practice, one can have a script that will run every
minute or so to check for the two-minute-warning
received for Spot instances and remove the instance
from elastic load balancers (ELB) accordingly. Using
batching with SQS will significantly reduce costs while
improving throughput.
Thinking about failure while architecting the application will result in
the consideration and inclusion of resilience and recovery strategies
in the design, bringing about a much more stable application.
Cognizant 20-20 Insights