We think of web apps as what belongs in the “cloud”. Virtualization is changing this so that both small and enterprise apps are a fit. To me there can be an internal cloud and an external cloud. As virtualization continues to evolve, we will see the lines blur between both.
I recently lead a session at CloudCampIndy on “App Scalability in the Cloud”. Many of those who participated were app developers as well as general business people. We talked about understanding your application regardless of who developed it and the impact that cloud computing would have. For now, application scaling will be similar in both. The difference will be how you add and pay for capacity.
Here are some points made:
- Pick or develop apps with scaling in mind from the start
- Virtualization is changing how you deploy your apps
- Horizontal scaling apps do better in the cloud
- Vertical scaling works but is more limited
- Developers benefit from knowing their app’s impact on the underlying infrastructure (Is my app read or write intensive? Does it cache well?)
- Caching is a cheap way to improve database performance
- Database replication (master/slave) or sharding is another way to scale
- Have at least two providers if you need disaster recovery capabilities (1 could be yourself)
- Products like VMware’s vCenter AppSpeed will make scaling out an easy automated process
Whether you’re running SAP or some web application that needs to scale, you need to understand bottlenecks in a system and ways of resolve them. Disk is usually the slowest component in an architecture. However, before you go spend $150k on an expensive SAN, make sure you’ve optimized your application and added caching where useful to speed things up. If you’re in the cloud (Amazon EC2, Bluelock, Slicehost, Joyent etc.) you will pay for the resources you use so it is wise to optimize your architecture in the beginning.