You have decided to build some bespoke software and the question of where do you want it to be hosted comes up. What do you choose? Before we go into the various options, lets first look at what is required for a simple application.
- The foundation of an application. This will include components such as memory, storage and a CPU all of which have significant impact on the performance of an application.
- The connection the hardware has to the outside world, this could be just to an internal network or more commonly today it is the connection to the internet that the hardware has.
- The Operating System (OS) can be thought of as the communication layer between software and the hardware. In most cases this will come down to choosing either a Linux based OS, such as Ubuntu or a Microsoft based OS, such as Windows Server.
- Software Framework:
- This is heavily dependent on the language your application is going to be written in. For example if you write in PHP you could choose to just use the PHP interpreter or you can choose one of the many frameworks (such as Laravel) that can speed up development as common tasks are pre written. Our language of choice is C# which is one of the languages that can be used in the .NET framework (in fact there are lots of .NET frameworks that specialise in different things, such as desktop application, mobile applications and web applications).
- This is software that deals with requests. For example if you click a link on a website the server would deliver the contents of that linked page to your browser.
- Any application that needs to store information for the long term will most likely use database software. Software frameworks can include databases and take away your choice but most modern frameworks are database agnostic so the choice of what database you use is up to you.
- The software that you are developing or having developed.
So even in the simplest web application you have quite a few parts and it can get much more complicated than that. So what options do you have?
On-Site / Private
You control, maintain and own every part of the stack. This is often used in larger organisations that employ their own IT department to look after their own servers. It is also sometimes used where the internet connection is particularly poor, basically the software is used on an internal network.
This is typically not a cost effective way to start a new project, the cost of the hardware and software is significant but the requirement for an on-site IT team is also onerous.
Infrastructure as a Service
This is the first level of using a third party to take on some responsibility for some of the stack, typically in exchange for a monthly fee. The third party will set up your hardware and connect it to the internet. You, or your developers, take it from there. The real benefit here is that because you don’t purchase the hardware outright you are free at the end of each contract period (which can be a low as 1 month) to upgrade or downgrade as your requirements change.
With this type of hosting you will still typically need quite a lot of expertise in house, especially to get everything set up. Maintenance is still largely your responsibility too.
Platform as a Service
Now the third party will be responsible for everything apart from the software you are developing. If you pay for a managed service the third party hosting provider will also be responsible for all software and hardware maintenance and upgrades.
The real benefit at this level of outsourcing is that you are concentrating on the one part of the stack you need for your business, i.e. the software application itself.
Software as a Service
Software as a Service has become very popular in recent years, think of Office 365 for Microsoft Office or Gmail for email. The benefit is that you just concentrate of maximising your use of the software. Everything else is someone else’s problem. It also tends to match companies cash flow much better, as this type of hosting typically has a contract involving monthly or usage fees.
Even if you own the software, i.e. you paid for it to be developed for you, it can still fall into this category if you pay a developer to maintain it for you. It is often the case that the full stack is not from one company, i.e. you might pay Azure to do hardware through to the database and then pay a developer to maintain the application.
The above are just some of the basic options of a fairly straight forward hosting stack. There are almost limitless options available. Full Metal Software have experience in developing in all of the above scenarios and many more. We offer impartial advice on what you should consider as the best option. We do this by looking at your requirements now and how they will change in the future to make sure you always start on the most cost effective platform that can grow over time.