DiscoverRunning in ProductionHitobito Helps You Manage Communities with Complex Group Hierarchies
Hitobito Helps You Manage Communities with Complex Group Hierarchies

Hitobito Helps You Manage Communities with Complex Group Hierarchies

Update: 2021-08-16
Share

Description

In this episode of Running in Production, Matthias Viehweger goes over building a
service to help organize groups of people. It’s built with Ruby on Rails and is
hosted on OpenShift with Kubernetes. It’s been running in production since 2012.



Matthias talks about building a Rails Engine abstraction, creating a multi-repo
monolith, using Sphinx for full text search, making the most of Kubernetes /
OpenShift and lots more.



Topics Include




  • 6:23 – There’s an open source version of it along with a hosted SAAS app

  • 9:10 – Motivation for using Ruby on Rails and updating from v4 to v6 over time

  • 12:18 – Using Action Mailer and Delayed Job to send and receive emails

  • 16:40 – A few other gems being used in the project

  • 19:25 – 86 models in the core app and 275 extra for a specific Scout site (~70k LOC too)

  • 22:49 – How billing is handled for the hosted SAAS app (it’s through invoices)

  • 24:54 – Handling integrations by exporting data

  • 26:31 – It’s a multi-repo monolithic application, what the “core” and “wagon” are

  • 32:02 – There’s mostly server rendered templates with a bit of JS on the front-end

  • 35:00 – Full text search is handled with the Thinking Sphinx gem

  • 37:09 – There’s a separate MySQL database for each tenant

  • 42:35 – Tech stack run down so far and how memcached is being used

  • 44:58 – The app is set up to use Docker Compose in dev but Matthias doesn’t use it

  • 48:05 – It’s hosted on APPUiO which is a hosted version of OpenShift

  • 50:20 – We’re all YAML engineers, configuring Kubernetes and DB migrations

  • 1:03:04 – Kustomize is being used instead of Helm for templating YAML files

  • 1:05:20 – The Kubernetes related code is in its own git repo

  • 1:08:01 – From developing a feature locally to pushing it to production

  • 1:19:38 – Resource limits are defined in the Kubernetes config files

  • 1:27:40 – Backing up the database with daily Kubernetes cron jobs

  • 1:31:02 – Developers are treated like grown ups when it comes to customer data

  • 1:34:48 – Handling logging and alerting with Prometheus, Grafana and Kubernetes

  • 1:40:51 – Handling DNS with DNSimple and SSL certificates with Let’s Encrypt

  • 1:44:05 – Best tips? Start with a specific thing instead of making a generic thing

  • 1:46:45 – Check out https://hitobito.com/ and their GitHub account, Matthias is also on GitHub, Twitter and he has a site at http://kronn.de/, also Puzzle is the company he works for



Links



📄 References




⚙️ Tech Stack


Comments 
In Channel
loading
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Hitobito Helps You Manage Communities with Complex Group Hierarchies

Hitobito Helps You Manage Communities with Complex Group Hierarchies