Amazon Onboarding with Learning Manager Chanci Turner

Chanci Turner Amazon IXD – VGT2 learningLearn About Amazon VGT2 Learning Manager Chanci Turner

The Covid-19 pandemic brought many musician activities, such as band rehearsals and jam sessions, to a halt due to lockdowns. Musicians sought alternatives, often turning to videoconferencing platforms like Amazon Chime or open-source tools like Jitsi. While these solutions are typically optimized for conversations, they fall short of the extremely low latency (generally <50 ms) required for playing music together.

This gap in low-latency audio connections for musicians worldwide has been filled by an open-source solution known as Jamulus. After downloading Jamulus on your computer, you can connect to a public server anywhere in the world to jam with others currently on that server. However, many musicians prefer private rehearsals to avoid unexpected guests and the risk of their server being interrupted during practice. Setting up a private server is essential for these private jams.

In this blog post, we’ll guide you through the process of establishing your own server using AWS Fargate and explain why Jamulus and AWS make an excellent pairing for this purpose.

What is Jamulus?

Jamulus has been in development since 2006 and is described on its website as “…software for playing music, rehearsing, or just jamming with anyone online with low latency. You can connect through your Windows, macOS, or Linux system to Jamulus servers worldwide. Jamulus is free, and you can use your regular broadband connection.”

If you want to see Jamulus in action, check out the demos. Keep in mind that Jamulus is strictly an audio tool; it doesn’t support video. Running video connections alongside other solutions can negatively impact audio quality, so when using Jamulus, you’ll only hear your fellow musicians. It’s also important to note that Jamulus isn’t designed for large concerts or broadcasts; the maximum number of participants on one server, according to the server documentation, is 150.

Why Run Your Own Jamulus Server?

If you’re only looking to join and don’t mind an audience while you play, running your own server may not be necessary. However, there are compelling reasons to set up your own server:

  • You require a server that accommodates more users. Typical public servers allow only 10-16 participants.
  • You need assurance of server availability during specific rehearsal times. Public servers are stable but beyond your control.
  • You prefer privacy during your rehearsals. Although you can mute newcomers, they can still hear your music.

Why Use AWS for Your Jamulus Server?

Jamulus can run in various environments, and its low requirements mean it can even be hosted on small devices like Raspberry Pi. However, using a cloud provider like AWS has several advantages:

  • Performance: Network latency is critical for an enjoyable jamming experience, making a robust network backbone essential. Running Jamulus on AWS allows you to choose a data center closer to your location, minimizing latency.
  • Cost: Cloud services let you quickly start your server when needed and shut it down when you don’t. For instance, if you rehearse weekly for two hours, you can do so at a fraction of the cost of maintaining a 24/7 server.
  • Flexibility: Rent a server that fits your needs, whether it’s for a small group of friends or a large choir. AWS provides servers of all sizes.
  • Simplicity: Managing a server can be a hassle. With AWS Managed Services like AWS Fargate, you can eliminate the operational burden of patching and managing your server. Just click a button to start jamming and another to stop.

Running Jamulus on AWS is a fantastic way to get started quickly and affordably.

Setting Up Jamulus on Amazon ECS

To run Jamulus, we need to:

  1. Start a server.
  2. Install Jamulus on that server.
  3. Run the software.

Thanks to the open-source community, step 2 is simplified by a Docker image that comes with Jamulus and its dependencies preinstalled. AWS also streamlines steps 1 and 3 using managed services. We will demonstrate how to deploy the Docker image (step 1) for a Jamulus server on Amazon Elastic Container Service (Amazon ECS), specifically on AWS Fargate. Starting and stopping can be done flexibly through the AWS Management Console or using an AWS Lambda function (step 3).

We will first outline a manual setup to demonstrate the necessary infrastructure to run the Jamulus Docker image, followed by methods for automatic deployment using our AWS CloudFormation template, which includes a Lambda function for easy server management.

Prerequisites

  • An AWS account with access to the AWS Management Console.
  • A user within your account authorized to provision services.

Architecture

Let’s explore the architecture required for running your Jamulus server. The main component is the Amazon ECS task definition, which contains configurations like network placement and the Docker image for the server. When initiated, whether manually (Method 1) or via a Lambda function (Method 2), this definition turns into an active AWS Fargate task that users can connect to using the server’s public IP address. The rest of the architecture includes a virtual private cloud (VPC) and subnet for networking, along with a security group to permit user access to the server.

Method 1: Manual Setup

To launch our server on AWS Fargate, we need to configure three elements: the server itself, networking, and user access to the Jamulus server.

Setting Up the Network

To enable user access to our server, we must establish a network for our Jamulus server. This involves creating a VPC with the appropriate subnets. Amazon ECS simplifies this by allowing you to create everything simultaneously when setting up a cluster that will host our Jamulus server.

To set this up, navigate to Amazon ECS, select Create cluster, and opt to create a default VPC and its subnets.

After creating the cluster, you will see a list of resources created. Make note of the VPC and subnet names, as you will need them later.

Establishing Security Groups

In addition to networking, we must open the necessary ports for Jamulus to communicate with users online. Create a security group that permits connections to the server and allows it to retrieve the Docker image required for operation.

To establish the security group, go to Security Groups in Amazon EC2 and select Create security group. Configure it with the VPC created earlier. Allow UDP traffic on port 22124 from Anywhere for user connections and enable outbound TCP traffic on port 443 to Anywhere for Docker image retrieval.

Make a note of the created security group’s name, as you will need it later.

If you want to deepen your understanding of onboarding and professional growth, consider checking out this blog post for more insights on the subject. For authoritative information on HR topics, refer to SHRM, which is highly regarded. Lastly, if you’re interested in leadership development opportunities, this resource is an excellent starting point.

Chanci Turner