Mavnn's blog

Stuff from my brain

Cloud Native .NET

We're launching a new two day course this April (26th/27th), called "Cloud Native .NET". Despite the slightly pretentious name the industry has come up with, what we're really talking about here are the core engineering skills of building code that can be scaled and maintained. This course is a practical workshop using .NET Core and Kuberenetes so we can see what it all looks like in practice.

Full details below!

Cloud Native .NET

Or “Writing Maintainable Systems in .NET”

.NET was first created in a world of monolithic enterprise deployments installed on physical servers, and desktop applications distributed via CD.

Now the world has moved on, and so have our expectations. The new normal has become:

  • Rapid, continuous updates of services
  • Zero down time deployments
  • Horizontally scalable web applications with 24 hour access

The term “Cloud Native” has been used to describe code that is designed to live in this brave new world of automated deployments and cheap virtual infrastructure. We’ll examine some of the principles and techniques underpinning the design of automatically deployable, trivially scalable, reliable, and easily maintainable software systems built with .NET.

All with the logging, monitoring, and metrics you need to know what’s really happening in production.

We’ll use Kubernetes to define a multi-service system, digging into how and why the overall system has been designed the way it has. Finally, we’ll put it all together, creating new functionality by adding .NET Core services to our system.

What you know already:

  • How to read and write C# or F#
  • Basic command line skills

We’ll cover:

  • An introduction to Kubernetes/Docker
  • Applying SOLID principles to system design
  • What is a cloud native application anyway?
  • 12 Factor Applications
    • What are the 12 factors?
    • How do they help us write better software?
  • Writing .NET 12 Factor Applications
  • How to instrument distributed services
  • Running distributed systems in development
  • Continuous Integration & Deployment
  • Continuous Improvement
    • Property based testing
    • Performance measurement

Before you come:

You’ll need a laptop with:

Before arriving, it would be really helpful to run the command minikube start --memory 4096 --cpus 3; on first run minikube downloads its own dependencies.

You’ll come away with:

A git repository of your completed work, which will include:

  • Nicely instrumented, benchmarked and unit tested .NET services
  • A declarative deployment for the overall distributed system
  • Real time centralized logging, metrics and health feedback from the system, whether running on the dev machine or in production
  • Working zero down time continuous deployment
  • Where will the course happen?

    At The Skiff, right next to Brighton Station (good links to London and Gatwick Airport).

    What other people say about our courses:

    “I felt there was a gap between my good understanding of the language and actually applying it on bigger “real” projects. Michael’s great training skills have enabled me to quickly practice some advanced topics I was less familiar with. With my newly acquired knowledge, I’m confident I will be able achieve some great (and fun) development.”

    - Hassan Ezzahir, Lead developer (Contractor) at BNP Paribas

    “Huge thanks to @mavnn for coming from London to @Safe_Banking Atlanta and giving an All-Week #fsharp Training Session to our Dev Team. By all accounts it was a great time and everyone learned quite a lot. His approach is very practical and use case oriented, highly recommended.”

    - Richard Minerich, CTO Safe Banking Systems

    “Thanks to @mavnn for an excellent “Building Solid Systems in F#” workshop in London last week. Really enjoyed the course material and meeting everybody (Also I’ve been inspired to teach myself Emacs :)”

    - Kevin Knoop, AutoTask

    Where can I buy tickets?

    Right here! There’s an early bird discount which runs to the end of March, and if you’re a user group member ping me (or get your user group to do so!) and we’ll work something out. If the form below doesn’t work for you, you can also get them direct on EventBrite.