The Art of Decomposing Monoliths

Microservices are the new black. You’ve heard about them, you’ve read about them, you may have even implemented a few, but sooner or later you’ll run into the age-old conundrum: How do I break my monolith apart? Where do I draw service boundaries?

In this talk you will learn several widely-applicable strategies for decomposing your monolithic application, along with their respective risks and the appropriate mitigation strategies. These techniques are widely used at Wix, took us a long time to develop and have proven consistently effective; hopefully they will help you avoid the same battle scars.

Scala from the Trenches

In this live coding session in Scala, Kfir Bloch (head of back-end engineering at Wix) will showcase how to build a full-blown feature in Scala, while maintaining the principles of TDD and Clean Code. We’ll start with some simple scaffolding and build the feature in its entirety: defining the user-facing API, writing tests outside-in with all of the requisite building blocks (collaborators and matchers), development-refactoring cycles and ending up with a clean codebase.

Refactoring Design Patterns the Functional Way (in Scala)

It often happens, when object-oriented developers first encounter functional programming, that they’re told that there are no design patterns in functional programming; functions take the place of everything they’ve spent years learning and honing. Kfir Bloch disagrees with that assertion. To prove the point, this live coding session will take a serious look at common design patterns (factory, visitor, chain of responsibility…), and show how they smoothly translate to functional code in one of the nicer hybrid languages out there, Scala. You’ll learn a bit about functional programming, a bit about Scala and maybe even about design patterns, and will hopefully come out convinced that both approaches are valid, valuable and practical.