We are doing quite a lot of “traditional” web applications with relational databases. All of them are in-house softwares that serve a limited number of users. Now we are building a web application and making business with it as a cloud e.g. an SaaS. However, we have no experience on cloud computing. We highly appreciate all advices so that we can start digging, as currently, we don't know from where to dig :)
Summary of our web application: we have main 2 parts
Part 1:
- For authorized users.
- Mainly writes
- Traditional
- Using more SQL joins. This make us think that NoSQL is not applicable for this part. And we are using MySql
Part 2:
- For public users
- A kind of CMS where authorized users create pages and publish content. But this action is not frequent
- Mainly reads
We are thinking of managing user registrations (accounts) separately. Let it manage authentication and implementing SSO so that we could use it in all our applications. We plan to build more applications and expect growing on number of registered users.
All applications are built with java.
What we are vague about are:
- How to make our applications scale (development framework, database, deployment model...). We a looking for horizontal scale approach. Our initial thoughts are: For part 1, it sems that data sharding is the only way. But to do that, how can we route a given user to the correct? Is there any existing open-source product for that? For part 2, is there any CMS that scale well? For user accounts, we think about using NoSQL database.
- We want to build a private cloud starting with a small set of severs and adding more when our business grows. For that, what kind of components (e.g. hardware, software...) do we need. For software, we more interesting on open-source.
- “Scaling (horizontal) by adding new server”: what do we need to do to make it work?
- What are the pitfalls if in one server box, we put both web application server and database server?
Thank you.