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.

This talk has been presented at DevOps.js Conf 2021, check out the latest edition of this JavaScript Conference.

FAQ

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.

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.

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

Levelling up Monorepos with npm Workspaces
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Levelling up Monorepos with npm Workspaces
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Vue: Feature Updates
Vue.js London 2023Vue.js London 2023
44 min
Vue: Feature Updates
Top Content
Watch video: Vue: Feature Updates
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
Automating All the Code & Testing Things with GitHub Actions
React Advanced 2021React Advanced 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
We will learn how to automate code and testing with GitHub Actions, including linting, formatting, testing, and deployments. Automating deployments with scripts and Git hooks can help avoid mistakes. Popular CI-CD frameworks like Jenkins offer powerful orchestration but can be challenging to work with. GitHub Actions are flexible and approachable, allowing for environment setup, testing, deployment, and custom actions. A custom AppleTools Eyes GitHub action simplifies visual testing. Other examples include automating content reminders for sharing old content and tutorials.
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
DevOps is a journey that varies for each company, and remote work makes transformation challenging. Pull requests can be frustrating and slow, but success stories like Mateo Colia's company show the benefits of deploying every day. Challenges with tools and vulnerabilities require careful consideration and prioritization. Investing in documentation and people is important for efficient workflows and team growth. Trust is more important than excessive control when deploying to production.
Why is CI so Damn Slow?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
Why is CI so Damn Slow?
Slow CI has a negative impact on productivity and finances. Debugging CI workflows and tool slowness is even worse. Dependencies impact CI and waiting for NPM or YARN is frustrating. The ideal CI job involves native programs for static jobs and lightweight environments for dynamic jobs. Improving formatter performance and linting is a priority. Performance optimization and fast tools are essential for CI and developers using slower hardware.
The Zen of Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
The Zen of Yarn
Let's talk about React and TypeScript, Yarn's philosophy and long-term relevance, stability and error handling in Yarn, Yarn's behavior and open source sustainability, investing in maintenance and future contributors, contributing to the JavaScript ecosystem, open-source contribution experience, maintaining naming consistency in large projects, version consistency and strictness in Yarn, and Yarn 4 experiments for performance improvement.

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.