Saving time and effort with AWS OpsWorks, definition and alternatives
What is AWS OpsWorks?
AWS OpsWorks (Amazon Web Services OpsWorks) is a cloud computing service from Amazon Web Services (AWS) that manages infrastructure deployment for cloud administrators. The service automates deployment, configurations and operational tasks for distributed applications. With OpsWorks, cloud administrators and developers can define the infrastructure and resource configurations, such as storage and database options, and then select the operating system (OS) and instance type on which to deploy the application.
To understand better how OpsWorks operate we need to get our hands dirty and create a minimalistic solution using Stacks and Layers. It is a lot better if we are familiar with the definitions of services and options we are going to use so we know what we are doing.
How does it work?
OpsWorks organizes applications into layers to provision Elastic Compute Cloud (EC2) instances and resources for an application. Using the open source configuration tool Chef, developers can customize stacks or use pre-built layer templates on Chef scripts called cookbooks. These layers operate common components in Ruby, PHP, Node.js, Java, Amazon RDS, HA Proxy, MySQL and Memcached.
Stacks define system configurations, including server, database and load-balancing options. Layers configure subsystems — such as Web or database servers — and manage sets of resources including instances, Elastic Block Store (EBS) volumes and elastic IP addresses. The default computing limit is 20 stacks running 20 layers each.
Once the stack is set up, OpsWorks pulls in application code from the user-defined location and runs it on the instances. Applications can run inside an Amazon Virtual Private Cloud (VPC); OpsWorks also supports AWS Identity and Access Management (AWS IAM) and provides a set of built-in security groups for each layer.
OpsWorks can scale instances by time of day or average CPU load and handle software updates as needed. Load balancers can also be deployed to route traffic between instances. OpsWorks also monitors the health of an application throughout its lifecycle, detecting and replacing failed instances. When particular events surpass resources thresholds, OpsWorks generates alarms to trigger notifications or take action.
The OpsWorks service is free of charge; customers who subscribe to it pay for compute power, storage and other billable resources used.
Why AWS OpsWorks?
Even in AWS context, there are a few alternatives to OpsWorks that can get the work done even in a different way or used in combination can provide the flexibility needed for a certain solution.
In definition OpsWorks in a lot like another set of tools for orchestration like Chef, Ansible, Terraform, Saltstalk or Puppet (Terraform and Chef for your infrastructure). In fact, OpsWorks derived from tools like that.
Yes, you can use either one of them with similar success but OpsWorks is more user friendly since it is integrated into AWS Console. Another thing that is making it a better choice in AWS context is the fact that is made by AWS and kept up-to-date with the other services, where the alternatives must be updated. Also some of the alternatives are open source and documentation is not always updated or sufficient and support is minimal since it is not public-wide used.
On the other side, alternatives are supported by many cloud service providers. For example, Terraform can be used with AWS, Azure, CloudStack, Google Cloud, Oracle Public Cloud and many more, also supporting integration with many other services like GitHub, BitBucket, Docker, OpenStack etc.