For organizations looking to save money, cut costs and simplify application lifecycle management (ALM), the Elastic Beanstalk, part of the Amazon Web Services suite of products, might be exactly what the development team should be leveraging.
There is always great debate about exactly what cloud based development means. Many development teams use cloud hosted Wikis or SaaS based test environments, but that's a far cry from actually being able to contend that an organization is doing application development in the cloud. But for those organizations who are interested in taking cloud based application development to the extreme, there are few solutions on the market that redefine what cloud based development is better than the Elastic Beanstalk, part of the family of cloud based solutions built around Amazon Web Services.
Web APIs are incredibly I/O dependent and rarely CPU bound, and Node.js loves I/O.
Aaron Silvas, Software Architect at GoDaddy
So what is this Elastic Beanstalk? Amazon defines it as "an even easier way for you to quickly deploy and manage applications in the AWS cloud." And getting started is as easy as planting a bean in the ground. According to AWS, all the development team has to do is upload the application on which they are working. The beanstalk deployment platform will subsequently handle the following tasks:
- Capacity Provisioning
- Load Balancing
- App Health Monitoring
This means significantly less programming to prepare an application for cloud deployment as compared to legacy style application development. And this cloud based approach to application development certainly means less time spent on administration as part of Application Lifecycle Management (ALM). The other compelling feature of Amazon's Elastic Beanstalk is that it is available as a free solution fully integrated with the AWS technology stack. Customers are only billed for resources used, following the regular consumption-based model.
From Java to Node
For software developers in the Java world, AWS Elastic Beanstalk supports traditional development stacks and languages like Apache Tomcat. In March of 2013, AWS introduced Nginx and Apache HTTP Server support for Node.js applications. According to Aaron Silvas at GoDaddy, Node excels in the Web API sphere, "Web APIs are incredibly I/O dependent and rarely CPU bound, and Node.js loves I/O." Multiple concurrent I/O requests are the standard in Node.js, which means big gains for response times – and the potential for happier end users. That's making it an odds-on favorite for many mobile developers who plan to deploy apps in the cloud.
The ability to do more with fewer lines of code is often a compelling reason for Java developers to start entertaining the idea of developing applications with Node.js. Combined with the auto-management features of the Beanstalk, developers can shorten their time to deployment and become even more agile. For businesses, the fact that the Node uses CPU and memory efficiently could mean lower overall costs on AWS. While Joyent is offering an enticing alternative, Amazon is probably still going to be the first cloud choice for many companies – especially those that already have many apps deployed on the EC2.
Jeff Barr, Chief Evangelist for the Amazon Web Services, points out a few of his favorite things about Elastic Beanstalk for Node.js over at the AWS blog. These features include:
- The ability to deploy Node.js apps inside an Amazon Virtual Private Cloud for greater security. (Amazon recently rolled out private cloud connections for all. Any customer can now order a VPC as an instance, giving even small businesses the same perks as an enterprise.)
- Integration with Amazon RDS to store and retrieve data from a relational data store.
- Performance enhancement with static files and gzip compression for faster transfer speeds and quicker service of assets such as images. Computing resources can be saved for more important real-time tasks.
Always beware of hidden costs
Unlike many out of the box solutions that only support a one-size-fits-all approach, AWS allows businesses to access the underlying resources for customization. For example, organizations can adjust the Auto Scaling functions to align with business goals and ensure that consumption doesn't surpass predetermined authorization levels. This might help you avoid rapid, massive, and costly over-provisioning if your cloud services are being exploited in a distributed denial-of-service attack (DDoS) or Fraudulent Resource Consumption (FRC) attack.
As with any cloud provider, clients who take responsibility for understanding and monitoring their usage are most likely to avoid hidden or unexpected costs. The Beanstalk actively promotes consumer responsibility by offering users access to built-in CloudWatch monitoring metrics. It also sends notifications when application servers are added or removed. That way, there are no surprises when the monthly bill comes in.
In many cases, users will spend less if a little tweaking is performed up front and time is taken to optimize configuration settings For example, it's important to choose the correct Amazon EC2 instance type for the application based on what you know about its CPU and memory requirements. Of course, developers will still have to pay attention to issues such as scalability in the code development process. The Beanstalk can only work its magic on apps that are built to take the pressure. Dramatically scaled up load testing will no doubt be another service AWS starts marketing heavily to developers – with yet more consumption based billing for these testing resources.
All smart organizations today are leveraging the cloud to some extent, but to really take advantage of potential benefits of cloud computing, application development teams should take a serious look at cloud based offerings like Amazon's Elastic Beanstalk and experience firsthand the benefits of cloud based provisioning, load-balancing, health monitoring and trouble free, automatic scaling.
Tell us how Amazon Web Services have helped your organization leverage the cloud.