As we near the end of 2019 and our celebrations of Node.js turning 10 years old, we are delighted to share the views of Alex Liu, Engineering Manager on the Node.js Platform at Netflix. Here he talks about the evolution of Node.js as a serverless platform choice and how the community must shape its future position in the mature enterprise industry space.
So firstly Alex, can you tell us a little about yourself?
I’ve been fascinated with computers for as long as I can remember. Even though I studied Electrical Engineering in school, I ended up in software anyway. I’ve always had an appreciation for great presentation and beautiful UX and UIs, so it was a natural fit.
When I got my first job building consumer-facing UIs. As a UI Engineer, attention to minor details really helped me build an understanding for different kinds of craftsmanship; both the craftsmanship for the end-to-end product experience, as well as the craftsmanship for the software that powers the product. Over time, I found myself moving further away from the front end domain – and Node.js was the perfect vehicle for enabling that journey. I’ve spent the last couple of years building a serverless Node.js platform at Netflix with my incredible teammates, where my daily discussions now revolve around operations, infrastructure, and observability. It’s quite a drastic change from my first gig!
In my personal life – I love landscape photography and racing cars. And I’ll do just about anything for good coffee and tasty breakfast pastries.
And why is the Node.js community important to you and to Netflix?
Node.js usage at Netflix started initially as an experiment to understand how we could evolve the future of the Netflix.com website. The rich community and ecosystem were big draws, as was the promise of reduced context switching between server and client-side languages. Based on the success of that experiment, we soon started to explore other opportunities for Node.js across the Netflix ecosystem.
Early on we identified a number of Node.js based UI backend-for-frontends (BFF) use cases in support of the Netflix product experience. As part of this effort, we also wanted to raise the level of abstraction; we wanted to provide all the benefits of BFFs to UI teams without asking them to become expert server-side engineers. These driving motivators were our north star, pushing us to deliver on a great developer experience. Fast-forwarding to today, our serverless Node.js offering now fronts the majority of traffic sent by Netflix devices and UIs and will continue to grow in the years to come. I believe this rapid growth and adoption speaks to the success of Node.js and the fact that it’s the right tool for the right job in many scenarios.
It goes without saying that Node.js has been instrumental in improving productivity and the product development experience at Netflix. Having lived this journey from its very beginning, it’s also an experience that has shaped and formed my world view. It’s hard to imagine where I would be today without Node.js!
How long have you been working with Node.js and, in your opinion, what have been the most pivotal milestones in the project?
I’ve been working with Node.js since v0.6. Speaking for myself, I believe the Node v4 release was by far the most pivotal, as it brought the community together under a single effort along with the Node.js Foundation. That was a huge step towards building confidence that the project would continue to grow and mature for enterprise use cases. Looking towards the future, the recent OpenJS Foundation merge also seems like a possible milestone moment, but it’s a bit early for me to draw any meaningful reflections.
To what do you attribute the sustained growth and usage of Node.js in the ecosystem?
The simplicity of the runtime, the ease of use, the community, and the incredible open source Ecosystem.
What do you believe are the most significant opportunities for Node.js over the next 3 years?
We need to invest more in understanding how Node.js can mature for enterprise use cases. It’s captured a huge market for a certain set of customers, but how do we make it successful at large scale companies? There are opportunities for improvements to the runtime that enable the diagnostics and operations story at scale. How do we make sure that Node.js has everything it needs to compete with the other runtime giants in the industry? What can we learn from how those runtimes are being developed and/or are being deemed enterprise worthy?
I sometimes think the community has optimized for overall growth over a more targeted and/or holistic strategy. Growth is important, but what is our north star? Node.js can’t be everything to all people, so how can we be clear about the value we’re bringing to the table, and does that help us understand where we as a community should be investing?
Global adoption of Node.js in DevOps remains relatively low right now according to the 2018 Node.js User Survey. Where is the development focus in your own organisation?
Operations are hard and require continued investment in learning, which is true even for people who have been holding an on-call pager all their lives. I believe it often boils down to the needs of the company at that particular point in time. At Netflix, we have the luxury of specialized teams; we don’t expect database engineers to be UI experts, and we don’t expect UI teams to be experts at operations. By raising the abstraction for our UI teams, we limit the number of operations that teams are exposed to by having a single central team operate the serverless offering.
This approach is not without its challenges, though! It requires good alignment with our consumers, and thoughtful conversations around operational excellence and what “ownership” means in a future where services can have multiple owners.
Node.js pushes developers to become more efficient in both aspects of development, front-end and back-end, improving productivity for enterprise teams. Are full-stack developers the future?
For a certain set of use cases, absolutely. Now, more than ever, small teams of engineers can be super productive across the entire stack, especially with a technology like Node.js. For product or UI facing applications, the consistent language, environment, and toolchains are an incredible boon. Specialists will always have their place, however, especially as software and companies grow in size and complexity.
Thank you for your time, Alex!