Product and service reviews are conducted independently by our editorial team, but we sometimes make money when you click on links. Learn more.

Configuration Management with Amazon OpsWorks

Configuration Management with Amazon OpsWorks

Cloud applications are often distributed systems that depend on multiple components.  Defining, configuring, installing and maintaining these distributed systems can be unnecessarily time consuming.   Even configuring and maintaining a single server can entail a complex set of dependencies between modules. System administrators working with any of the major operating systems have access to package managers that help to manage dependencies and relieve the system administrator of tedious, low level installation tasks. 

Cloud configuration management tools, such as Opscode Chef and Puppet Labs' Puppet bring an analogous level of management support to cloud operations.  Amazon AWS offers its OpsWork service, based on Chef, at no additional charge to its cloud customers.

Abstractions Tame Complexity

One of the reasons managing cloud applications systems is difficult is that they require a variety of different components.  Some distributed systems can be fairly simple. For example, a high performance computing cluster might consist of a single master node and a large number of compute nodes all running the same number crunching software.  Business applications tend to be more multifaceted with database servers, application servers, Web servers, load balancers and servers supporting other services, such as messaging and log management.  The possible combinations of servers and services can quickly become unwieldy. But Amazon OpsWorks organizes systems around stacks, layers and instances.

A stack is a logical grouping of all the components that make up an application. If an application requires servers, load balancers, databases and EBS storage they will all be included in a single stack.  Within a stack, components are further organized into layers.  Layers define groups of related virtual machines. Within each layer, you can specify software to run on the instance, an Elastic IP address to assign to the server as well as security group specifications.  A third abstraction, apps, allows you to define code to run in an app along with configuration information.

In addition to specifying what components make up a distributed application, Amazon OpsWorks lets you specify how your system should respond to changes in demand.  Instances can be configured in three different scaling types: 24/7, load balanced, and time-based.  24/7 instances are manually controlled so system administrators determine when to start, stop or terminate them.  Load balanced instances are automatically started or stopped by Amazon OpsWorks when demand exceeds or drops below a specified threshold.  Time-based instances start and stop according to a predefined schedule. These instances are useful when you have a regular high demand period, such as running data warehouse load jobs or generating end of month reports.


Dan Sullivan is an author, systems architect, and consultant with over 20 years of IT experience with engagements in systems architecture, enterprise security, advanced analytics and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail, gas and oil production, power generation, life sciences, and education.  Dan has written 16 books and numerous articles and white papers about topics ranging from data warehousing, cloud computing and advanced analytics to security management, collaboration, and text mining.

See here for all of Dan's Tom's IT Pro articles.