In this talk I'll explore the evolution of e-commerce infrastructure from traditional co-located servers to the new frontier of serverless and edge computing, and how modern developer tools like Remix and Vendure fit in.
The New Frontier: E-Commerce at the Edge
Transcription
Hi there. My name is Michael and today I want to talk to you about the new frontier, e-commerce at the edge. I've been building e-commerce applications for well over 15 years from old school PHP 5.4 to now Node.js, TypeScript and more modern tooling. And that's what I want to talk about today. I want to tell you about the future of e-commerce. And that consists of two major trends that I want to cover today. One being headless, the second being the edge. Let's cover what I mean by these. First of all, headless. Here's a Google trend chart for headless commerce. As you can see, more and more people are searching it. There's a lot of interest there. But what does it mean? Let's Google it and find out. Well, when we Google it, we'll see the first page is just ads. If we scroll down, try and find out what it actually means, we will get one after the other content marketing blog posts. What can we tell from this? It's a buzzword. That's what we can tell. And if we try and read these and find out what it means, we're going to get lost in jargon and keywords. Let's skip that. And I'm going to show you a diagram to make it simple. We want to build a web-based e-commerce application, an online store. What do we need? We need a server. Okay. We need a database to store our product, customer, and order data. We need some business logic. This is what's going to take that data, put it into some templates, apply some business logic, and produce the website and all of its functionality. We probably have some cloud services, some caching layer maybe, some third-party APIs to call out to. But at the end of all that, we're going to serve to our customer some HTML. That product data from the database has been put in a template, and the server is returning HTML. This is what's known as a monolithic architecture, a traditional architecture for a web app. This has been around for a very long time and will be around for a very long time. And this is good. But we're not talking about that now. We're talking about headless. Headless is different. How do we get from monolithic to headless? Well, it's simple. We just got to remove the head, like that. Now what's happening? So we're no longer serving HTML from the server. Instead we're serving JSON through a JSON API. That could be a REST API or a GraphQL API. The client is responsible for taking that data and turning it into HTML. Typically that would be a JavaScript-based framework, would take the JSON and put it into a template. This is nothing new. We've been doing it for a long time. We used to call it things like AJAX. Now it's being referred to as headless. But that's all you need to know. I'm sure you've done it. If you've been building single-page apps, you've been using this already probably. Nothing new. But that's what we mean when we're talking about headless. Headless commerce is this applied to an e-commerce application. Let's look at some examples. So headless really caught on big in the content management space, first of all. You've probably heard of some of these services and projects. WordPress is an interesting one. This is like the original old-school monolithic CMS system, the granddaddy. But it's in here because you can use it as a headless CMS. It has a REST API and it has a GraphQL API. So you can use it just like this. In the commerce space, there's lots of software as a service and open-source products as well that you can use to build in this way. Again, you have pure headless offerings like Commerce Tools and Venger. And then you've got companies like Shopify, which are traditional monolithic system, but have recently bet really big on headless. And this is fantastic. You've probably heard of the Hydrogen Project. And you've probably also heard that they acquired Remix as well. So this shows that a real big player, and Shopify is one of the real big players in the e-commerce space, they're betting big on headless. And this is a very good sign. And this is a sign that this is a trend that is really here to stay and it's going to drive the future of e-commerce. So we've learned what headless is, but why are people interested in it? Why is it so big? Why is it the future? Let's look at some of the benefits. So first off, we see that it's pretty easy now that we've separated the client from the server. We can now serve multiple clients through the same API, a mobile app, maybe an in-store point of sale system, and who knows, even an internet connected fridge where you can order your groceries through the same API. And now that we've decoupled the UI, it means that we're no longer bound to the templating systems imposed on us by a monolithic system, be that the templates of Magento that you see here, or the WordPress style templating system that's used in WooCommerce, or liquid templates used by Shopify. A decoupled UI means that we can use absolutely any technology that we want to build our front ends. And this is a key point because in e-commerce, it's not uncommon that the server, the platform itself, is very long lived. It's a big investment and it's going to last five years, 10 years, even more. By decoupling the UI, it means we're no longer constrained by whatever technology the backend platform is built on. We can build the front end with whatever we like. Remix, for example. And that brings us to tooling. Let's take an example, Magento. This is a very big open source commerce platform. The last major version came out some years ago, maybe seven or so years ago. And at the time, they had to choose what are they going to build their UI layer on. So the tools that were available at the time looked something like this. And they chose some of these, like Knockout, RequireJS. And that was a fine choice back then. Now, if you were to start a new project and someone said, choose whatever tool you want, you may not choose these. I personally wouldn't choose those. I would choose something maybe more like the ones on this side. And the key point here is that with a headless architecture, you are free to do that. You're not constrained by tooling choices that had to be made a decade ago. You can use what makes sense now. And that's a huge thing in terms of not only developer productivity, developer happiness, but also in the results you can get in terms of the experiences you can create for your customers. And this also highlights a strength, a massive strength of the JavaScript node ecosystem. This incredible innovation, this pace of innovation, some people call it JavaScript fatigue. But on the positive side, we have an amazing array of tools that we can use. And there's continuous innovation. And the innovation is not only in frameworks and build tools, but it's also in the actual platforms that we can run our code on. That brings me to the next point that I want to cover, the edge. So what is the edge? Well, to explain this strange new concept, I have a special guest, the edge. I'm sorry, I had to get a dad joke in somewhere. This is the edge, the guitarist from YouTube. He's going to help explain what the edge is. So what is it? Okay, he says an edge server is a server located at the edge of a network. What do we mean by the edge of a network? Well, in the center of this network, we have a cloud region, EU central one. That's where we're hosting our e-commerce application. We have users all around who want to use it. And notice that they're not accessing the cloud directly. They're going through an intermediate server that's close to them. These servers are what we refer to as the edge or edge servers. Let's make this more concrete. Here's our node application running in Central Europe. This is running our remix app, of course, and we're using a headless commerce backend. And we have a potential customer down here in Sydney. He enters the URL of our website into his browser. His browser is going to send a packet all the way to our server in Central Europe. And that is 16,000 kilometers away. Just the network latency for that packet to go across is going to be over 260 milliseconds. Once it arrives on the server, we're going to be rendering HTML. This is a key point. We're talking about e-commerce. We're going to be doing server rendering, okay? SEO is king. So we're definitely going to be server rendering. So there's some work done there. Once the HTML has been rendered, we've got to send it back all the way back to Sydney. Again, 16,000 kilometers latency. So just before the first byte arrives, our customer is going to be waiting for like a second, two seconds. Who knows? How is this going to look like from his point of view? Okay, he's entered the URL. The packet's traveling 16,000 kilometers. The HTML is rendering. Okay the first byte has come back. We've got some HTML. That's good. Now the HTML is fetching some JavaScript, maybe some assets. It's making some more fetches for data that it couldn't server render, such as session-specific data. Ah, okay. The shopping cart just loaded. Some more requests going in the background. Lots of latency on every single request. Finally the image appears. The website's loaded. Not a great experience. How can we improve this? Something that we've been doing for a very long time is using CDNs, content delivery networks. This is actually a form of edge computing. This stores static assets like images, JavaScript files, CSS files on a edge server, for example, right there in Sydney, so that when those assets are required in the future, they're fetched locally instead of 500 milliseconds latency, there's 10 milliseconds latency. That solves part of the problem. But we still have to go all the way to the origin server to actually get the HTML file to know what resources we then need to subsequently load. How can we solve this? Well what if we could do the rendering not only in our origin server in Central Europe, what if we could render right there at the edge? As if we'd taken our node server and scattered it around the world. That would be cool. That's what we can do now. So as well as our static CDN, we can also actually render our page right there on the edge with something like Remix edge SSR, server-side rendering. So one really, really cool thing about Remix is that it can run on any JavaScript runtime. So we all know Node.js, but there are other JavaScript runtimes. There is Deno, there is Cloudflare Workers, there are probably others, and there are probably more to come. Remix is very smart. It abstracted that part away into adapters so it can run on any JavaScript platform. In this case, we could be running on a Cloudflare Worker, for example, Cloudflare Pages, and Remix can do the rendering right there. So the HTML is generated there in Sydney, 10 milliseconds away. There's still a problem, though. To get the product data to put into our page, we still have to make a call back to our headless server in Central Europe. We're still going to incur latency. But edge computing can help with that, too, because we can cache our API responses at the edge. So that product has already been requested in the past. The response has been cached right there in Sydney. So now let's look at it. When he wants to visit our website, he makes a request. The edge server can start rendering the page with Remix. When it needs data, it grabs it from the edge in an API cache. It returns it to the customer, and every resource that is needed by that web page to fully render it is right there in a CDN also. So everything that he needs is right there in Sydney instead of 500 or 1,000 milliseconds latency, there's 10 milliseconds or 50 milliseconds. Much better. So this is why I call it the new frontier. It's really a revolution in the way that we can serve applications and increase performance, increase global availability, and decrease the load that we actually have to serve on our origin servers. So this new frontier, as I said, consists of headless architecture and edge computing. Now what does this look like in practice? I've got a demo for you. Let me introduce you to Venger. Venger is an open source project that I've been working on for the past four years. It's an e-commerce framework, so it allows developers to build custom e-commerce applications. It's built on Node.js using TypeScript, and it's headless. It exposes its functionality via GraphQL APIs. Not only that, it's highly extensible. You can pretty much build anything on it. It supports multiple languages, multiple currencies, and it's got a growing and active community. It's used by lots of companies from Fortune 500s to unicorn startups, Y Combinator-backed startups, national supermarket chains, and everything in between. If you want to try it out, you can get started in one command, npx at Venger slash create my shop. It supports SQLite, so you don't even need to have a database running locally. You can literally be up and running in five minutes. Try it out after this talk or after this conference day. This is what I want to show you today. It's an online shop backed by Venger. It's built, of course, with Remix running on Cloudflare Pages, which is an edge computing platform. And the API is cached by Stellate, which is an API caching service which uses the Fastly edge network to cache API responses. So we've got everything in the mix that I've talked about. So this should be good. Let's take a look. So here's the website. It's available at remix-storefront.venger.io. I'll just take you on a really quick tour. Here's the landing page. We can drill down, look at these categories, camera, photo. Take a look at this. And as you can see, it's running pretty fast. We can filter, add to cart. We can take a look at the cart, modify it. All of this is happening against a real API. We can search. So that's what it's like to use. I'm sure you can agree it's pretty fast. But just how fast? Can we have an objective measure of it? Well, let's take a look at PageSpeed Insights. And we will take this product detail page and drop it in there. Now it's going to run its analysis. And what we're hoping to see, of course, is lots of green circles with big numbers approaching 100, hopefully. Let's see what it gives us. First of all, we're going to see the mobile results. Okay, lots of green circles and almost 100 in all of those. If we go over to the desktop version, okay, this is looking really nice. We have basically 100 in everything almost. Accessibility needs a little tweak. And these numbers right here are ridiculously good. So it's fast. It's objectively very fast. Let's see if we can get a measure of the benefits that edge computing is bringing in this situation. Our origin server in this case is in Europe. I'm in Austria. So we're not really seeing the full capabilities of the edge. But let's see if we can view this website from different locations around the world. Here's a page that I found that lets us do this. So it's going to make a request to this website from Singapore, Brazil, Virginia, California, Ireland, Australia. And let's see what the results are. So they all come in. Look at these. 6 milliseconds. 14 milliseconds from Brazil. Virginia, 1 millisecond. Australia 14 milliseconds. California 2 milliseconds. This is I can't think of a better illustration of this entire concept of headless and edge than this. The results speak for themselves. I'm going to shut up now. That's the end of the demo. Let's head back to the slides. So to recap, we've talked about the future of e-commerce being headless, edge computing built on Venger using Remix. Thank you for your attention.