My latest course is all about scaling applications on-premise and in the cloud. I just a few paragraphs I'll explain 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:
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