Integrating Additional AWS Services into Your Application
One major benefit of Amazon’s approach to application services is that it provides them on a use-if-you-choose basis. Nothing prevents you from using another product or service to implement identical functionality to that offered by one of Amazon’s services — even if you decide to run that productor service in AWS.
Two tasks are present in using an AWS core services in your application:
✓ Create and configure the service itself.
✓ Use the service from within your application.
With respect to the first task, it’s typically much easier to use the Amazon alternative for a given service compared to setting up your own. For example, filling out a brief wizard to create, say, a large memcached pool and letting Amazon take care of creating the instances, installing the memcached software,configuring them to talk to one another, and managing their uptime, for example, is far easier than performing all those tasks yourself.
I’m not even mentioning the fact (okay, I am) that your interest is in the functionality of the service, not in managing the service per se. In other words,if you do it yourself, to gain the benefits of the core service, you have to do all the work yourself. By contrast, using the Amazon variant, you gain the benefits of the service without needing to invest any of your precious time administering it.
Depending on your valuation of your time, you can make an evaluation of the financial benefits of allowing Amazon to take on responsibility compared to the cost of the Amazon service. I believe that in most cases you’d be better off using the Amazon service, financially speaking.
With regard to the second task — using the service from within your application— Amazon’s approach to offering these services shows its intelligence. Rather than create a different or comprehensive solution that requires you to learn an offering-specific use model, Amazon has typically left the use model undisturbed, or similar to the model used by the alternatives you would use if you decided to implement the functionality yourself. For example, though Amazon’s RDS service offers real benefits in terms of database administration tasks, it imposes no change on you for interacting with the databases that are managed by RDS.
It’s fair to say that the differences between the established products that Amazon mirrors to create its core services and the Amazon variant is small enough that using the core service isn’t especially difficult and doesn’t impose a difficult learning curve.
This approach is quite different from the other one to these services, which fall under the Platform-as-a-Service (PaaS) umbrella. In those offerings, similar functionality is offered, but it’s so tightly coupled to the PaaS offering that using it requires learning a new approach and sometimes a completely different method for achieving the same result as with established products. As you can probably tell, I’m a strong proponent of the Amazon approach because I feel that it offers the greatest productivity and financial benefitswhile imposing the smallest disruption in application design and implementation or skill building.