Akka.Cluster, .NET Core, Docker, Kubernetes, and More!
Welcome to the 2019 Akka.NET Training Tour! Over two days you're going to learn how to use Akka.Cluster, .NET Core, Docker, and Kubernetes to build production-grade, real-time applications that can be seamlessly deployed via Continuous Delivery best practices without any downtime.
We have concise our training down from 5 days to 2 days to help allow our clients to be able to attend. We understand that many of you will be taking off of work to attend Petabridge's 2019 Akka.NET Training, and we wanted to make sure we made our training available to everyone interested. This intense two day training course is packed full of everything Akka.NET and kept small to allow time for everyone's questions to be answered directly by an Akka.NET expert.
Petabridges 2019 Akka.NET Training Tour is priced at $2000 per seat.
Early Bird tickets will be priced at $1500 per seat until June 15.
All of our guests will receive the included benefits:
* Complimentary group dinner August 15 after the training with Aaron Stannard and team.
* Discounted room pricing for our attendees at the 4 Star Mercure Hotel Amsterdam West.
* Breakfast and PM refreshment breaks during conference both days.
* Lunch will be provided to our guests both days.
***You are expected to bring your own laptop to this event. This course will be taught primarily using Windows 10 - if you're bringing a Mac you will still be able to accomplish everything in this course but the setup and installation steps may be different.***
Prior to starting this workshop, you will need to do the following:
1. Complete the Akka.NET Bootcamp - (https://github.com/petabridge/akka-bootcamp).
2. Install Docker for Windows on your laptop - (https://docs.docker.com/docker-for-windows/install/) - we will be running on Linux containers primarily in this course.
3. Enable Kubernetes on Docker for Windows - (https://www.hanselman.com/blog/HowToSetUpKubernetesOnWindows10WithDockerForWindowsAndRunASPNETCore.aspx).
4. Install the latest .NET Core SDK on your laptop - (https://dotnet.microsoft.com/download).
5. Install the Petabridge.Cmd Global Tool - (https://cmd.petabridge.com/articles/install/#client-installation-via-net-core-global-tools).
Once you've done all of the following, you should be ready to participate in all of the live coding and DevOps exercises in this course.
In day 1 of this workshop we're going to learn how to use Akka.NET and Akka.Cluster to build production-grade distributed applications. In addition to the concepts you will get hands-on experience learning how to build highly scalable, fault-tolerant applications that can be upgraded via Continuous Integration with zero downtime.
In day 2 of our Akka.NET Workshop you're going to learn how to use Docker, Kubernetes, and Continuous Integration to manage, monitor, and make changes to your Akka.NET cluster without missing a beat.
9:00am - Akka.Cluster Introduction, Ideas, and Concepts (Lecture) We'll begin the morning by learning about the core concepts and tools provided by Akka.Cluster, such as how clusters form, when and why we need them, how work gets distributed to other members of the cluster, how large-scale users typically design their clusters, and how to administrate a cluster using the Petabridge.Cmd command-line interface.
11:00am - Building Our First Akka.Cluster Application (Hands-on) Using a partially-built sample created by Petabridge, all attendees are going to build an application that consumes real-time data from an external source and processes it in order to create real-time analytics and alerting using the tools we discussed in the earlier lecture this morning. We'll start to look at how to distribute state and work across an Akka.NET cluster as well as how to manipulate and administer it using Petabridge.Cmd.
12:00pm - Lunch Lunch will be provided to all attendees at the venue.
12:30pm - Advanced Akka.Cluster Techniques and Best Practices (Lecture) Now that we have a handle on the basics of Akka.Cluster, it's time to learn how to leverage it to build professional-grade applications that are consistent, reliable, and still quite fast. In the afteroon we're going to learn how to use Akka.Cluster.Sharding to distribute state in a consistent fashion across our cluster; how to use DistributedPubSub to publish critical events in a transparent publish-subscribe model; and how to use the ClusterClient to decouple our client-side applications, such as a Web UI, from the back-end portions of our application that actually perform the hard work.
1:30pm - Working with Cluster.Sharding and DistributedPubSub (Hands-on) In the second hands-on session we're going to put these ideas into practice, refactoring the application we built in the morning to take advantage of the Akka.Cluster.Tools.ClusterClient, DistributedPubSub, and Akka.Cluster.Sharding to give us an even more robust application capable of consistently handling and recovering state.
3:00pm - Break Coffee, beverages, and snacks.
3:15pm - Production-Grade Akka.Cluster DevOps and Architecture Planning (Lecture) In the final lecture on day 1 we're going to learn how to design our cluster so it can be upgraded with zero downtime, automatically bootstrap new nodes programmatically using information provided by the hosting environment, and how to use [Akka.NET Split Brain Resolvers](https://getakka.net/articles/clustering/split-brain-resolver.html) to automatically kick unreachable nodes out of the cluster in the event of a hardware failure.
4:00pm - Implement Akka.Cluster DevOps Practices (Hands-on) In our final session in the afternoon, we're going to spend an hour implementing all of the Akka.Cluster DevOps practices we just learned. We'll use Google.Protobuf to design version-tolerant Akka.Persistence and Akka.Remote messages that can be modified in the future without breaking our ability to handle / read older messages and we'll learn how to design each of our Akka.NET services so they can run with consistent, uniform configurations across 100% of participating nodes in the cluster.
5:00pm - END OF LECTURE
6:30pm - Attendee Dinner The Petabridge team will be taking all attendees out for dinner.
9:00am - Introduction to Docker and Akka.NET (Lecture) We begin day 2 by learning about the ins and outs of Docker, the popular containerization platform. We'll learn about how containers work on top of the host operating systems, the benefits of using this approach versus others, how Docker images are composed from their base parts, and how to work with the container runtime. We'll also learn the hearts of the Dockerfile structure itself and the role Docker image repositories and tags play in continuous delivery.
10:00am - Dockerizing Akka.Cluster (Hands-on) Based on what we've learned about Docker, we will work together to create Dockerfiles for all of the services in our Akka.Cluster application, and we'll take into account how to use the Akka.Bootstrap.Docker library to make it possible for us to have nodes startup correctly and bind to reachable network addresses automatically. After spinning up some Docker-ized Akka.NET containers individually via the Docker CLI, we'll move onto using `docker-compose` to create an entire cluster, including the network resources needed to power tools such as our Akka.Persistence database and more.
11:00am - Introduction to Kubernetes (Lecture) Now that we've covered Docker, it's time to learn how to put it into practice using Kubernetes to orchestrate it in production. We'll learn the building blocks and concepts behind Kubernetes, how the `kubectl` command line tool works, how deployments work, and the basics of the Kubernetes configuration elements that we can use to create our application.
12:30pm - Lunch Lunch will be provided to all attendees at the venue.
1:00pm - Getting Started on Kubernetes and Akka.NET (Hands-on) Now that we've learned the basics of Kubernetes (K8s), we're going to take our Dockerized Akka.Cluster application and orchestrate it properly using K8s on our machines. In this hands-on session you'll learn how to define services, stateful sets, deployments and Kubernetes secrets that can be used to hide and share configuration information. We'll have your Akka.NET cluster up and running on K8s in one sitting.
2:30pm - Continuous Delivery with Kubernetes and Akka.Cluster (Hands-on) Using the build script that comes with the Akka.NET workshop source files, we're going continuously deliver updated versions of some of our Akka.NET services to our cluster _without any downtime_. This will help illustrate the power and flexibility of Kubernetes in combination with the Akka.Cluster versioning practices we learned on day 1.
3:00pm - Break Coffee, beverages, and snacks.
3:15pm - DevOps and Cluster Monitoring with Phobos (Lecture) In the last lecture in this workshop, we look at using [Phobos' sophisticated Akka.NET tracing and monitoring technology](https://phobos.petabridge.com/) to help paint a clear picture of what, exactly, our cluster is doing at any given time. We'll learn about distributed tracing, using the OpenTracing standard, and how to configure Phobos to gather all of the data we need automatically - without any code.
4:00pm - Integrating Phobos, Akka.NET, Docker, and Kubernetes (Hands-on) In our final exercise, we'll put everything together in K8s using Phobos in combination with Jaeger, an OSS distributed tracing technology, and Promotheus, an OSS monitoring technology, to help visualize all of the activity happening inside our Akka.NET cluster.
5:00pm - END OF LECTURE
Aaron is the founder and CEO of Petabridge, and the co-founder of the Akka.NET open-source project. Prior to Petabridge, Aaron founded MarkedUp Analytics, a real-time in-app marketing and analytics service used by 1000+ developers. Prior to that he worked at Microsoft as a Startup Developer Evangelist.
Petabridge is a world leader in building distributed systems and distributed systems tools in the .NET ecosystem; we serve our customers by providing them with professional-grade open source software packages, proprietary tooling, consulting, training, and support.
Founded in 2015 in Los Angeles, California, Petabridge has been rapidly growing over the past 3 years. In 2017 we relocated from Los Angeles to Houston, Texas. Our customers span the globe, ranging from Fortune 500 companies like Boeing, Bank of America, S&P Global, and CitiGroup to early stage startups; we help them succeed by developing better, more resilient systems on the backs of open source technologies we develop such as Akka.NET, NBench, and others.