4 Smart Ways to Architect Your Apps in the Cloud

Flexibility and scalability have long been drivers for cloud adoption. But to achieve the full benefits of on-demand compute resources, applications must be developed in a fundamentally different way. Below is a high-level look at four cloud architecture trends--read the full white paper for a more complete view on how these trends will impact you in the future.

1. Controlling Hardware Through Code

APIs are not simply being used on the cloud to consume data from different Web services like Foursquare, Facebook and Twitter. Applications also use them to control the underlying hosting infrastructure.

Most cloud-hosting providers have exposed an API that can create, read, update or remove cloud servers. Consider designing your app to consume monitoring data so that when a particular threshold is reached, it can bring compute resources online or offline.

2. Implementing Services

Monolithic applications--those systems with a Web front end, application and database on the same host server--once dominated the IT landscape. However, with the incredible amount of data that is both recorded and served up today, monolithic apps are rarely sustainable and can easily topple over.

A service-oriented architecture (SOA) approach mitigates this problem. Splitting an application into distinct parts--or services--gives the ability to bulk up resources for a targeted piece of the app that is under load. This notion of modular design first originated with splitting out the Web, application and database tiers of an application. SOA has since evolved to become more granular, isolating services with distinct roles.

3. Container-Based Architecture

A container is a self-enclosed layer of virtualization that holds all the required pieces to run an application: resources, frameworks and libraries. The notion of Linux Containers (LXC) has been in the Linux kernel since the 2.6.24 release in 2008. Docker, an open source project that is a layer built on top of LXC, has popularized the use of containers for cloud architecture.

Docker enables the creation, deployment and unpackaging of a container. Once unpackaged, a container can connect directly to the computational power on a host machine. Architecting an app with containers simplifies the deployment and server configuration process--you simply build the container once and ship it to an unlimited amount of host machines, ensuring that the configuration settings are identical.

4. Service Discovery

As containers become more prominent, it will be important to ensure they connect to different services--such as a database--so the bits and bytes flow in the right manner. Service discovery allows an application to understand where all the other pieces are located without having the IP addresses or domain information hard-coded inside the application.

Service discovery tools like SmartStack, open sourced by Airbnb, take away much of the complexity of managing a distributed application. This allows the infrastructure to be completely distributed--as containers are unpackaged they know exactly what services are available and where to find them.

To find out how these trends will impact your journey in the cloud, download the full white paper