Meet the Adobe I/O Team: Tyson Norris on Working in a Serverless World
Senior computer scientist Tyson Norris has been building web applications for more than 20 years and currently helps design the Adobe I/O Runtime serverless environment.
We caught up with him to talk about his career to date, lessons he’s learned so far, what he enjoys most about serverless, and what part open source, distributed serverless platform Apache OpenWhisk, which Runtime is built on, plays in his work.
How did you get started in the industry? And please tell us about your career path at Adobe.
I graduated with an electrical engineering and computer sciences bachelor’s degree, and knew a bit about Macromedia (as a user) during my college days. I worked at Macromedia for a time in the 90s, left to work at a variety of startups, and came to Adobe in 2010. At Adobe I’ve worked on LiveCycle, Adobe Experience Manager, Adobe Social, and I/O Runtime.
What are you currently working on?
I’m operating as the engineering lead for I/O Runtime and working on all aspects of it, but mostly driving our roadmap to evolve the product as technology options change, so things like leveraging Kubernetes and Knative, incorporating new execution options like V8 Isolates and WebAssembly, and improving performance.
What part does OpenWhisk play in your work?
OpenWhisk, being an open source project, allows us to work with a larger community of engineers. It’s a great opportunity to work with others that share common goals. My role within the OpenWhisk community over the past two years has been to push the design limits into new areas of flexibility to make sure that the OpenWhisk project can support our internal product requirements in ways that are also useful to OpenWhisk community users.
Within our team I work on most of the technical aspects of the project, such as providing the team with OpenWhisk expertise, steering the design of features that we want to add to OpenWhisk, working with our DevOps team on operational details (for example, deployment and monitoring), mentoring the engineering team, and helping other Adobe teams understand how to best leverage the system. Things have changed a lot since I started, primarily in the growth of the team (I don’t have to own as many aspects of the engineering team), and the addition of the CNA/CATs team (our engineering team doesn’t have to own as many aspects of integration that are critical to our customer Adobe teams).
What do you enjoy most about serverless?
Serverless provides a great opportunity for customers by lowering the requirements for deploying many types of applications that traditionally have significant operational overhead to get from development to production. With serverless approaches, your first line of running code can be in production immediately, if you want. Separately, it gives Adobe a great opportunity to “bake in” some best practices into the system. Whatever we can do for customers automatically (instead of through documentation, consulting, and trial and error) benefits customers by steering them towards a path of success. And that path gets shorter and shorter.
Check out Tyson Norris’ Put Serverless in Your Servers presentation from Serverlessconf 2018:
And what are some of the lessons you’ve learned working with serverless approaches?
Leveraging serverless approaches is not always a drop-in solution for applications, so adopting serverless often involves some redesign and working with a more event driven model. This can be an adjustment, but teams that learn to leverage this model can move very quickly by eliminating significant parts of their operational workstream by not having to maintain servers themselves.
What’s the best piece of advice you’ve received in your career?
Own your mistakes. That is, there is no use in complaining about how things arrived in a problematic state — you will always be a better person and team member by focusing on the solution, and not the problem.
What are you looking forward to working on next?
I’m looking forward to seeing I/O Runtime and OpenWhisk evolve to leverage the never-ending stream of execution options that seem to appear for solving more and more specific types of problems.