-3

I am a recently-hired junior software engineer at a small company that develops and sells a normal client/server MVC application to small and mid-level enterprise clients in a particular line of business. (I'm leaving specifics out for anonymity.) Traditionally the platform has been sold as a physical server, but recently management has decided we should try to sell our platform as a cloud application in which we handle the hosting internally. I think this is a good idea. We typically handle the administration of the servers we sell anyway, and this will only give us finer, more easily batchable control of that. Consolidating the hardware might allow us to significantly reduce the cost of our product too.

There has been some debate over the best method in which to implement our platform in the cloud environment. The physical server we sell is typically carved into a few separate OS instances that each handle the separate concerns involved in an MVC app. Two cloud implementations have been proposed:

  1. Some suggest we divide our entire cloud server in the same manner as our physical server and split many clients' MVC applications into a few OS instances (e.g. Client A and Client B each have a separate database on the OS instance handling the model, Client A and Client B will each have a separate API running on the OS instance handling the controller, etc.). The perceived benefits include significantly reduced hardware requirements and the ability to hide completely the administration of the platform's hardware (including devoted system resources) from the client.
  2. Others suggest that each client's platform be a defined and separate slice of the cloud server. Then a client's slice would likely be divided into a few OS instances in the same fashion as our physical servers, but in this implementation that's not rigidly enforced. The perceived benefits include much safer environments for our clients's MVC applications (e.g. If each client has a separate server with defined hardware limitations, it will be much more difficult for a client doing something unanticipated to affect the stability and/or performance of other clients' applications).

In my opinion the second option is a much saner route and more closely aligns with a traditional "cloud-based" approach. I am also concerned the perceived performance benefits of the first option might be overstated. Proponents argue that fewer OS instances will require less memory (something I do not dispute) and that servers devoted to separate concerns can be tuned to their specific tasks (the part I think is overstated, especially when each OS instance will be handling n times the resources we are accustomed to). To my mind a more reasonable way to reduce the memory footprint of all those OS instances would be to run each clients' entire MVC application in a single OS instance. However, I have very little experience and was hoping someone here could provide some advice on the matter.

I apologize in advance if my question is too vague or beyond the scope of the exchange, and thanks in advance for any responses.

2
  • 2
    This isn't really a question to be answered by a junior dev based on the input of a bunch of strangers who have little useful information about the application to say either way.
    – ceejayoz
    Feb 5, 2015 at 22:08
  • @ceejayoz I get what you're saying, but I take issue with the assumption that I just looking to go dazzle my coworkers with my new answers. I'm trying to broaden my knowledge about the problem domain, and frankly I always get the most informative responses on Stack Exchange sites. Feb 5, 2015 at 22:43

1 Answer 1

0

Your question is a bit broad, but...

Traditionally the platform has been sold as a physical server, but recently management has decided we should try to sell our platform as a cloud application in which we handle the hosting internally.

I'm a bit concerned about the term "hosting internally." If you mean colo or rented servers at a data center, that's one thing, but if you mean "We would like to buy a bunch of cheap servers and stick them in a closet in our office," then I would recommend against that. Infrastructure that's perfectly acceptable for your users as a small company may not scale adequately for your users.

As for your two models of cloud implementation, I think it depends on your application. I don't think I have enough information to make an informed response.

1
  • 1
    Thank you very much. I can't narrow my question without going into specifics, but it is still very helpful to me just to know that with the information provided no strategy is necessarily better. Feb 5, 2015 at 22:41

Not the answer you're looking for? Browse other questions tagged .