For some reason I'm really getting a kick out of the notion of "FreeBSD: Sold by Colin Percival".
At any rate, this is excellent news! I've been looking for an excuse to do more with kqueue/libdispatch in a server setting, and this looks like just the excuse I need. Congrats, Colin, and thanks!
Right now this is something I'm doing as an individual -- the project has "blessed" it to some extent (e.g., the core team said it was fine for me to call what I was providing "FreeBSD"), but it isn't "official FreeBSD" since it has local changes to make it work under EC2. At some point this will probably turn into "FreeBSD: Sold by The FreeBSD Project" or "FreeBSD: Sold by The FreeBSD Foundation" (even if I'm the person actually rolling the images).
Congrats, Colin, and thanks!
We're not finished yet -- I'm still hoping Amazon will find a way to let FreeBSD run on all the instance types without any Windows tax, and I still have to tie up some loose ends up get "stock" FreeBSD running on EC2.
Still, I think this is yet another strong vote of confidence coming from Amazon. Enough to encourage me to pick up some projects that I had mothballed since AWS has become the "go to" solution for so many clients these days. With any luck, all those loose ends will be tied up long before I need anything production ready, but even just seeing this progress from "blessed hack" to "mostly official" is a strong indication that effort in this direction will likely not be wasted.
I think this is yet another strong vote of confidence coming from Amazon.
Yes, I'm certainly glad to have this. Amazon is very secretive, and while I've talked to enough people over the years to know that Amazon definitely wasn't ignoring FreeBSD, it's very nice to have something public I can point to and say "look, they really do care!"
all those loose ends will be tied up long before I need anything production ready
FWIW, even with the loose ends, I consider FreeBSD/EC2 production ready -- and I'm using it in production, both for Tarsnap and for FreeBSD Portsnap mirrors.
You can run FreeBSD on all instance types, but some of them (everything except cluster, high-I/O, and the new m3 instances) need to have FreeBSD pretending to be Windows -- meaning that you have to pay the higher rate for the Windows license.
I don't think Amazon wants to "officially" support a route which involves people paying for a Windows license they're not using, but the route does exist.
I believe it's because the "normal". EC2 instances are paravirtualised through Xen, whereas the types listed are hardware virtualisation. Not sure though.
Used to be that only the Windows instances were HVM (thus the defenestration hack using them to get FreeBSD onto AWS) and all the Unix ones used paravirtualization - has this changed?
Cluster, high-I/O, and M3 all have HVM available. Basically, all the new instance types released since I started complaining to EC2 engineers about how HVM is so much easier to work with than PV... ;-)
In my past experience, the micro instances are slower than molasses when it comes to the ports system. All the initial install/verification sucks a lot of CPU and the micro's can't handle it.
When I set up new micro instances, I usually launch them as c1.medium to set things up, then stop and restart them as t1.micro -- EC2's ability to change instance types is very useful here!
I just spent an hour installing and documenting every step of a new 12.04 deploy for my rails-powered API.
I wanted to do this on FreeBSD! I check HN mid-install of a bunch of software and boom what do you know. Time to start over!
That being said, there seems to only be one result for FreeBSD in the marketplace, from our bud cperciva. I'd really love to deploy a base 9.0 on a Small.
Don't forget kqueue/libdispatch. Yes, with epoll and friends you can essentially reproduce kqueue's functionality, but there are some really interesting things you can do when all that functionality is available in one place and you have a library like libdispatch written on top of it.
Right, libdispatch is a OSXism which I've never used because I like to write portable code. -- but if you know that your code is always going to run on systems which support it, it's definitely something which can be useful.
Incidentally, some of these things work on Ubuntu: superpages, zfs, and clang. & I wouldn't call Journalled Softupdates an advantage, more of a catch-up to the various journalled filesystems supported by Linux.
The license doesn't allow to distribute a binary build of it, but you can build your own rpm and deb packages and install it to your own servers.
(According to their FAQ: "In a nutshell [...] This means that a single derived work of the Linux kernel and ZFS cannot be legally distributed."
Honestly, besides some quick tests I don't have any experience to judge how stable it is, but definitely better than the fragile fuse setup you are mentioning.
I found softupdates to be superior to traditional journaled filesystems for boot filesystem - BIOS can't replay the journal, but softupdates provide always consistent fs state on disk, so kernel and modules can be loaded and booted. Only leaks of free blocks need to be fixed with background fsck if filesystem is dirty.
Not a real FreeBSD user myself, but I've heard that it has good/complete documentation[1], a solid foundation that doesn't change too often and a nicer firewall than Linux's iptables[2]. Also, it's not really an advantage per se, just interesting, but Mac OS X's kernel is half-derived from FreeBSD's[3].
I have tons of experience with FreeBSD in an enterprise environment and can say hands down that pf is the best firewall money can't buy. That said, Red Hat has largely replaced FreeBSD for a lot of CIOs over the last 10 years. I really think startups should launch on CentOS instead of Ubuntu which seems to be the trend.
There is a reason for that trend - Ubuntu LTS on the server takes less time to set up and manage than Red Hat/CentOS. Red Hat of course now does 10-year support for its releases as well as excellent security out of the box (10-year support is especially appealing to me as a system admin) but the ease of Ubuntu LTS upgrades and more frequent releases (i.e. up-to-date software) combined with the admin friendliness make for a more compelling business case.
The problem with Ubuntu is that if you ever move from the cloud to dedicated hardware, you will be in for a world of pain. None of the Tier-1 hardware vendors officially support Ubuntu, which makes it very difficult to perform firmware upgrades without custom solutions, or obtain diagnostic/monitoring software. We couldn't even get Ubuntu 12.04 to work _at all_ on our new Dell 12th-generation (Ivy Bridge) servers for several months after release. EL 6, on the other hand, was totally supported.
I hope that the availability of official CentOS AMIs will incent startups to think ahead and use it instead of Ubuntu, otherwise they could become a victim of their own success.
Another thing that's great about Red Hat and its clones is that they guarantee backward compatibility across minor releases (e.g. 6.0 -> 6.3), and ensure that if you deploy a given release it will be identical across all nodes. Contrast with Ubuntu, where an installation of a given LTS release (with "-updates") could vary depending on the day you deploy it.
Speaking as a Linux user/developer who hasn't touched any BSD in a long, long time, I can perfectly understand why many people would prefer FreeBSD. Not dissing on Linux (it's still my personal favorite, and Debian is my goto for everything), but it's always good to have choices; to each their own. From what I understand, whilst Linux has the drivers and software, most server setups could be easily swapped out for FreeBSD (drivers are usually not problems on servers, and most server software you'd want to run is open source and already ported and packaged), plus FreeBSD has some things still not in Linux that a smart admin could use to give their startup an edge.
None, Linux is better on almost every aspects, I don't see a real IT company using BSD over Linux. Linux is faster and support way more software / hardware. BSD was equal to Linux years ago, but Linux grew up much faster due to his large community and support from the industry.
FreeBSD has a simple and consistent upgrade path between major releases, excellent stability, excellent hardware support (on the server side, at least; that's where it matters to me personally), a magnificent packaging and ports system, excellent documentation, an excellent firewall stack (pf), a proper ZFS implementation, a powerful and easy-to-manage jails system, and is used in plenty of corporations, large and small, both as a conventional server platform and as a base for commercial products.
It is a well-curated shop, while GNU/Linux is a street bazaar.
At any rate, this is excellent news! I've been looking for an excuse to do more with kqueue/libdispatch in a server setting, and this looks like just the excuse I need. Congrats, Colin, and thanks!