What are servers and how do they work with custom app development?

A wise man once said that there are two things in life you cannot avoid: death and taxes.  Well, if you are wanting to create an application, there is something else you can add to that list: servers.  If you create an application, you will have to host that application somewhere.

Servers can be scary.

If you are a non-technical founder, maybe the thought of servers fills you with anxiety.  Maybe you're picturing a closet full of blinking boxes.  Maybe you're imagining having to hire a bunch of Linux engineers.  Maybe you've heard horror stories of server bills that costing thousands of dollars a month.  Maybe you, like everyone else, are overwhelmed by the advertising from companies like AWS, Microsoft Azure, Google Cloud, Wasabi and other companies, and like, everyone else, have no idea what they do.

If that's you - you've come to the right place, because in this article I'm going to explain what servers are, how servers work in modern app projects, how much can you expect to pay for servers and how to save money when on servers when first getting started.

What is a server?

A server is just a computer that is always accessible to the internet and dedicated to the purpose of serving some kind of application for consumption by other computers.

Servers do jobs like:

  • Host websites
  • Host online applications
  • Host databases
  • Host email applications
  • Authenticate users
  • Communicate with other servers in a secure way

If an application needs to be online all the time or needs to have users with passwords (and almost all applications do) then you will need a server or several servers.

How do servers work in modern app development?

In the old days, it was common for businesses to buy their own servers and set them up on premises and pay IT staff to keep them running.  Maybe your remember seeing a server in a closet at your school or an old workplace.  Maybe you knew a weary IT administrator who walked around with a huge book about Windows NT or Red Hat Linux and who was always trying to keep these cryptic machines running.

Fortunately, for the most part, the days of app developers having to manage their own servers is a thing of the past.  Nowadays, nearly everyone in the app development industry uses servers that are managemed by Platform As A Service providers like:

  • Amazon Web Service (AWS)
  • Google Cloud
  • Microsoft Azure
  • Digital Ocean, Linode, Vultr, etc.

These companies keep the servers running in their own datacenters, and provide software that allows other companies to rent just the servers they need.  This has all kinds of advantages:

  • You no longer have to purchase expensive server hardware.
  • You no longer have to worry about server uptime.
  • You no longer need special internet connections from your internet service provider.
  • When you need more server space, you can add it instantly.
  • You can space your servers around the world (for redundancy and global access.)

To be clear, you still have to manage the software on these servers.  You still have to setup your application on them.  You still have to monitor your servers and make sure they are working.  But keeping actual hardware running or worrying about having enough hardware is no longer a concern.

How much do servers cost?

If you are just starting an application, you can expect to pay around $15 a month to get your first server running, and additional $5-$10 per month for hosting media files (Photos, Audio, Video, etc). In many cases, this server will be just fine for your project.  As your project grows in complexity and in popularity, you'll likely need to add more servers and your costs will go up.  Let's compare a couple of projects we actually worked on:

The Farming App

This app is for a company in California that helps nut and fruit farmers with rodent infestation.  Their workers drive up and down long farm rows on 4 wheelers looking for signs of infestation creating a survey they can use to build a quote.  We built an app to help them digitize their entire process, complete with an iOS app and a button interface so they can interact with it on the 4 wheelers.

For their servers, they just need to host a simple website for their employees, and a database for storing the completed surveys.  Their app doesn't really do anything with big files (there is no video, audio or even picture element). The Farming App could likely run on an inexpensive $15 AWS server forever and never need an upgrade.

The Podcast App

We also created an app for a podcast hosting company.  Their app allows podcasters to create a podcast and upload episodes to share with podcasting apps.  One of the unique parts of their app is the way that it allows a podcaster's entire catalog to be constantly updated with new ads and the way it tracks how much podcasts are being listened to give analytic data to the advertisers.

In order to do this, the app needs to process thousands of audio files every day and to serve those audio files to podcast listeners around the world.  To make matters even more complicated, Studeo started on day one with several very popular podcasts that were being streamed hundreds of thousands of times.

In contrast to apps like The Farming App, an app like The Podcast App requires lots of servers and will continue to require even more servers as it's user base grows.  From the first week, The Podcast App required six servers, and most of these servers were larger and more expensive than the base  $15/month AWS server.

But servers are actually a very small part of The Podcast App's hosting costs.  In their case, because they are serving audio files that are being consumed by millions of listeners - their biggest hosting expense is Bandwidth for those files.

So from day one, their app had hosting and server costs totalling thousands of dollars each month.

So how much money will you have to spend on servers?  In most cases, you are going to be closer to $15/month like The Farming App than $5,000 a month like The Podcast App - but it totally depends on your processing needs, the number of users you have, and whether or not many people will be regularly downloading files.

How can you save money with servers?

The main way we save money on server costs is by using a tool called Laravel Forge.  Let me explain:

Most of our clients more on the people who setup the servers than on the servers themselves.  If you are paying an expert $150 an hour to setup and upkeep servers for you, and you can cut their time down from 20 hours to 1 hour,  that's going to make the biggest effect on your costs.

Consider these two scenarios:

Scenario 1

Type Costs Total
Developer Setup 20 hours @ $150/hr $3,000
Servers 12 months @ $20/month $240
Total $3,240

Scenario 2

Type Costs Total
Developer Setup 1 hour @ $150/hr $150
Servers 12 months @ $20/month $240
Total $390

As you probably guessed, Laravel Forge is the tool that helps us cut down on developer setup by up to 90%.  It does this by automating common tasks like:

  • Creating servers
  • Tying servers together
  • Managing databases
  • Managing queue workers
  • Controlling server access
  • Setting up automated deployment

Laravel Forge also gives a streamlined interface for dealing with common server tasks, which greatly simplifies the process of training and allows us to employ fewer server experts.

How does Build Online handle servers with clients?

We believe very strongly that you should own your own servers and own your own code.  When you work with Build Online, we will help you create an AWS account and credentials that you share with Build Online, and then show you how to remove Build Online's access.  We will also help you create a GitHub account where your code can live.

We will then setup staging servers that we control and our own GitHub repository for your project.  When we finish a sprint, you'll be able to see the completed work on our staging server, when it's approved and paid for, we'll push that work into your GitHub repository and then help you deploy it to your servers, giving you complete control and access to your code and servers.

Conclusion

Hopefully this article helps you understand how servers work in modern app development.  If you have any questions we didn't answer, we'd love to talk to you about it.  Please let us know at ryan@buildonline.co.