Node.TLV 2020 Agenda
Microservices Architecture in Node.js - Automated Testing
Karin Angel
Software Engineer @ autofleet
The biggest pain as a developer in a big development team, building a system consisting of tens of services over Microservices architecture, is pushing code to the code base without breaking anything. Testing is the key for solving this pain. Or, in other words, establishing an healthy CI-CD process that surfaces defects before they get to the client. In this talk we'll explore different approaches of testing that will help us deliver code that works and doesn't break older functionality. We will talk about different approaches of testing in the service level - Unit testing vs Api testing. We will talk about the importance of Integration testing and also about what we can do in order to minimise the risk of deploying new piece of code through Blue-Green deployment and Canary release.
I Want to Publish My First Open Source Library
Tomas Della Vedova
Senior Software Engineer @ Elastic
While working on a project, you wrote a utility to solve a problem. Then you started using it in other projects. It looks like the code you wrote is very useful, and other people might benefit from it, so you decided to publish it on GitHub. What should you do? In this talk, we will discuss the benefits of Open Source, work with the community, choose a license, API design and developer experience, the importance of writing test, and how to write proper documentation. You cannot miss any of those if you want your library to be successful, and if it does, you will be a maintainer. And now?
Transforming a Country Through Code!
Liz Parody
Head of Developer Relations @ NodeSource
When I was born, my city Medellin (Colombia), was the most dangerous city in the world. Today, 3 decades later, it’s called the “Silicon Valley of Latin America”, “The Most Innovative City in the World” and the “Center of the Fourth Revolution”.
Stream Into The Future
Matteo Collina
Technical Director @ NearForm, Member of Node.js Technical Steering Committee
There was a time when Node.js streams were all the rage but over time the Node.js Core Streams codebase became extremely complex and hard to understand. Worse still, WHATWG introduced an API for browser Streams. The two Streams API’s are incompatible with each other and both are complex and leaky abstractions. In this talk, a Node.js Core Streams maintainer presents a stream-less future by demonstrating how to use pure JavaScript: Async Iterators and Generators can give us everything Streams can while being completely cross-platform and highly performant.
BigDecimal: Avoid rounding errors on decimals in JavaScript
Daniel Ehrenberg
Partner @ Igalia, Member of TC39
Have you ever found yourself with a disappointing rounding error due to how Numbers work, or using awkward workarounds to avoid thinking about decimals? It's a shame that JavaScript chose binary floating point as its basic numeric type when it causes all of these problems. What can we do about it?
Async Hooks - A Journey To a Realm With Persistent Execution Context
Shanee Radzewsky
Full Stack Developer @ monday.com
Typically, most of the code in Node.js applications is asynchronuos, making it difficult to share data between different async functions. You can pass the relevant data to each and every function, stringing it along until you need it, but this is not maintainable, and very prone to human error. Using the async hooks module, we can create a shared execution context and can even get a stack trace for our async functions!
Building a Full Stack CMS for the Modern Age
Nader Dabit
Senior Developer Advocate @ AWS, Creator of JAMstack CMS
The year is 2020. The amount of tooling, technology, and techniques that enable us to build sophisticated, rich, performant web and mobile applications has dramatically increased over the past few years giving us the power to build amazing user experiences in ways just not possible in the past.
What if we could use this technology to rethink and re-architect some of the staples of the software industry? The technology we are using to solve problems with has evolved greatly, but many times the problems themselves remain constant.
In this talk, I’ll show how we can rebuild Wordpress, a full stack CMS, using Gatsby, GraphQL and serverless technologies. I’ll walk through the build process, discuss how we can package and deploy the full stack that includes authentication, authorization, signed images, and database tables with just a few commands, giving users the power of wordpress with the elegance of React, Gatsby, and Serverless technology.
Knock Knock, Who's There?
Sam Bellen
Developer Advocate Engineer @ Auth0, Google Developer Expert
When it comes to writing code, there’s nothing we take more serious than authentication and security. Modern single page applications bring along new challenges. By using solutions like the OpenID Connect protocol and JSON Web Tokens we can improve the user experience when authenticating with your apps, providing a seamless authentication process.
Implement Event Sourcing In Node.js
Tamar Twena-Stern
Architect @ Palo Alto Networks
Event sourcing is a very popular pattern in modern server systems, helping systems to hold massive traffic. Node.js has become one of the most popular frameworks to write servers in the last few years. As Node servers need to scale up to more and more data, they need to get familiar with architecture patterns that will allow them to scale their server efficiently. In this lecture, after explaining what is event sourcing and in which cases it is good for, I will show several implementations of event sourcing server, starting with implement it yourself, integrate with different event buses and implementing it with the Nest.js , a new Node.js library rising in popularity that has a built in event-sourcing module. At the end of this lecture , the developers will have the knowledge about this pattern , when it fits to their project needs and how to implement it .
Testing in Production - A Practical Overview With Live Examples
Yoni Goldberg
Independent Node.js consultant
The testing world is seeing a significant mega-trend - "Testing in production" which suggests putting more focus on realistic tests that are conducted with a production environment. This approach is already embraced by the world most reputable R&D organization and a handful of techniques exist to fulfill this strategy safely. However, most resources on this matter lack practical code examples and demos. This talk aims to bring this fascinating trend down to earth and show live how Node.js code and test runners can discover severe issues that couldn't be discovered using traditional testing. Specifically, we're about to explore techniques like tap-compare, silent releases, traffic shadowing and more
Aaaaaaaaaaaaaah, They’re Here! ES Modules in Node.JS
Gil Tayar
Senior Software Architect @ Applitools
Yes, they’re here. Node v13.2.0 marked the first version of Node.JS where ESM support is unflagged, meaning you can start using ES Modules. It’s been a long, four year journey from defining them in the spec (June 2015!) till they could be used in Node.JS (November 2019).
Why did it take so long? What were the major hurdles? Should we migrate? How does the migration path look like? Are they really better than CommonJS Modules? What is in store for the future?
Software Developers, Communicate Your Intentions! (TLDR: do it using tests)
Yael Zaritsky Perez
Software Developer @ Wix
Code is continuously read and maintained, and as such, good code must be effectively communicated. Is there a good solution for this? Let me show you how easy it is to take tests and use them as a live, always up to date, documentation of your code.
Black Clouds and Silver Linings in Node.js Security
Liran Tal
Developer Advocate @ Snyk
With a great ecosystem, comes great responsibility, and application security is not one to wave off. Let’s review some black clouds of security horror stories in the Node.js ecosystem, and learn how malicious npm packages work, how to avoid them and apply npm and Node.js security best practices every developer should know with hands-on live hacking.
GraphQL API? REST API? Or maybe you can have both?
Roy Mor
Technical Lead @ Sisense
So you’ve decided to write a public API. Great!
Should it be RESTful? Or perhaps a GraphQL API, the new cool kid on the API block? What if you already have an internal GraphQL implementation, but need to expose it publicly as REST?
In this talk, we’ll briefly review the main differences, benefits and tradeoffs between REST and GraphQL for public API implementation, and go over how we at Sisense wrote a Node.js library to automatically generate a RESTful API from our existing GraphQL schema.
GraphQL2REST, which will be released soon as an open-source npm package, allowed us to offer both API interfaces while maintaining only one code path. It might be also relevant to you, if you already have a GraphQL API, but your clients want REST; or, if you want to develop a new GraphQL API and get REST on top of it, for free; or, if you wish to benefit from GraphQL internally while exposing a quite different truly RESTful API externally.
DIY: Develop your own Visual Studio Code extension
Yael Oshri Balla
Software Architect @ Amenity Analytics
Visual Studio Code or VSC for short is one of the most popular source code editor used by the programmers. It's fast, it's lightweight and it's easy to extend! VSC extensions let you add languages, debuggers, and tools to your installation to support your development workflow. In this session I will present how to write your own VSC extension, from our experience in Amenity Analytics with developing extensions as an alternative to developing independent internal tools.
From `npm init` to `kubectl create`: Getting Started with Node.js on Kubernetes
Kamal Nasser
Developer Advocate @ DigitalOcean
You may have heard the buzz around Kubernetes and noticed that many companies have been rapidly adopting it. Due to its many components and vast ecosystem it can be quite confusing to find where the path starts to learn it.
In this session, you will learn the basics of containers and Kubernetes. Step by step, we will go through the entire process of packaging a Node.js application into a Docker container image and then deploying it on Kubernetes. We will demonstrate scaling to multiple replicas for better performance. The end result will be a resilient and scalable Node.js deployment.
You will leave this session with sufficient knowledge of containerization, Kubernetes basics, and the ability to deploy highly available, performant, and scalable Node.js applications on Kubernetes.
Take Your Monitoring to the Next Level
Liran Haimovitch
Co-Founder and CTO @ Rookout
As web developers, we are highly focused on user experience, and delivering the most value for our customers. Monitoring our software as it runs in the real-world is at the heart and soul of understanding and continuously improving it. But why is so much of our monitoring centered around I/O patterns, memory usage, and unhandled promises?
There are more important things to measure than the memory usage of your Node instance. Companies like Instagram and Netflix have long shifted their focus to user-related metrics such as overall likes on posts and hours watched. It’s time we too aspire to measure ourselves using better metrics reflecting the value we are creating for our users.
This talk will discuss the next level of monitoring, the one that matters most: user activity and business metrics. There’s a lot we can learn from such data, and it can be used by on-call devs, for new app versions, new feature planning, and more.
First, we’ll cover the theory of what matters most, examine real-world cases and discuss concrete advice on how to get started. Then we’ll go through some of the tools you can use and how to choose them wisely. Finally, we are going to debunk the myth of how hard this process is. To achieve that I’ll do a live coding session, add business metrics to a demo application on-the-fly, and build a dashboard to display it.
Help! My Memory is Leaking
Gil Fink
CEO @ sparXys
As Node.js developers, we strive to build fast and robust servers. But sometimes we unintentionally create memory leaks, which later on become a big issue that might even crash our server.
In this short session we will learn how to track Node.js memory leaks.
Headers Propagation for Tracing in Microservices
Dor Shay
CTO & Co-Founder @ Autofleet
When a user makes an an action in a micro service based system it might cause a huge amount of side affects, most of them will happen with knowing what started them or what is the context. In some flows you case pass payload attributes but it will require a lot of work to implement across the system. By passing the original request reference and context (for example user_id) in headers and warping node http module in way that will keep this conext to any out coming http request with few lines of code you can make this data accessible from anywhere in the system.
Machine Learning with Node... Why not actually?
Omri Fima
Data Architect @ Natural Intelligence
Machine learning is for people who dream in statistics and code in Python, right? Well… not necessarily.
Machine Learning can be really useful, even if you have no mathematical background, and only know JavaScript. In this talk, I’ll share how JS made Machine Learning developer-friendly, And how you can use it to create some interesting experiences.
Building a Sustainable Codebase with FP
Carolina Pascale Campos
Software Engineer @ Nubank
As software engineers we are always trying to be more productive, to deliver better code, and to have a faster development feedback. In this talk, we’ll explore how functional programming, tests and hexagonal architecture can perform great together in order to support a maintainable codebase for hundreds of engineers and services. Diving deeper on how we can levarage hexagonal architecture with dependency rejection in order to decouple decisions from effects, resulting in a code that is easier to reason, compose and test. The codebase is not the only one that take advantages from that, but also the developers. It helps everyone feels more comfortable and engaged about maintaining good practices. This is already proven to work really well at Nubank, which is considered the best bank in Brazil according to Forbes.