Amazon Web Services: Migrating your .NET Enterprise Application
Rob Linton, Packt Publishing
Amazon Web Services (AWS) is not a small topic. Just listed on their ‘product summary’ page are 28 different topics, most with an entire set of both product and API documentation behind it.
Condensing that into a book is not a trivial task, and it requires establishing a suitable narrative. This book has taken the angle of a “.NET Enterprise Application”, and starts off well: a sample application, if a little trivial, is provided, and a goal stated to move the application from traditional server hosting to the Amazon cloud.
Good, but short, consideration is given to why you would put such an application in AWS rather than a platform solution. It then dives in to creating instances for deploying the application.
A book that takes you on a journey, as opposed to a general reference book, should not be afraid to make choices. Five pages are dedicated to the Import/Export service, which lets you post Amazon a hard drive. Shipping terabytes of data is a problem that users are unlikely to have up front – the book should acknowledge its existence, but it wastes time and confuses users by going in-depth on a subject which should be an appendix at best.
Similarly, Chapter 6 covers SQL Server, required for the example application, but then also covers Oracle, MySQL (RDS) and Amazon’s key-value store SimpleDB, none of which are used or required. It is great to see that the notification (SNS) and queuing (SQS) are discussed in the context of how the application could be enhanced to use them, although using these services means you are “locked in” in much the same way you are on a platform service – somewhat undermining the point the book made in the beginning.
Many statements in this book are just plain wrong (such as Amazon.com not being hosted on AWS, or network (EBS) volumes being faster than instance disks – whole books could be written on this topic alone). Other sections of the book are have been made outdated as Amazon has rolled out improvements – the most major of which being the new license mobility options allowing the use of SQL Server Enterprise. While there is nothing the author or publisher can do about progress, there are occasions where the book is internally inconsistent – for example, referring to 4 regions in one section and 5 in another. In general, poor editing detracts from the reading experience.
One of the reasons Amazon is so much cheaper than regular datacenter providers is they allow you to build reliable solutions out of commodity hardware. However, this means you need to make allowances that are not at all discussed in this book. Deploying applications across availability zones is absolutely essential – Amazon is up-front in saying that they expect failures, which are widely reported by people who do not understand that AWS is not a traditional, expensive battery-backed-SAN-reliable datacenter. This book mentions availability zones, but doesn’t show how to properly use them.
Redundancy is only briefly touched on – SQL mirroring and failover, possibly the most important topic this book could cover, is given two paragraphs and then offloaded to Microsoft. Even though there appears to be enough servers for a redundant architecture, the eventual service is riddled with single points of failure and there is no way that an application built to this model should be allowed into production on AWS.
Further, many best practices, especially those around firewalls, security groups and Active Directory, are described incorrectly, and are likely to lead to insecure or unnecessarily expensive deployments.
The author clearly understands both Windows/SQL Server and the basics of AWS, but taking 28 topics and picking out the important ones is a difficult task, and overall this book does a poor job of it.
Updating a manuscript to include new functionality means it would effectively never be published. The alternative is a ‘living document’, published online: hard to make money from, but guaranteed to be up-to-date. I am unlikely to bother reading another book on AWS.