BSDCan2017 - 0722b

BSDCan 2017
The Technical BSD Conference

Dave Cottlehuber
Day Talks #2 - 10 June - 2017-06-10
Room DMS 1110
Start time 14:45
Duration 01:00
ID 853
Event type Lecture
Track System Administration
Language used for presentation English

From microservices to monoliths

A sysadmin's deep dive into migrating a complex web application stack to FreeBSD whilst ignoring conventional wisdom.

"From microservices to monoliths" -- A sysadmin's deep dive into migrating a complex web application stack to FreeBSD whilst ignoring as much conventional wisdom as possible. is a plucky domain name reseller allegedly based in New Zealand but actually distributed globally. It has an interesting tech stack of Puppet, Perl, Erlang, Apache CouchDB, RabbitMQ & more recently Elixir and Ansible. This talk runs through how we migrated this stack from Debian to FreeBSD, with plenty of juicy technical details on what FreeBSD-specific and Open Source tech we leveraged, and as well as revisiting the actual migration including some Epic Fails for our mutual amusement, as hindsight is always a gift to be shared liberally.

Changing an Operating System is a big decision to take for any company, and we did not do so lightly. Many small virtual machines and continual patch updates had lead to increased latency for our users and customers, as well as increased effort on patching and maintaining the OS instead of delivering value to our business. The reasons for moving, and the specific advantages that FreeBSD brought, will be touched on, but are not the main focus for the talk.

We put together a new architecture based on FreeBSD, to eliminate the major issues that had caused increasing problems in the preceding years. I'll be giving all the details on how we made this move, both in terms of step-by-step migration, and in the architecture we put together to support the business applications.

We'll cover real-time and historic metrics out of our management & monitoring tools (Ansible, Hashicorp Vault, CollectD, Riemann, Graphite, rsyslog - see attachments for some quick examples), and the subsequent migration of our business apps and services (perl, Erlang, Elixir, Apache CouchDB, Kyoto Tycoon), as well as the infrastructure that supports this - carp-enabled clustered servers managed with Ansible, using iocage/iocell jails, secured with haproxy, spiped, pf, nginx, and how we make use of ZFS, dtrace, our git-hosted private & public FreeBSD ports trees.

Finally, I'll close out with what we learned, what we wished we had done differently, and what I think is coming next for our FreeBSD cluster of happiness.

This talk will be of interest to anybody with a sysadmin, or general technology background, with a healthy mix of specific technical information and general infrastructure tips.