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.
It sounds that your service didn’t reach the point where you have to concern application scalability. Why not just make it run, then you will find out what to do to scale it up.
Openstack recommended, a open sourced, AWS-compatible cloud computing framework.
On the infrastructure layer, openstack takes care of it. On the application layer, you have to find your own way.
4.Cloud computing is supposed to take care of this question. You can migrate your app or database whenever pitfall is noticed.