Engineering High Performance Applications with AWS – Part 3

This series of articles by Dmitry Agranat (LinkedIn) focuses on the basic concepts and gotchas around building high performance applications using Amazon’s AWS platform. Dmitry Agranat explores the foundation principles of AWS while gradually introducing the reader to various important fundamental concepts around AWS/EC2. Dmitry hopes that through this series of articles, you as the Performance Engineer would gain enough of background knowledge on Amazon’s Cloud capability to become  an effective contributor when it comes to engaging in AWS related discussions/projects within your organization. These articles essentially are aimed at helping readers build stronger understanding of AWS/EC2 and eventually greater appreciation for what Amazon’s AWS has to offer.


Summarizing Our Learnings So Far – In the previous two articles we covered the fundamentals around Amazon’s Cloud Computing Infrastructure. If you have taken the time to go through the previous two articles you would gained a basic understanding of the various Amazon Cloud Computing Infrastructure blocks. The various Amazon Cloud Computing building blocks which we have focused on so far include –

  • EC2 (Compute capacity)
  • S3 (simple storage)
  • EBS (block level storage)
  • CloudWatch (collect and view metrics).

If you are still unsure about the various Amazon Cloud Computing Infrastructure blocks and the basic concepts around Amazon’s Cloud Computing Infrastructure we would highly recommend that you go read up the previous two articles in this series. Links to each of two articles are provided below –AWS

You can read “Engineering High Performance Applications with AWS – Part 1” by clicking here.

You can read “Engineering High Performance Application with AWS – Part 2” by clicking here.

Engaging In Cloud Computing Conversations – Having come this far and gained a basic understanding of Amazon’s Cloud Computing Infrastructure blocks we assume you now are in a position to perform some of the basic tasks including launching/operating each of the Amazon AWS services we’ve covered until now. The various Amazon Cloud compute blocks that has been our focus include –

  • EC2 (Compute capacity)
  • S3 (simple storage)
  • EBS (block level storage)
  • CloudWatch (collect and view metrics).

With the information you’ve gained so far you should thus be able to engage with your Application Architects & Infrastructure Architects on discussions related to AWS from a design standpoint. Whether your IT organization is focusing on an re-engineering an existing Application for scalability/redundancy by adopting Amazon AWS or whether your IT organization is designing a new Application from scratch that includes the relevant Amazon AWS building blocks for scalability/redundancy you should be able to effectively contribute to those discussions by combining your knowledge of the Amazon AWS compute blocks with the background of Performance Engineering that you bring to the table.

Amazon’s AWS and the various building blocks as we know it are designed to be infinitely scalable and provide their customers Scalability on Demand. However, it is up to the Application & Infrastructure Architects to design a system that manages failures across the board and takes necessary action to remedy those failures ensuring that the service being delivered including end user experience isn’t impacted. If this is your IT organizations initial foray into the Cloud there are definitely going to be a lot of concerns, questions, and perceptions about the potential impact on the system performance when adopting the cloud to build the underlying infrastructure blocks. The best way to address these concerns, questions and potential negative perceptions about usage of the cloud is to recommend a Proof Of Concept (PoC) at the design session. The Proof Of Concept (PoC) is a great opportunity for you to work closely with your Application & Infrastructure Architects to validate the concepts and address any of the concerns that the various stakeholders might have.

Contributing To Success Of PoC’s – This is where you, as a Performance Engineer can bring the most impact. Put your hand up and provide the leadership required for the various POC’s. Every PoC is an opportunity to learn more and gain increased experience in design/architecture/optimization of systems that use the cloud as it’s basic building blocks. If you are a beginner in the Performance Engineering space  then you might not be able to lead the Proof Of Concept but you could still connect with other Experience Performance Engineers inside/outside your organization and leverage their understand/experience to help the internal Proof Of Concept be successful. This could also be an excellent opportunity to connect with System Architects, DBA’s and R&D managers to get assistance with process provisioning/deploying/configuring and optimizing the various system components within the cloud.amazon-web-services-art-work-real-auto-scaling

As you move through the provisioning/configuration you will encounter numerous AWS Compute block related options and will need to make decisions with regards to the type of service you need to invest in for purposes of both the Proof Of Concept and the final deployment i.e. Dev/Test/Prod infrastructure. The guys at Amazon are wise enough not to recommend designing of your systems or applications based on existing “Performance best practices”. The experienced Performance Engineers and Architects among you might know that, best practices at times are an admission of failure. As Dr. Neil Gunther (Author or Practical Performance Analyst and a distinguished SPE professional) once wrote “Mindlessly following the best practices defined by others is actually a failure to understand your own particular requirements for performance and capacity”. So if that’s the case what are your options, how should you address the question of infrastructure/capacity sizing and what should you do?  Amazon offers its various Cloud Infrastructure Capacity blocks in different sizes (instance sizes), each with one or more size options, organized into six distinct instance families optimized for different types of applications. We recommend that you assess the requirements of your applications from a Non Functional Standpoint and select the appropriate instance family as a starting point for application performance testing depending on your application Non Functional Requirements.

The Proof Of The Pudding Is In The Eating – All said and done the best way to understand the real end user experience including the ability of your system to scale and meeting the documented Non Functional Requirements is to benchmark the application as part of the Proof Of Concept. We recommend that you evaluate the performance of your applications within the Proof Of Concept by –

  • Identifying how your application needs compare to different instance families (e.g. is the application compute-bound, memory-bound, etc.?),
  • Document your Non Functional Requirements and agree with the various stakeholders on the Non Functional Requirements
  • Confirm the Workload for your System including any specific SLA’s that might be applicable from a business standpoint
  • Work with Amazon’s Cloud Architects if required to size the basic infrastructure blocks and choose the relevant computing block instance sizes

There is absolutely no substitute for measuring the performance of your full application since application performance can be impacted by the underlying infrastructure or by software and architectural limitations across the stack.  We recommend application-level testing, including the use of application profiling and load testing tools and services. The same goes for other Amazon Cloud Computing services like EBS, S3, etc. We also recommend that you review the following –

Having a good understanding of the above from an IOPS perspective will help you understand your system requirements with regards to storage for the various applications tiers. You might also want to Benchmark Volumes with fio, Oracle Orion Calibration Tool or SQLIO and confirm the ability of the underlying storage layer to provide your application the require throughput with regards to IOPS (read/write).

Closing Notes – The success of your Proof Of Concept depends on your ability to lead the team while working closely with the Architects, DBA’s, Systems Administrators including any outside Cloud Solution Architects you might have brought on board. Work closely with your peers through the entire process, participate in status meetings and provide visibility on the progress of the Proof Of Concept to senior management. Highlight any risks and issues that might crop up along the way and keep the management appraised of the current situation including the outcomes. Remember, this is a great opportunity to bring about a positive impact from an IT standpoint by reducing Capital Expenditure and optimizing the way IT builds/deploys/manages systems across the board. We also recommend that you proactively sync with people involved in similar Proof Of Concepts within/outside your organization with the objective of sharing/leveraging the knowledge gained. It’s also a great opportunity for you to demonstrate leadership from a Performance Engineering standpoint, increase collaboration across the board and demonstrate Performance Engineering’s ability to lead and deliver successful outcomes.

Amazon, AWS, S3, EBS, EC2 and Cloudwatch are copyrights owned by Amazon US (www.amazon.com).


Dmitry Agranat (LinkedIn), is a Performance Engineering Principal with primary focus on bringing a positive impact on overall organizational system performance. His professional career has started in 2005 at Mercury (now HP Software). Dmitry has worked with many internal and external customers to both solve immediate performance problems as well as to educate on building solid organizational performance management methodology. Dmitry believes that Performance Engineering (PE) is still not well understood, agreed upon, unified or can be quantified, thus requires building solid and effective entrepreneurship around Performance domain.

Amazon Web Services For Dummies

Price: $44.20

4.1 out of 5 stars (71 customer reviews)

6 used & new available from $44.20

Cloud Computing Explained: Implementation Handbook for Enterprises

Price: $29.72

3.9 out of 5 stars (30 customer reviews)

67 used & new available from $2.61

Programming Amazon EC2: Survive your Success

Price: $22.01

3.4 out of 5 stars (24 customer reviews)

61 used & new available from $3.99

Related Posts

  • Engineering High Performance Applications with AWS – Part 6Engineering High Performance Applications with AWS – Part 6 This series of articles focuses on the basic concepts and gotchas around building high performance applications using Amazon’s AWS platform. Dmitry Agranat explores the foundation principles of AWS while gradually introducing the reader to various important fundamental concepts around […]
  • Engineering High Performance Applications with AWS – Part 5Engineering High Performance Applications with AWS – Part 5 This series of articles focuses on the basic concepts and gotchas around building high performance applications using Amazon’s AWS platform. Dmitry Agranat explores the foundation principles of AWS while gradually introducing the reader to various important fundamental concepts around […]
  •  Engineering High Performance Applications with AWS – Part 4 Engineering High Performance Applications with AWS – Part 4 This series of articles focuses on the basic concepts and gotchas around building high performance applications using Amazon’s AWS platform. Dmitry Agranat explores the foundation principles of AWS while gradually introducing the reader to various important fundamental concepts around […]
  • Engineering High Performance Applications with AWS – Part 2Engineering High Performance Applications with AWS – Part 2 This series of articles by Dmitry Agranat (LinkedIn) focuses on the basic concepts and gotchas around building high performance applications using Amazon’s AWS platform. Dmitry Agranat explores the foundation principles of AWS while gradually introducing the reader to various important […]