Please log in to watch this conference skillscast.
HealthUnlocked is a social network for health: the second biggest health website in the UK, with 4 million visits per month. They have also built and maintain a number of other applications with partner organisations such as Macmillan Cancer Support. Over the seven years or so that the company has been around (and the four years they've been using Clojure) they have has developed a sprawling, complex system of interdependent apps that is best described by the name "distributed monolith".
Early this year Russell and the team decided it was time to invest some serious effort into refactoring and rewriting these systems to make changes easier, safer, and faster. They also had to find a way to do this without compromising their ability to deliver new features. During this talk, you will discover the practices and architectural choices they found helpful, and the lessons learned along the way.
Things the talk will explore:
Moving from a "distributed monolith" to a small set of well-factored, cohesive monoliths
Isolating DB access to a single (multi-app) repository
Defining interfaces between services using shared schema code
Moving from horizontal to vertical slices
What are the purpose of tests when you have a REPL?
Finding a middle-ground between example-based and property-based testing
Using docker-compose to spin up instant, complete dev and test environments
YOU MAY ALSO LIKE:
- Pathogens & Parentheses: How we use Clojure in the molecular surveillance of infectious disease (SkillsCast recorded in December 2014)
- Keynote: Deliberate Practice: Reaching your potential (SkillsCast recorded in October 2019)
- What did Deming's work on quality do for us? (SkillsCast recorded in October 2019)
Taming a Huge, Sprawling System with Clojure
Russell is HealthUnlocked's Head of Engineering. After language-hopping quite a bit in his early career, he found Clojure a little over four years ago and since then he is happy to report that the grass has stopped looking greener on the other side. (Except, idk, Erlang/Elixir is pretty cool. And Elm is interesting...)