Cloud

My latest course is all about scaling applications on-premise and in the cloud. Let me explain in just a few paragraphs why you would want to make your application scalable and how you would do it:

Making your app scalable will always reduce costs

Everyone understands that you can scale when needing more resources, but even if it doesn't: does your app need to have the same capacity during the night? Maybe you can do with 50% of the resources, potentially saving 50% on your cloud bill.

Following some scalability guidelines will make your app more universal

The first guideline to make your application layer scalable is to make it stateless. Making your app stateless will reduce the complexity of running the app on a server instance. At that point, whether it runs on-premise, on Google, Azure, or Amazon, it doesn't really matter. You would only need 1 or more application servers behind a load balancer and the load balancer wille take care of handling the requests.

Don't manage a relational databases yourself

If you're running your application on premise, let your Cloud provider manage the relational database, they take away management work and you can just focus on your app. Upgrading your underlying database hardware is just a few clicks away when you need to scale your RDBMS. The same goes for Cache / Search / Analytics.

Rolling out new versions should be a piece of cake

If you have a stateless app layer, rolling out new versions should be as easy as simply adding more server instances with the new app version. If the new server instances are healthy, the old instances can be shut down. The load balancer only routes to healthy instances, so this is a zero-downtime operation.

How does this exactly look like?

If you would run this on AWS. This is how the architecture diagram would look like:

Scaling architecture

To store assets like images and css/js, an object storage like S3 and CDN like CloudFront could be added. All the state should be saved in RDS (Relational Database Services), and no state should be kept in the web instances. The web instances should be easy to launch and easily destructible.

My Online Training Courses

You can find my online training courses about DevOps and scalability at www.newtech.academy. You are running an application / website? contact in4it and we'll help you reduce your costs, while increasing performance, reliability and managability

About the Author

Ward has been a system administrator for more than a decade and has been working as a Consultant and Trainer for the last few years. Besides DevOps he is also into the latest Big Data technologies. Originally Belgian, currently enjoying life in London.