1

My company will be in need of a backend to bootstrap its services and I'm in charge of the infrastructure choice. The products will consist of several apps (mobile, web, desktop) with a common backend (something like a huge API I guess).

Basically, we will need something like a VM (or several VMs? Or dedicated servers ?) where we can run anything we want (Python, Ruby, Node.js, PosgreSQL, MySQL, PosgreSQL, redis, etc.).

What questions should be asked (to me and my coworkers) in order to have a precised idea of our needs ? I don't want to realize one year from now that we forgot to consider something crucial (or at least I'd prefer to realize that we forgot 1, not 10).

I know this question may lead to opinionated answer, but I guess an answer is always a bit biased.

6
  • 1. Users, how many now, how many in the future 2. Load 1 user causes on the system 3. Is your app scalable? 5. What are your DR needs? 6. What are your backup needs..
    – NickW
    Jan 15, 2014 at 13:44
  • 2
    Does anyone on staff have infrastructure experience? If not, you really should just hire someone to come in and help. You will learn a lot through the process, and will end up with a much better result.
    – EEAA
    Jan 15, 2014 at 13:45
  • 1
    I agree with EEAA - don't pick something based on free advice from people who know nothing about your planned product(s). You need to hire someone, fulltime or contract, to do this for you.
    – mfinni
    Jan 15, 2014 at 13:49
  • Ok thanks, I'll look into it. What is the name of such a job or set of skills ? DevOps ?
    – Simon
    Jan 15, 2014 at 14:39
  • 2
    In my experience, most people who call themselves "DevOps", are really software developers that are just knowledgable enough on infrastructure topics to get by. You don't want one of those. You want a seasoned Systems Administrator that knows enough about development to be able to understand the requirements you give him and translate that to physical resources.
    – EEAA
    Jan 15, 2014 at 22:53

1 Answer 1

1

If you need multiple clients (web, desktop apps, mobile apps, ...) you need to decide how these will communicate with the backend(s). You could use REST, this forces one set of architectural choices; you could use (say) CORBA, this will naturally force some decisions, etc, etc, so on and so forth.

Once that has been sorted out, you can decide if you want to use just VMs on someone else's hardware, VMs on your own dedicated hardware or run machines "on the bare metal" (that is, without an intervening hypervisor layer). Or maybe simply run apps (on, say, Google AppEngine) that you communicate with using HTTP.

The driving factors here are:

  • cost, both in capital expenditure and in ongoing running costs.
  • Effort needed to keep it all running
  • Expandability (it's relatively quick to spin up new VMs on someone else's hardware, it is probably going to take longer or be expensive to have unused machines lying around if it is your own hardware).
  • Existing skill-set in keeping a server farm running
  • Cost in acquiring said skill-set

I can't, however, tell you what the right answer is, the best I can do is say "it depends".

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