|Choosing Tools for Efficient Deployment on AWS|
|Written by Limor Leah Wainstein|
|Thursday, 22 March 2018|
More and more we are relying on the cloud — specifically on Amazon Web Services. Here we explore the benefits and use cases of deploying your applications on the cloud before getting the lowdown on five tools that can assist with efficient deployment on AWS.
Modern enterprises use a plethora of applications for their daily operations, from customer relationship management (CRM) software to accounting tools to web applications that customers can interact with. Running all these applications calls for a complex infrastructure, traditionally using on-premise servers and computing resources.
On-premise infrastructures are costly in terms of both money and time to set up and maintain. In addition, it quickly becomes expensive to scale up an on-premise IT infrastructure with the growth of an enterprise and thus the growth of its application usage.
Cloud computing has rapidly altered the paradigm of enterprise application deployment. Many modern enterprises now deploy their apps on the cloud because cloud service providers offer virtualized resources as services which are dynamically scalable. Many applications are now delivered as services over the internet, accessible by relevant users, and the cloud provider allocates the hardware.
Some advantages of cloud application deployment include:
Deploying apps in the cloud also presents some challenges, including the security of the applications, how reliable the cloud services are, and how available the apps are to end users.
Amazon Web Services (AWS) is one of the most popular cloud service providers and the earliest adopter of this technology, having first offered cloud computing services in 2005. AWS remains a particularly popular option in the developer community, as is evident from this graph from Stack Overflow:
AWS offers a slew of different services for deploying applications on the cloud. Powerful Amazon EC2 instances can be used to handle application workloads, for example, while there are other services available to handle AWS storage needs for cloud applications, such as Amazon EBS and Amazon S3. Third-party tools can offer even more flexibility, for example, by integrating an AWS storage option with applications, extending enterprise storage to the cloud and saving money.
Let’s now take a look at five of the best tools you can use for efficiently deploying applications on the AWS cloud.
Chef is a configuration platform that you can use for automating the deployment of applications on any environment. Chef Automate is a solution that integrates with AWS, helping to unify and automate cloud infrastructure on AWS in addition to facilitating the migration of application workloads to AWS services. With Chef, developers code infrastructure into “recipes”, which helps to set up an automated blueprint for deployment.
Chef has a heavy focus on compliance with industry benchmarks such as PCI or HIPAA, with compliance rules defined as code, making it easy to tackle compliance barriers to cloud migration and cloud app deployment. Chef manages operational tasks such as software and operating system configurations, package installations, database setups, and more, giving you workflow automation for continuous deployment in the AWS cloud.
Some drawbacks of Chef include a lack of good documentation and the requirement to force developers into using Ruby for infrastructure configurations.
Ansible is an IT automation engine that automates cloud provisioning, configuration management, and cloud application deployment. This tool integrates with AWS to help you define, deploy, and manage a wide variety of AWS services, ensuring you can easily and rapidly deploy and scale applications.
With Ansible, you define your AWS application environment configuration using YAML syntax, which is regarded among developers as being both easy to learn and very expressive. Ansible is agent-less, meaning you don’t need to install anything onto the remote hosts you want to manage when deploying apps. Furthermore, Ansible has excellent documentation and a supportive community.
Ansible comes in both a free and a paid version. The cons of this tool are its slow performance in push mode—even a basic setup for a new remote machine with minimal configurations can take up to 20 minutes, and the reliance on a solid SSH connection for executing configuration tasks on your remote AWS hosts.
AWS Elastic Beanstalk is an orchestration service offered by AWS for deploying and managing applications in the AWS Cloud without worrying about the infrastructure that runs those applications. This service caters for rapid deployment of applications on AWS EC2 cloud instances written in many languages, including PHP, .NET, Ruby, Java, Node.js, and Python. The managed platform-as-a-service model frees your organization up from the complexity of deployment and configuration management in the cloud, and there’s autoscaling, logging, monitoring for you “out of the box”. The fact that a single interface in AWS Elastic Beanstalk provides a consistent view over many aspects of your development environment is also useful; you don’t need to move between various management interfaces in the AWS Console.
Cons include the lack of an intuitive interface: the range of options in the dashboard can be overwhelming for new users, and some software engineers have encountered issues when packaging large applications.
AWS CodeDeploy is a service that automates application deployments to Amazon EC2 instances. CodeDeploy can also automate software deployments to AWS Lambda and on-premise instances.
Rapid deployment and development is the aim here, with a particular focus on mission-critical apps for which the cost of failure is exceptionally high. The tool lets you deploy a variety of application content, including web and configuration files, executables, packages, scripts, and multimedia files.
This free tool fully automates your application deployments across your development, test, and production environments, and it provides rolling app updates across cloud instances with no downtime. It also works with third-party tools such as Chef and Ansible.
The only drawbacks are those that apply to all AWS services: mainly the learning curve of getting used to all the dashboard options and settings.
AWS OpsWorks is a configuration management tool built on top of the Chef configuration tool. The main draw of this tool is that it helps automate time-consuming tasks when deploying apps on AWS. AWS OpsWorks uses scripts to manage configurations, which improves deployment consistency and can reduce errors. There’s also automatic load-based or time-based scaling of applications included in OpsWorks.
The tool supports Amazon Linux and Ubuntu operating systems, however, it unfortunately doesn’t support Windows. OpsWorks is best for more complex applications than those using a traditional three-tier architecture.
The big players in terms of tools that enable efficient deployment on AWS are the configuration platforms such as Chef and Ansible, and you can’t really go wrong when starting off with one of these tools. You can, of course, supplement your choice of configuration tool with other tools such as AWS CodeDeploy for faster deployment and less downtime when updating your mission-critical apps.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Thursday, 22 March 2018 )|