Setting up an online conference - Part 1
Tags: virtual, conference, devops, management
Published: 2020-03-12 16:11:43

2020 is shaping up to be very interesting from the standpoint of conferences and large gatherings of people. At this point, I'm glad to see the hard choices being made. Let's try and contain and stop the spread.

With so many conferences being cancelled we hear "what shall we do instead?", "I was going to {x} conf, what should I do with my time now?" or "I was going to talk at {y}, I can't do that now".

## What's the solution? 
In some cases, the option is to go online. I'm going to describe the setup that I am using to create an online conference. This conference is free to view. I'm afraid if you want "paid-for content", that would be a more complicated setup and not something I will cover.

## Who?
I am a part of a large community of developers and creators on the Twitch streaming platform called The Live Coders. You can find us at:  https://livecoders.dev

With 120 broadcasters who specialise in Edutainment (Education while entertaining), we are in a special position to be able to pool our resources and create the first running of The Live Coders Conference.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hntw36d7q68wmv60zfz9.png)

## Why?
There are several reasons for doing this:

 - Some of The Live Coders have talks they aren't able to give now
 - We can - we are broadcasters and have the setup to do this
 - Team promotion - The Live Coders are a diverse community. Many people including Twitch users don't realise a community like this exist.

## How!
Individually the team are broadcasters, we each have our own setups and broadcast to our own individual Twitch channels. This is a problem:
 - How do we allow the speakers in our conference to broadcast to one channel?
 - How do we broadcast a full day of the conference without downtime between each speaker?
 - What happens if there are technical issues?
 - What can we do to avoid "dead air"?

## Answers
It quickly became apparent that we wanted to stream to a single channel for the day. This was going to be difficult if we wanted each speaker to broadcast there would have to be downtime between each speaker as they got themselves connected to the channel. The ability to have filler between speakers would not work and in very simple terms it wouldn't look professional.

### Part 1
An MC, we needed a Master of Ceremonies. Someone who could broadcast from their system for the day and receive the broadcast from the speakers and "relay" that through their system. So how do they receive the broadcast from the speaker? This was an easy fix and a suggestion from several on the team. An RTMP server (Real-Time Messaging Protocol) would be used this would relay the broadcast from the speaker to the MC.

Perfect I hear you cry! Well not quite, after setup of an RTMP server locally I realised there is an issue with direct connections with people on the other side of the world, this could be an issue for anyone who was going to be an MC.

### Part 2
An RTMP relay does not have to be powerful, it can be a very basic VM somewhere, anywhere in the world. Fantastic, I created a VM in Azure... The issue from part 1 was solved, there were no connection issues the second time around and we can put this VM in a region fairly central to the speakers. Not all sunshine and lollypops, there was an issue, having multiple RTMP streams coming into the server is no issue Azure doesn't charge for ingress. The issue was egress, 3 streams going out to the MC, at between 3000 and 5000 Kbps was going to cost us more than needed.

### Part 3 - The Final Setup
A second VM was created in azure, on the same network as the RTMP relay server. This is a Windows 10 VM and 16 vCPU. The cost of which is not what we call "cheap" however is $0.666/hour and would be on only during the conference hours (around 12-15) and initial testing (about 2 hours).

This VM would be used as the broadcast machine, receive the RTMP feeds and broadcast to Twitch. 

### FINAL SETUP
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wyankvb49qa0qnz3pdlz.png)

### WHAT? Why are there two arrows for the MC?
The MC is also broadcasting to the RTMP server, this means their camera or whatever they are broadcasting is available at the broadcast server. The connection to the Broadcast Server, that is for monitoring and use of the broadcast machine. This is done via remote desktop.

### Hang on you didn't cover technical issues
As we are not reliant on the individual speakers connecting and disconnecting from the Live Coders twitch channel and as we have an MC as a relay. We are able to cover any technical issues easily with zero downtime to the broadcast.

### The Cost
For the above setup in Azure, the estimated cost all in is looking to be around $20-30 for the conference, including tests.

## What next - Part 2
The second part of "Setting up an online conference" will go into the setup of a broadcasters machine and how they will broadcast to the RTMP and the management of a stream for the MC and software used in that.