AWS has certainly been a buzzword in software development recently. However, the term is so broadly used that often creates more confusion. Is AWS only a new way to host applications? Will an application be developed locally, as it is traditionally done, then get deployed on Amazon’s infrastructure? If so, then what’s the big fuzz?
Turns out, spawning off instances of any OS and running your application there is merely a small piece of the cloud and more specifically the AWS world. If the goal is to leverage AWS to the fullest, some things need to be thought out and implemented differently. But no need to panic, a lot remains the same. So, what’s the same and what’s different?
What's the Same:
- Apps still run on an OS
- Platform (java, Node, .NET ) is needed
- HTTPS servers listens on ports
- Not everything runs on the same machine. On AWS the guideline is a service has one responsibility
- Files are provided from S3. No more files stored on a server
- Database is a service
It does not look terribly complicated and the concept of service seems to be a common denominator. The problem comes from where to begin. AWS offers more than 60 services and as a result, it’s pretty easy to get overwhelmed. From the sea of services available, I consider these 4 critical to getting a developer up and running in no time.
- EC2, S3, and ElastiCache
- Alarms and Cloudwatch
- Database Services ( RDS, DynamoDB)
- Elastic Beanstalk and Cloud formation
Developers will be able to easily find a place where an application will reside, via Amazon EC2, which should not be too alien to any developer. S3 is where static content such as images get stored, ElastiCache is where sessions, load balancer, and other environment configurations are performed. As with any application, data will be stored somewhere RDS or NoSQL options are available. Lastly, Elastic Beanstalk and Cloud formation are where you would automate your environment and infrastructure.
Knowledge of these 4 services will allow any developer to get up and running. But, merely up and running is not enough; AWS services come packed with extra goodies and these 4 are no different. Here are some highlights of the benefits developers get automatically.
- Cloudwatch works closely with Amazon EC2 and it allows admins to set up alarms and actions on specific metrics on the environment. Useful metrics include memory usage, database throughput, CPU usage and billing charges. Anything from sending an email, or SMS, all the way through trigger autoscaling or invoking a service can be configured. Cloudwatch will allow developers to be proactive to environment changes.
- RDS has a few impressive benefits. First, it offers automatic minor upgrades, health monitoring and automatic daily backup for up to 35 days. Second, multi-AZ deployment will ensure that in the event of a failure in the zone you are hosted, multi-AZ will automatically spawn a separate instance and redirect traffic to the new instance. Lastly, RDS give developers the ability to create a replica of the production DB as a read only. This will allow easy reproduction of production defects.
- Elastic Beanstalk will handle scaling, monitoring and other resource provisioning required to run the application efficiently. It can be easily configured to scale up in the event of request spikes and scale down whenever the extra resources are not needed.
Starting a journey on AWS can be overwhelming, but getting a feel for some of the basic and most important services will get you up and running in no time; just getting up and running on AWS has some pretty impressive benefits automatically included.