Jump to content

Making server(s) for personal app development/testing, need advice

Long story short, I want to make the final CS project into a full-fledged app to license and whatnot. It uses machine learning and stores data within a database, and from my CS courses and understanding from working at different companies, it's best to split the DB from the actual application machine.

 

My question though is this: can/should I use Linux / Docker containers on a single machine rather than have two physical servers? I can list the advantages/disadvantages of both, but I'm still unsure.

 

  • Two Physical Machines:
    • Advantages
      • Redundancy: if one machine goes down for some reason I don't lose the other.
      • Similar to what most companies use in their infrastructure.
      • No need to make complicated container images/scripts.
      • Each machine can be specialized for their own task (I/O for DB, computation speed for app machine).
    • Disadvantages
      • Limited by Ethernet connection speed (gigabit speeds are good, but internal I/O is obviously much faster).
      • More expensive upfront and over time for electricity costs.
      • Complicates application by needing to give proper networking capabilities.
  • One Machine with containers:
    • Advantages
      • Faster: I/O is not limited by network speeds.
      • Easier to redeploy containers: make frequent backups to another machine, and if something goes wrong then just go back to a previous container image.
      • Containers also mean this app can be portable pretty much anywhere.
      • Cheaper to build and maintain.
    • Disadvantages
      • Single point of failure: all data can be lost if a single component breaks.
      • Machine has to be best all-rounder for app and DB services.
      • Time spent creating/maintaining containers.

I'm guess I'm ending up leaning more towards 1 machine 2 containers, but I'd still like to get people's opinions on this.

Link to post
Share on other sites

Id use one machine and setup vms. That way it works exactly like 2 systems, but has the advantages of 1 system. 

 

I run every machine as a hypervisor, running vms make managing this much easier, with vms if you want to add a second system, you can just move some vms over.

Link to post
Share on other sites

I would also go with the single machine w/ containers. While a major con that you listed is everything can go down if a component breaks, spend some of that money you saved by not getting 2 machines to get a nice backup solution set up.

Link to post
Share on other sites

Instead of VM's through VMware or the like, I was thinking of using Docker containers: one for the app and another for the DB.

 

Side-question: what would be a good distro for this setup? I'm used to Ubuntu & Debian, and I have experience with Redhat and CentOS, so I was going to go with the latter becasue it's free and reliable. Thoughts?

Link to post
Share on other sites

30 minutes ago, HunterAP said:

Instead of VM's through VMware or the like, I was thinking of using Docker containers: one for the app and another for the DB.

 

Side-question: what would be a good distro for this setup? I'm used to Ubuntu & Debian, and I have experience with Redhat and CentOS, so I was going to go with the latter becasue it's free and reliable. Thoughts?

Id still run the docker containers in vms, makes it a bit easier to work worth and move. It takes a bit more ram, but it shouldn't need that much.

 

What whatever distro you want, it really doesn't matter, and with vms you can run multiple at once.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×