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.
Considering using the cloud – If you happen to be considering a scalable cloud based platform for your next program, Amazon’s EC2 is surely to be on the list among a host of other possible platform providers. Through its various cloud based application (e.g. MapReduce, etc.), compute (e.g. EC2) and storage offerings (e.g. EBS), Amazon has truly revolutionized the way the world thinks about cloud computing bringing cloud computing within everyone reach. Amazon was truly a pioneer in bringing to life one of the world’s largest public cloud computing platforms. So what does all of this have to do with Systems Performance Engineering you might ask and why on earth are we singing praises of Amazon and its AWS offerings at Practical Performance Analyst?
If you happen to be reading this article and have got this far it’s highly likely that you are in the business of helping your customers’ either design, build, develop, test, optimize or manage applications. Now, let’s just assume that your organization has decided to make use of the AWS (Amazon Web Services) platform to build and deliver a highly scalable, highly performing, highly available, highly reliable and fault tolerant system within aggressive timeframes. You can expect there to be numerous performance related challenges that will come your way as you go about gathering requirements, designing, building, testing and delivering the application. To be well positioned to deal with those performance, availability, reliability, scalability, and fault tolerance related challenges on AWS, you will need to be well versed with both the application stack and more importantly the underlying AWS terminology.
Scalability on demand – If you an SPE (Systems Performance Engineering) professional with an interest in performance across the SDLC we are almost certain that you will quickly fall in love with AWS. Just think of it, unlimited resources and capacity on demand with an auto-scaling mechanism, all built into the platform. It sounds too good to be true, eh? Theoretically this is true, but in reality it’s up-to the Performance Architect to work with the application architects, infrastructure architects and developers in adopting the right architectural principles, code constructs and libraries to leverage the power of the cloud i.e. to build the relevant availability, scalability, reliability and fault tolerance that the cloud offers into the system being delivered. Only if your Performance Engineering organization is exactly like AWS, with unlimited resources, unlimited capacity, immediately available on demand…otherwise, there is an adaptation required both in terms of processes, technology, tools, skills and most importantly – state of mind.
Through this series of articles we will focus on the various challenges one might face trying to adapt to the various new concepts and paradigms of the cloud including the potential solutions available to address those challenges.
Where to start when starting with AWS – It helps initially if you focus on gaining insight into the general concepts around cloud computing and understand the differences between the different types of cloud offerings i.e. private vs. public vs hybrid including SaaS vs Paas vs IaaS. Pay special attention to Elasticity and services concepts like HA (High Availability), DR (Disaster Recovery), SLA (Service Level Agreement). Review the latest Gartner Magic Quadrant for Cloud Infrastructure as a Service with a focus on understanding the various underlying relevant vendor strengths and gotchas. We would recommend that you spend time going through relevant AWS documentation, white papers, AWS blog, AWS Architecture Center, tutorials, videos and how to’s. Look for tutorials and training material focused on general concepts aimed at beginners.
Amazon has excellent tutorials, documentation and lot of high quality resources for developers, and architects. As you troll through the AWS documentation write down topics/questions you’ll want to further explore later on. You could start with some of the following topics –
A search for “AWS performance” at google will also help you find valuable inputs from real AWS customers as well as elegant solutions for typical performance issues that one could encounter when designing and building applications for the cloud. Another good way to keep in touch with what’s happening in the AWS world is to join AWS related forums, for example on AWS forums on LinkedIn that will help you stay on top of important updates, design challenges, customer issues and more importantly platform features that could help you building more scalable applications. You’ll find answers to most commonly asked questions on performance at the AWS forums. One other resource that we have found to be truly helpful is the Netflix technical blog. Netflix is the most outstanding AWS customer with state of the art solutions developed especially to address domains likes Performance, HA, Scalability.
Stay tuned for the next post. Till then, happy hacking.
Images – The Amazon Web Services Copyright & logo is owned by Amazon US. The scalability diagram is from Juan Domenech’s blog.
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.