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:
- Fundamentals of Jepsen with Kyle Kingsbury (in London on 21st - 22nd March 2018)
- Fast Track to RESTful Microservices (in London on 18th - 20th April 2018)
- DDD eXchange 2018 (in London on 26th - 27th April 2018)
- Test Driven Development (TDD) Workshop with Damjan Vujnovic (in London on 2nd - 3rd August 2018)
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...)