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.
Learning Outcome
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.
Target Audience
If you're interested in a journey from C#/OO to F#/Functional with DDD
schedule Submitted 3 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Adam Granicz - Full-stack, functional web development on WebAssembly with F# and Bolero
45 Mins
Talk
Beginner
Bolero (http://fsbolero.io) is a functional, reactive web development library for F# developers targeting WebAssembly via Blazor. Next to building on a familiar Model-View-Update (MVU) architecture, Bolero also integrates a number of power features from WebSharper (http://websharper.com) to enable ultra-efficient, full-stack F# web applications. By plugging into the ever-growing Blazor ecosystem, you will enjoy developing most of your code base without JavaScript, and discover a new and promising alternative to building performant web applications. Come to this talk and learn everything you need to know about developing Bolero applications, and jumpstart your productivity with skills that will leave any Blazor developer impressed.
-
keyboard_arrow_down
Adam Granicz - Building a blog engine in F# with WebSharper
90 Mins
Tutorial
Intermediate
When it comes to developers blogging, expectations are high and many find that it’s a worthwhile effort to develop simple scripts, tools and even full engines to enhance and support blogging about their favorite language. In this hands-on session, you will implement your own blog engine from scratch in just a few hundred lines of F# code using WebSharper, and use its static file generation capabilities to generate blog pages that you can deploy directly into GitHub Pages or host in any web server. The resulting blog can easily be styled using WebSharper’s powerful templating capabilities, and even automated to rebuild when you commit new content or blog articles in your blog repository. You will also learn about adding dynamic functionality to your generated blog pages, or even turning your blog engine to a hosted solution that provides further capabilities as well. No more searching for blog engines with the right features, code what you need and enjoy!
-
keyboard_arrow_down
Kunjan Dalal - From concept to creation in a week with Fabulous
90 Mins
Tutorial
Beginner
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.
-
keyboard_arrow_down
Kunjan Dalal - Getting Started with API development using TypeLevel Stack
45 Mins
Tutorial
Beginner
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.