DevOps for Frontend: beyond Desktop Browsers

Rate this content
Bookmark

For the past 10 years we diligently applied DevOps principles to our Backend services, but what about the Frontend? Can we transfer some of that knowledge between these very different, yet very similar, worlds? The answer is yes, and in this talk I'll show you how DevOps principles helped us at DAZN to build our web applications for Smart TV & Gaming Consoles.

FAQ

In the context of DaZone, a live sports streaming company, 'beyond desktop browsers' refers to delivering content to various devices other than traditional desktop browsers. This includes devices like smart TVs, gaming consoles, and set-top boxes provided by network providers.

DaZone's workflow started with feature teams working on common features shared across multiple devices. Once features were developed, they were handed over to device teams to ensure compatibility and functionality on specific devices. This process involved a transition from feature development to device-specific adaptation before reaching the customers.

DaZone faced several challenges including a slow feedback loop due to the separation of feature and device teams, reduced work visibility across multiple Jira boards, and issues with device teams not owning the features, which complicated bug fixes and feature adaptations on specific devices.

The shift was inspired by the need to improve efficiency and ownership, which involved integrating feature and device teams to minimize handovers, enhance the speed of development, and ensure that the teams were responsible for their features from development to deployment. This approach mirrors principles found in the DevOps handbook emphasizing system-wide performance rather than isolated workflows.

DaZone utilizes a bespoke solution involving a TV lab where automated tests are conducted on various devices. This setup includes cameras pointed at device screens to monitor tests visually, complemented by code-driven testing that does not rely on camera feeds, ensuring reliability and broader test coverage across different device types.

The new DevOps practices at DaZone allow for greater autonomy of feature teams, streamlined workflows with fewer team divisions, increased visibility of work progress, and enhanced ability to deploy multiple updates per day. These practices also help in early bug detection and resolution, significantly improving the overall development and deployment cycle.

According to Max Gallo, abstractions are crucial in frontend DevOps as they help simplify the complexities of device-specific differences, enabling teams to focus on feature development without being hindered by underlying device variability. Effective abstractions facilitate the creation of a more unified and autonomous development environment.

Max Gallo
Max Gallo
31 min
01 Jul, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Today's Talk discusses DevOps for frontend beyond desktop browsers, focusing on the challenges and journey to DevOps, the importance of abstractions, maximizing flow and enabling team autonomy, applying DevOps principles beyond web applications, running automated tests on consoles and TVs, investing in tooling for TV testing, and the challenges of TV testing in the lab.

1. Introduction to DevOps for Frontend

Short description:

Today we're talking about DevOps for frontend beyond desktop browsers. We will define what beyond desktop browsers mean, especially in the DaZone context. We will tackle the journey to DevOps and explore the features that can be borrowed from back end DevOps to the front end. DaZone serves live sports streaming in over 200 countries on various HTML and JavaScript based devices. Our workflow involves feature teams, devices teams, and finally customers. One challenge is the low feedback loop due to the involvement of multiple teams.

Hi, everyone, and thank you for joining me. Today, we're talking about DevOps for frontend beyond desktop browsers. My name is Max Gallo. I'm a principal engineer from London. I work at DaZone. You can find me on Twitter at underscore Max Gallo. The topic of today is quite a big topic, and I want to smash it in three different parts.

At the beginning, we will set the context. We will define what beyond desktop browsers mean, especially in the DaZone context, in the live sports streaming context. After we've done that, we will tackle the journey to DevOps. So how did we arrive to the DevOps as we know today? And which are the features that we can steal, that we can borrow from the back end DevOps to the front end? And at the end, we're going to see how those features are actually applying if they are applying for the front end.

But let's start beyond desktop browsers. DaZone is a live sports streaming company. So we serve live sports all around the globe in so many devices and in a lot of countries, more than 200 countries. Among all these devices that we are targeting, there are almost 25 of them which are HTML and JavaScript based. So it means that we are running our web application into some kind of browser which is embedded into the device. But which devices are we talking about? So I'm mostly talking about your TVs that you have in your living room and your gaming console, your latest and shiny PS5 or Xbox or maybe a set of box that comes with your network provider and actually maybe more. We are currently supporting more than 25 of them.

So in all this idea, with all these devices, we created our workflow as it follows. So we started from feature teams. This is our workflow let's say up to six months, one year ago. So our feature team were working on common features. So all the common feature which were shared across multiple devices were starting from here. We had multiple feature teams and once they were done, they were handing over the code to the devices teams. This team's goal was to make sure that the app was working fine on the device itself. And once the devices were happy, we were able to go finally to customers. So the idea is that feature, then devices, and then customer.

But this particular setup has its own challenges. And I want to start with the first challenge, which is as low feedback loop. Why is low feedback loop? Mostly because we have two different teams that are needed for going to one place into another one and to go from the local idea of this feature to our customers.

2. Challenges and the Journey to DevOps

Short description:

Teams constantly talking between each other can slow things down. Work visibility is challenging with multiple feature teams and device teams. Device teams face issues with shared ownership. Slow feedback loop, unclear work visibility, and shared ownership are the challenges. The journey to DevOps starts with emphasizing the performance of the entire system. Development and operations teams have similarities. The question is how we arrived at today's DevOps. Abstractions are powerful contributing factors.

So imagine any bugs or any feature that goes from one team to another one. If you find any problem, it has to go back, and this goes on and on and on. And you basically have these two teams constantly talking between each other. So that could slow things down.

Challenge number two, work visibility. Imagine the best case scenario. You have one Jira board for the feature teams and one Jira board, let's say, for the device teams. But also, we have multiple feature teams. Actually, they are split by domains. So different domain teams working on all the features on that domain, which means that we have a bunch of Jira boards here, and then a few Jira boards here as well. So answering the question, when is this feature going to be released, is not that easy. Because you have to create a puzzle with all these pieces scattered in multiple places.

Challenge number three, devices teams can't fix issues properly. Why? Because they do not own the feature. In a sense, if a feature team is owning their code base with that feature, then they hand over that feature to the device team to make sure that it works on the Firestick, for example, on the Amazon Firestick, and device team says, it doesn't really work well, I tried to fix something, but there is this bug. And it means that they do not own that feature, they have to go back to the feature team. So ownership for the device team is actually quite a problem.

I want to recap the challenges before we move on. So first of all, slow feedback loop, this ping pong of bugs and features between these two teams, one is testing on devices, the other one is working on more generic feature. But then we also have work visibility, which is not super clear when a feature will be released or at least is not as straightforward as we would like to be. And then we talked about device team ownership, because this shared ownership between feature and devices is not playing really well, because it's a shared ownership, which usually means that no one's own anything.

So this setup brings us to the journey to DevOps. And I want to start the journey as every journey with a first step. And the first step is a quote from the DevOps handbook that says that the first way emphasizes the performance of the entire system. So not just focusing on the silos of different parts of silos of work or department, but focus on the entire system. And if we apply this one, which is like page one of the DevOps handbook, DevOps handbook 101, we have our old system which goes from developing a feature to the customer, which has an end over between feature teams and device teams. So we prepare something, we end it over, and this team check that everything is fine. So if that runs, if they are able to say, okay, this runs, we get to customer. But we have here, we have been here before, we have seen this, and what if I call this team here development? And what if I call this team here operation? Isn't that very similar? Isn't that exactly what was happening, let's say 10, 15 years ago when development team were all about to share their code as fast as possible without really care if that code was breaking production or if it was too expensive for that machine to run 24-7 to run so many hours of uptime? And then we had operations which had to cope with just development team shipping features that they may not even were working on some of the devices, some of the servers that they were supporting. And so we had this problem of handing over and my real question here is that okay, these are very similar, but in order to push forward this similar setup, but how did we arrive to the DevOps that we know to today? So we improved a lot in the last ten years, but how did we arrive to what we know as today's DevOps? And I think there are many contributing factors, one of which is for me are abstractions and abstractions are something very powerful.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Vue: Feature Updates
Vue.js London 2023Vue.js London 2023
44 min
Vue: Feature Updates
Top Content
The creator of Vue js gives an update on the new features of the technology.
Levelling up Monorepos with npm Workspaces
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Levelling up Monorepos with npm Workspaces
Top Content
Learn more about how to leverage the default features of npm workspaces to help you manage your monorepo project while also checking out some of the new npm cli features.
Automating All the Code & Testing Things with GitHub Actions
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
Code tasks like linting and testing are critical pieces of a developer’s workflow that help keep us sane like preventing syntax or style issues and hardening our core business logic. We’ll talk about how we can use GitHub Actions to automate these tasks and help keep our projects running smoothly.
Fine-tuning DevOps for People over Perfection
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Fine-tuning DevOps for People over Perfection
Top Content
Demand for DevOps has increased in recent years as more organizations adopt cloud native technologies. Complexity has also increased and a "zero to hero" mentality leaves many people chasing perfection and FOMO. This session focusses instead on why maybe we shouldn't adopt a technology practice and how sometimes teams can achieve the same results prioritizing people over ops automation & controls. Let's look at amounts of and fine-tuning everything as code, pull requests, DevSecOps, Monitoring and more to prioritize developer well-being over optimization perfection. It can be a valid decision to deploy less and sleep better. And finally we'll examine how manual practice and discipline can be the key to superb products and experiences.
Why is CI so Damn Slow?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
Why is CI so Damn Slow?
We've all asked ourselves this while waiting an eternity for our CI job to finish. Slow CI not only wrecks developer productivity breaking our focus, it costs money in cloud computing fees, and wastes enormous amounts of electricity. Let’s take a dive into why this is the case and how we can solve it with better, faster tools.
The Zen of Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
The Zen of Yarn
In the past years Yarn took a spot as one of the most common tools used to develop JavaScript projects, in no small part thanks to an opinionated set of guiding principles. But what are they? How do they apply to Yarn in practice? And just as important: how do they benefit you and your projects?
In this talk we won't dive into benchmarks or feature sets: instead, you'll learn how we approach Yarn’s development, how we explore new paths, how we keep our codebase healthy, and generally why we think Yarn will remain firmly set in our ecosystem for the years to come.

Workshops on related topic

Deploying React Native Apps in the Cloud
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.
MERN Stack Application Deployment in Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Joel Lord
Joel Lord
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.
Azure Static Web Apps (SWA) with Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Juarez Barbosa Junior
Juarez Barbosa Junior
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
The workshop gives a practical perspective of key principles needed to develop, build, and maintain a set of microservices in the Node.js stack. It covers specifics of creating isolated TypeScript services using the monorepo approach with lerna and yarn workspaces. The workshop includes an overview and a live exercise to create cloud environment with Pulumi framework and Azure services. The sessions fits the best developers who want to learn and practice build and deploy techniques using Azure stack and Pulumi for Node.js.