If computers were much simpler, there would be less points of failure which in turn might improve stability and simplify maintenance.
This got me thinking - for a smallish team of about 25 people, does anybody have experience with running certain lightweight services straight off a Raspberry Pi 2? I'm thinking of things like
- IRC servers
- Webmail (e.g. Roundcube)
- VPN servers
- DNS servers
- Maybe LDAP?
These little machines require no moving parts (and no cooling whatsoever, they can happily operate in an air-tight casing) and they require very little power (about 2W). They are also very cheap - having one Pi per service would be no problem at all.
A few more reasons against I haven't seen yet.
Single company of failure. I could replace a Dell x86 with an HP fairly painlessly. I could not replace a rpi with a beaglebone black or other arm as easily, especially if I was using non-USB peripherals. It's not as easy as "plug in install disk and go." You need a plan for when they stop making or supporting your part. Embedded systems are not standardized like pc-compatibles.
No integrated server management. I mentioned it in a comment, but the lack of IPMI or similar is a pain; someone must physically be there to service it whether it is the middle of the night or on Christmas morning.
No hardware/OS support available. Have a problem running a COTS application? Driver issue causing crashing? You're probably on your own. Replace computer and/or application.
ARM architecture. If it's not FOSS, it probably won't run here. No driver blobs for many printers either.
SD/microSD-based storage. Try compiling something. Anything. Bring a book. This is a pretty big problem for any RDBMS with even low/moderate activity.
And now for something completely different.
Here are a few reasons you should use a raspberry pi as a server.
You have non-traditional requirements
Potential applications.
I totally would not do this.
While my experiences with the RPI have been with the early model, I've had a fair number of installs die when the SD card got corrupted. The cards themselves seem fine, and I had it running well on an external HDD.
Secondly, there's a certain degree of false economy with systems like this - You'll need storage. oh, and maybe a USB hub and... yeah.
Thirdly the RPis are ARM-based systems. When you do outgrow them, you'll essentially need to reinstall and reconfigure most of your applications to move over to x86
The old model RPi was as slow as a one legged dog for many tasks as well. The new one's supposed to be better.
There's being frugal and right-sizing, and there's being silly.
For low end use, something NUC class, or for that matter a desktop class machine would give you more expandability, more speed, more ram, and when you do outgrow it, you can just migrate into a proper, no training pants server that runs the exact same software.
They are a little more expensive but you better storage options (SSDs or 2.5 inch drives, depending), more ram (I got 4 gb on my home server) a gigabit port that isn't hanging off the USB driver chip, handles reboots gracefully...
It's just a much better behaved system than my RPi was.
As the designers/manufacturer say: (emphasis mine)
A Raspberry PI is not designed to be a server that reliably runs 24/7.
Of course you don't always necessarily need run your operations with specifically designed equipment but in a business environment the (always debatable) TCO calculation make that the hardware purchasing cost is still only a tiny fraction of the expense and often only a minor consideration. Even half an hour loss of productivity for an office of 25 people or a couple of hours tinkering by you as the hired sysadmin quickly adds up too...
In a small office a number of the light weight services are often already shifted to other devices, the router will already be capable of supporting a number related services (I.e. Firewall, DHCP, DNS, VPN), the multifunctional printer will already be running a its own print spooler, support wireless printing and a host of other features.
The remaining services that you might still want an on-premise server for probably do require more performance or reliability, I.e. RAID for a file server and more IO performance than you'll get out of an external disk connected by USB 2.0
Maybe so, but...
rPis are not simpler; they are off-the-shelf ARM computers which run Linux. The fact that they don't have a fan or similar doesn't make them significantly simpler in terms of maintenance or points of failure. OK they won't have a hard disk fail, but they can still have power supply failure, mainboard failure, memory errors, software errors, human errors...
You say "no moving parts"; if a machine has 10 parts and a new design has 4 parts, that's simpler. If you switch a hard disk for Multi-Level-Cell (MLC) flash storage, is it simpler? When MLC flash works, electric charge is pushed into and out of the cells, and a physical barrier holds it there in one of several states. One failure mode is when the barrier breaks down and can no longer hold multiple levels distinctly. What does it mean to say "no moving parts" when electrons are the moving parts, and the parts which work with them can physically break?
rPis are a product from a small company, squeezed into an uncommon and small form factor, designed for low-cost markets, and made from consumer-grade parts; these forces push against reliability and stability, which tend to come from not pushing boundaries of size or performance, standard designs used by lots of people (preferably companies which demand reliability and will give their requirements in advance and feedback during use), big manufacturing runs that allow for lots of feedback over long timescales (which the rPi is getting now, with ongoing model revisions), larger budgets which allow more careful designs, more testing and higher quality materials/components, and more effort in Q&A. You get stability and reliability from a tank, a jumbo jet or a plain basic car, not from a sports car, or a world's smallest car, or a world's cheapest car.
"Failure" itself isn't always a concern, it's the consequences of failure, and recovery from it, which cause problems - and rPis have no error correcting RAM, no RAID storage, no IPMI boards to help you diagnose and troubleshoot. You say "simpler means less points of failure" but then why do we use checksums and message authentication codes, and Merkle Trees, and data striping and redundancy, and TCP instead of UDP and so on? They are more complicated therefore more prone to failure ... except overall they add more failure-protection than failure, don't they? Recovering from Cryptolocker is a big problem, or it can be company-ending. But the complexity of "having a backup" makes recovery possible, even easy.
For working hardare, 'maintenance' means software maintenance, and rPis are no different from other servers in that respect.
Are you still going to put them on a UPS? Behind a locked door to protect them from tampering? Insured against theft? Backed up? Configured / maintained by paid employees? You still save, but costs are adding up.
Virtual machines are invisibly small, heatless, silent, and approximately free. If you already have a virtual machine host, they are. If your rPi switches off and doesn't switch on again, how long are you going to spend troubleshooting it? How much time could you rent a DNS service or a hosted virtual machine for that cost of your time troubleshooting home hardware?
Ten rPis costs you $200? A traditional x86 server to use as a VM host, with dual hot-swap power supplies, dual Xeon processors, 128Gb ECC RAM, 10k SAS RAID with 10 disks, even throw in a Windows Datacenter license, you're talking $15k - no-brainer, isn't it?
A 25 person company is going to be spending $32,000/month on salaries assuming an $8 minimum hourly wage, not counting any employee overheads. Actual outgoings will be much higher covering office space, computers, phones, insurances, healthcare, any other employee benefits. Some employees will earn much more than that.
Your savings will keep your company going for another ... week?
You probably could build a redundant array of inexpensive computers - the concept is sound, Google is the big poster-child of using software redundancy to build reliable services from commodity PC hardware - but in the case of rPis, wouldn't they be a better fit in a company with one or two people working from home, funding with a credit card, not a company of twenty five people?
Short answer:
Maybe.
Long answer:
Pros:
Cons:
My experiences:
I got a RPi model B for my birthday three years ago. I experimented with it at first, breaking the OS a few times. After a while i decided i should do something useful with it, i stumbled across Kodi (former XBMC) and i started to use it for multimedia-purposes like IceFilms (link is broken, mirror containing icefilms) to stream movies and series (no payment or account necessary, it's technically piracy).
After literally breaking my first SD card i started using BerryBoot (boot menu that could install from internet to usb and allows you to boot from usb). A few months later my pi landed in the drawer. I got it out about a year ago, when i felt the need for a cheap home-server. It is up right now with the same setup as a year ago.
I would describe it as relatively reliable seen it's situation.
My setup:
htop screencapture:
My advice:
You could run some servers such as the ones i mentioned, but you should not use a raspberry pi to operate door locks or other important stuff since it's made for hobbying and not for reliable servers.
Apart from that it will run just fine under moderate load. You will be able to run irc, vpn and webmail. But if you are going to run dns you may want to set a secondary dns in case the pi breaks down.
I would recommend usage of berryboot to have the OS and data on a usb or a usb hdd so when your sd card fails you can simply insert your backup berryboot sd and it will boot with all data still intact.
The choice is yours
Apart from the other reasons mentioned here in the answers, an important one hasn't been mentioned: security.
If it's WAN-facing, you shouldn't run it without regular software updates, SELinux, regular kernel updates, etc. Since the Raspberry Pi 2 just boots whatever is located at
/boot/initrd7.img
, it's not trivial to have multiple kernel versions present. GRUB or another boot loader would enable you to have multiple kernel versions present, giving you the option of booting a different kernel if an update went bad.Most of the distros that can run on RPi2 have been proof of concepts, not distros focused on being 24/7 available servers.
For home use - sure, I run an IMAP server on an RPi2+Raspbian, it's adequate for my own use.
For commercial use - given the amount of downtime I've had at home, not a chance!
This is certainly possible. It would obviously depend on the load caused by the mentioned services. The Roundcube service is a little tricky, because you would need a webserver+php+sql. If you plan this carefully (maybe use Lighttpd and SQLite because of their lower footprint) it might work.
There are even companies offering RaspberryPi colocation for a few bucks per month.
Short answer: yes, but with reservations. I have around 8 Pi(e)s now, each running 1 or 2 basic servers as you mention. With a careful choice of software you should be able to run IRC, XMPP, web (Nginx), mail (Postfix+Dovecot), Tor proxy, and I'm also running a Gopher server. I also have another Pi2 in a professional aluminium case running Arch as a desktop machine works surprisingly well (see how I did it - PDF I'm particularly proud of the mail server which supports around 12 users and handles several hundred emails daily.
Now, re "reservations". You obviously won't be able to support lots of users, or anything that needs high throughput because of the 100Mbps limitation of the network. The "B" is rather under-powered but will still work, although a model 2 would be better. I swapped out a Pi for an Odroid XU4 recently as the web server was a bit sluggish, and this has more memory and a gigabit ethernet port.
Overall, the Pi represents an ideal way to try software out, safe in the knowledge that if something breaks you won't lose everything.
You can make a RPi rock solid if that's what you set out to do.
OTOH, current models are aways going to be slow.
I see a great deal of value in these small computers going forward and we have an endless supply of things we'd like to use them for. There is no reason they can't be more reliable than the typical file server: You have total redundancy in one small package.