From C# monolith to functional actors with Orleans and F#
This is an experience talk from my work with NRK, the
Norwegian Broadcasting Company, Norway's public broadcaster.
Over the last 3-4 years we've taken the TV and radio streaming sites from a monolith to multiple
domain based services. We'll look at how we've transitioned the from a pure object oriented development team to a function friendly organzation, how gorwing the organization forced us to work with Conways law, as well as a deep dive into the bounded context of personalization.
Keeping track of user progress and favorite shows is the responsibility of Personalization domain, with high performance requirements and surprisingly
complex business rules. With new business rules and changing architecture, Personalization was in dire need of work. Combining FSharp and its typesystem and immutability with Orleans, an open source Virtual Actor platform for distributed high-scale computing applications, provided us with functional programming with OO principles in a fast and scalable platform. I'll show why we chose this path, the benefits we gained going from C# to F# and some of the lessons learned building on an actor model.
Outline/Structure of the Talk
An introduction to NRK, where we were and the problems we had.
How a growing organization required us to change the way we worked. Conways law, DDD and working togehter.
A deeper look at personalization and why it is difficult.
How we ended up with FSharp and Orleans.
Functional takeaways and actor model lessons learned.
Takeaways from a growing organization on how and why we went from a C# monolith to domain specific services. And why and how we ended up with functional programming and actor modelling for one of the domains.
If you're interested in a journey from C#/OO to F#/Functional with DDD
schedule Submitted 1 month ago
People who liked this proposal, also liked:
Kunjan Dalal - Gentle introduction to TypeLevel stack (lots of Cats) via Web DevelopmentKunjan DalalFounderFuzzy Cloud
schedule 1 month agoSold Out!
People always talked about beautiful apps, be it web or mobile. Create a crazy number of frameworks to make your frontend work as fast as possible. But they mostly forget about the backend part, called the server-side application.
TypeLevel stack provides wonderful sets of purely functional libraries to write backend code. A backend can be a simple monolith server or micro-service styled multi-server application. TypeLevel stack allows you to write your server code with less error and more confidence. TypeLevel stack has libraries for almost everything from doing Http to database access.
In this talk, I will tell you why anyone should TypeLevel stack to build a backend application. I will also share little bit controversial opinionated way to arrange things. It will also showcase how composability of functional programming helps to write the scalable application.
Kunjan Dalal - From concept to creation in a week with FabulousKunjan DalalFounderFuzzy Cloud
schedule 1 month agoSold Out!
Having worked in mobile app development for years I can say one thing for sure: creating a mobile application is hard. Creating a cross-platform mobile application is even harder. Which is why I was interested when Fabulous came out.
Fabulous is a new cross-platform mobile library which mixes Xamarin-Forms and Elm Architecture. The Elm language and architecture were not new to me. I had been using it for a year and it had left a positive impression on me. So, it was only natural that Fabulous attracted my attention. First time I tried it after it got launched, I wasn’t impressed by its performance, but recently I gave it another try for a production application and I was amazed. I was able to create a complete app.
In this talk, I will tell you why I choose Fabulous instead of other Cross Platform mobile development options for my app. I will walk you through all the mobile-specific changes I made to get Fabulous working in a performant way for iOS and Android and explain to you how you can use in combination with third-party plugins.