[HN Gopher] The Future of the Web Is on the Edge
       ___________________________________________________________________
        
       The Future of the Web Is on the Edge
        
       Author : 0xedb
       Score  : 142 points
       Date   : 2022-10-06 17:08 UTC (5 hours ago)
        
 (HTM) web link (deno.com)
 (TXT) w3m dump (deno.com)
        
       | ludwigvan wrote:
       | For which type of web sites would this make a difference? I think
       | for this to matter, the audience should be almost global, in
       | which case it will cater to a small percentage.
       | 
       | Some examples: - News sites: These heavily use CDN's and caching,
       | wouldn't make much difference. - Most CRUD apps which target a
       | small number of users? Probably no significant difference being
       | on the edge would bring. - Games: this is one area this might
       | make a difference due to latency advantage.
       | 
       | Could someone give some real examples from the net that would
       | make switching to this edge architecture a difference? For
       | example, something like, it would be good if
       | HackerNews/CNN/Intuit did this so that...?
        
         | [deleted]
        
         | crabmusket wrote:
         | E-commerce. Significant static content, but also significant
         | interactivity, and performance is important as your users are
         | almost by definition "shopping around".
        
       | recursivedoubts wrote:
       | OK, but what about data synchronization?
       | 
       | One of the tremendously simplifying aspects of traditional web
       | applications was that they were, to a first order of
       | approximation, stateless. The state lived on the server in a
       | centralized location. When an update occurred, it was done via an
       | HTTP request that failed or succeeded.
       | 
       | If shared state between users is stored on the edge it needs to
       | be synchronized between edge nodes, leading to collisions that
       | may appear at a point significantly after a user has "clicked
       | save". I can imagine this becoming a nightmare as a user accretes
       | dependent local changes, all of which eventually have to be
       | rolled back as edge data stores synchronize with one another.
       | 
       | Now, there are advanced technologies for this sort of thing, but
       | they are relatively complex, hard to program against and often
       | don't and can't offer great end user experience.
       | 
       | I am not saying that the edge isn't going to be useful for some
       | applications, but it is throwing out one of the main
       | simplifications that the original, REST-ful model of the web gave
       | us.
        
         | solardev wrote:
         | One option is that you can abstract it away like cloudflare
         | does using DBs or KV stores that live natively on the edge.
         | Look up their IRC or Doom demos on the edge sometimes. There is
         | no central server needed, the edge nodes just figure that out
         | with each other behind the scenes and you don't have to worry
         | about the low-level sync models. Less control, easier to use.
        
       | lifty wrote:
       | Wait till we get to the final stage, where we install apps on
       | people's computers directly. That way, we get ZERO latency. Can't
       | wait! What should we call it?
        
         | billywhizz wrote:
         | a web browser?
        
         | asim wrote:
         | Local first!
        
         | maxwellpeterson wrote:
         | picoservices
        
         | mlrhazi wrote:
         | Applets ?
        
         | hbrn wrote:
         | Sarcasm aside, this is actually a good point.
         | 
         | Most apps are either unable to work without a semi-centralized
         | database.
         | 
         | Or can work with local database and slow syncs to the cloud (a
         | la Dropbox).
         | 
         | Very few apps fit between those two categories. Edge looks like
         | a solution looking for a problem.
        
         | Existenceblinks wrote:
         | Edgy PC!
        
         | doctor_eval wrote:
         | Distributed client-side edge cache.
        
         | aliqot wrote:
         | At long last.. "Year of the linux desktop".
        
       | stevage wrote:
       | Yet another web dev article assuming that every web app is
       | massive scale, for a global audience of consumers that have
       | alternative choices.
       | 
       | I have worked on dozens of web sites for paying clients, and none
       | were in that category.
       | 
       | Also, mostly I just want to know, why is Singapore's connectivity
       | so slow? Some sort of filter?
        
       | asim wrote:
       | Right. I think we did global deployment, multi-region with geo
       | based DNS and anycast like 10 years ago. I guess the difference
       | here, it's now a product. I'm still not convinced. Why 3 years
       | ago I started building it as a product and you know it just
       | didn't matter. It makes a cool story and blog post but the
       | technical details just don't matter. Tell me you can deliv er sub
       | 100ms response times globally and give me a framework to build
       | for that but the rest is details I just don't care about. I used
       | to care, I used to think developers should know these details,
       | the reality is it's not important. Delivering developer
       | experience means the user not having to care about those details.
       | 
       | Delivering sub 100ms definitely important but mostly if it's just
       | static pages and there's no database IO or calling of external
       | third party APIs during that process then it's not relevant. The
       | large majority of software is now not just serving a static
       | assets but a lot of complex logic which ends up dictating a lot
       | of the page load times, not the traversal of light across the
       | globe.
        
       | deckard1 wrote:
       | The Future of the Web is Peddling Endless Amounts of Cloud
       | Frameworks
       | 
       | The number of web sites that need global edge computing is
       | vanishingly small. More realistically you need a 20+ year old
       | technology called a CDN to run your mostly static site.
       | 
       | Edge computing doesn't even solve any of your real problems here.
       | I18n, l10n, international taxation/currency/payments, data-at-
       | rest/GDPR/privacy laws. And then it introduces new problems, such
       | as data partitioning. Are you going to partition at the edge and
       | deal with tricky sync issues (CAP, anyone??) or are you just
       | going to call back to your centralized DB server a thousand miles
       | away from that edge? You know what's even faster than running
       | that code on an edge device? Running that code on the user's
       | phone or laptop. And you can get there. With a CDN.
        
         | oceanplexian wrote:
         | You say that until you travel somewhere in Eastern Europe,
         | South America, or Southeast Asia, and realize that 90% of the
         | Western Internet is completely and utterly broken. Everything
         | besides Google, Facebook, etc. (Because they've invested in
         | solving the problem) are practically unusable.
         | 
         | The problem isn't just TTFB or latency, as some people are
         | implying, it's poor interconnectivity at the transit provider
         | level. Those links are frequently congested and experience
         | fiber cuts, and unless you're peered in that country your
         | application is going to perform poorly. The companies who
         | understand this have a first mover advantage in some of the
         | fastest growing economies in the world.
        
       | superkuh wrote:
       | The future of the money-web is on the edge. But the money web is
       | for corporate persons, not human persons. Humans will continue to
       | use a single server somewhere on earth. Let's not get cargo-
       | cult'y here.
        
       | [deleted]
        
       | vcryan wrote:
       | Companies that are banking on edge computing definitely seem to
       | agree with this headline :)
        
       | pier25 wrote:
       | As much as I love Deno, I think this is the wrong way to frame
       | it. For a number of reasons.
       | 
       | 1) Sure, big web apps for a global audience would benefit from a
       | distributed application and distributed data. But, honestly, most
       | web apps I've worked in my 20+ years in web dev have been for an
       | audience in a single country or even city.
       | 
       | 2) It's easy for Deno to say "get a distributed app running at
       | the edge!" when the hard part is having distributed data which
       | they don't solve. If you don't need distributed consistent data
       | then you're probably more than fine with a monolith with a CDN.
       | 
       | 3) Those latency numbers don't seem right to me. My production
       | server in AMS returns a response in 200ms to here (central
       | Mexico).
       | 
       | 4) Performance evangelists and salesmen will try to convince
       | everyone they need to get a response in 50ms, but for most use
       | cases that's just ridiculous. Most people are fine getting a
       | response in under a second. Just use a CDN for your static assets
       | and your monolith will be fine.
       | 
       | The edge is cool, but it's not "the future". It's just another
       | tool with pros and cons.
        
         | Comevius wrote:
         | As far as I know Cloudflare Pages Functions with Durable
         | Objects or D1 is the only edge infrastructure that can do this
         | currently. D1 uses SQL as it is built on SQLite, and Durable
         | Objects is used for coordination, but also has a transactional
         | storage API.
         | 
         | D1 is closed beta, Pages Functions is open beta, but limited to
         | 100,000 requests. You don't need Pages Functions if you have an
         | SPA, it's more of an MPA thing where Workers is used as a
         | server for SSR. It let's you push more work to the server like
         | in the good old days, except the server is a JavaScript runtime
         | running on the edge. Durable Objects is the interesting part,
         | because it gives you the data locality, but also strong
         | consistency.
         | 
         | Not shilling for Cloudflare, I just think that their stuff is
         | cool and the rest of the industry is definitely playing catch-
         | up to them. You can argue that most of us don't need the scale
         | and it's true, but I would also argue that we can use the
         | performance and the developer convenience, and by that I also
         | mean time, which is by far the most important resource. Their
         | runtime is also open-source, which makes you feel less tethered
         | to them.
         | 
         | https://blog.cloudflare.com/workerd-open-source-workers-runt...
        
           | anderspitman wrote:
           | Check out fly.io as well. They've been adding some SQLite
           | stuff. They also have the added benefit that you can run just
           | about any docker image, not just functions.
        
           | pier25 wrote:
           | There are a number of distributed databases in the market.
           | Fauna, GC Spanner, Cockroach, etc.
           | 
           | I love the CF stuff. I've been using Workers for a couple of
           | years, even right now in production for streaming audio and
           | other duties. But Workers are not a generalist solution for
           | building complete applications.
        
             | ZephyrBlu wrote:
             | It looks like Cloudflare is moving towards that with
             | functions in Pages, which allows you to call Workers within
             | your Pages app.
             | 
             | https://blog.cloudflare.com/cloudflare-pages-goes-full-
             | stack...
        
         | ZephyrBlu wrote:
         | I disagree. If you look at what Cloudflare is building on top
         | of Workers it definitely seems like the future.
         | 
         | KV storage, Durable Objects and Queues (Message passing). You
         | can build complex apps using these tools.
         | 
         | Everything being on the edge feels like the natural evolution
         | of the current approach.
         | 
         | On the frontend there is a focus on more server side rendering
         | and hydration/progressive enhancement.
         | 
         | On the backend there is a focused on globally
         | replicating/distributing data for quicker access.
         | 
         | Edge is kind of the best of both worlds. For the
         | SSR/hydration/progressive enhancement it's extremely fast
         | because of much lower latency and for backend operations you
         | can cache and/or store data at the edge so it's much quicker to
         | access.
         | 
         | Abstractions over the edge like Cloudflare's products also
         | gives you distributed computation and storage for free, which
         | is pretty big. You don't have to care about scaling or
         | coordination the same way you do with a monolith.
         | 
         | It seems likely that in 5yrs edge will be the default way to
         | write and distribute new apps.
        
           | nwienert wrote:
           | They are complex, expensive, locked in, partially closed
           | source, and not nearly close to complete solutions.
        
         | quickthrower2 wrote:
         | I agree. It is the HN curse in that what is posted here is
         | often while very interesting, too highfalutin for most peoples
         | needs. But it is good to know about.
         | 
         | I do like web hosting services that make using CDNs etc. so
         | simple that it is a nobrainer to use them and benefit.
         | 
         | When you have to work alot harder to get your thing done to use
         | the "webscale" tech though, this is where you might be burning
         | complexity tokens.
         | 
         | I never really see this happen at work though. Often at work it
         | is erring on too conservative.
        
         | bavarianbob wrote:
         | I enjoyed reading your level-headed perception of this.
        
           | pier25 wrote:
           | Thank you kind sir.
        
         | brundolf wrote:
         | These are all valid points, though for me, one thing I like
         | about the "edge" model for application servers (workers) is the
         | abstraction that you don't have to think about where your
         | servers live, how many there are, when they start and stop,
         | etc. The fact that they basically have to be stateless also
         | simplifies things
         | 
         | Even if your storage is centralized (and it may not have to be;
         | some companies are offering edge storage solutions that handle
         | synchronization for you), it seems nice to be able to just ship
         | code and let the provider worry about when and where and how
         | much
         | 
         | That said- I've never used edge workers in production, so I
         | could be over-idealizing the reality
        
           | verdverm wrote:
           | You don't need the edge to have the same abstractions for
           | your application. It's commonly called the 12-factor app and
           | there are many ways to achieve it
           | 
           | https://12factor.net/
        
           | benatkin wrote:
           | You often need to have your code close to the database or api
           | servers for requests/queries that depend on each other.
        
             | quechimba wrote:
             | A lot of time the code runs in the browser, which is
             | probably further from the database, and you still need an
             | API inbetween.
        
         | pier25 wrote:
         | To elaborate... how should Deno market their stuff?
         | 
         | IMO developer productivity/experience.
         | 
         | Deno are in an extremely privileged position that AFAIK no one
         | has. They have control of the runtime, the cloud platform, and
         | the framework with Fresh.
         | 
         | Compare Deno with say Vercel which really only have control
         | over Next. They depend on AWS, Node, and React over which they
         | have no control. No wonder they're investing on
         | Svelte/SvelteKit and other projects.
         | 
         | Or Cloudflare who are developing their cloud infra with
         | mediocre DX (although improving) and no framework of their own
         | to be able to sell the complete experience.
        
           | strangescript wrote:
           | Pretty sure under the hood Deno's cloud is running on
           | cloudflare.
        
         | newlisp wrote:
         | _2) It 's easy for Deno to say "get a distributed app running
         | at the edge!" when the hard part is having distributed data
         | which they don't solve. If you don't need distributed
         | consistent data then you're probably more than fine with a
         | monolith with a CDN._
         | 
         | This is not targeted at you but at naive JS developers. JS has
         | millions of users, if they can deceive a good chunk of them
         | with their marketing, then they can make money.
        
         | yellsatclouds wrote:
         | one of the driving patterns behind the whole internet (in
         | concept) has always been to have dumb pipes and very smart
         | edges/endpoints
         | 
         | so this is merely re-asserting one of the (now taken for
         | granted) ideas that make the internet what it's become.
        
       | paxys wrote:
       | I'm yet to come across a non-trivial website or web app that runs
       | on the edge in the way they have described. While it may or may
       | not be the future, as it is commonly touted as, who exactly is
       | testing edge computing in the real world today? What database are
       | they using? How are they synchronizing application state across
       | all these regions?
       | 
       | From practical industry experience I can say that deploying to
       | 1-3 data centers is still the way to go, and that isn't going to
       | change for the ~50-100ms of latency this approach will save.
        
       | qprofyeh wrote:
       | Are there other frameworks designed with edge deployment in mind?
        
         | quechimba wrote:
         | I'm making one in Ruby. It's kinda like React but it streams
         | all the DOM-patches to the browser (about 3-4kB of JS in total)
         | 
         | Clicking stuff feel instant due to being so close to the edge
         | node.
         | 
         | I've been working on this full time for three months now, gonna
         | keep going because I think it's a good way to make web apps.
         | Hot reloading is pretty awesome. Event handlers/callbacks are
         | just RPC-calls so no need to make a REST API or anything like
         | that.
        
         | emschwartz wrote:
         | https://remix.run/ and https://qwik.builder.io/ are two others.
         | 
         | I believe that React Server components is also heading in that
         | direction.
        
       | cheriot wrote:
       | > The benefits of serverless are two-fold: > You only pay for
       | what you use--just those 10 seconds if that's all that's
       | happening on your app. > You don't have to worry about all the
       | DevOps side of servers. No planning, no management, no
       | maintenance.
       | 
       | The second benefit can be had without serverless. Anything that
       | runs containers offers that. The first one is a nice to have for
       | side projects, but pretty irrelevant in the cost of a business
       | building and shipping a product. If they're referring to
       | autoscaling then, again, anything running containers can do that.
       | 
       | And no mention of where the data is? As far as I can tell, this
       | is buzzword soup with no broadly applicable use case.
        
       | Thaxll wrote:
       | At the edge, so your app is at the edge but the DB is 80ms away.
       | Too much focus on latency, trying to fix a non existing problem.
        
       | jgalt212 wrote:
       | I'm looking for a blog post the combines the best elements of the
       | future of the web with the future of work.
        
       | andirk wrote:
       | Is our current DNS on the edge? Decentralized all the way down to
       | one's host file. Fully centralized all the way up to the 13 DNS
       | servers. It has the issue of keeping up with state yet almost the
       | entire internet rests on its shoulders and it works.
        
       | dingosity wrote:
       | Meh. My future is a linux laptop with emacs and ssh.
       | 
       | But yeah. I feel you. The Edge is where all the cool kids are
       | hanging out.
       | 
       | And as much as it sounds like a buzzword, terminating TLS at the
       | edge is and calling back to central services via a proxy w/ warm
       | connections to the backend is pretty easy to deploy and does
       | wonders for perceived latency.
        
         | marcus_cemes wrote:
         | That's perfectly sufficient for a large number of use cases,
         | keeping things simple.
         | 
         | The edge isn't just where the cool kids hang out, through.
         | There is a _very_ noticable latency hit over long distances,
         | amplified by the number of round trips needed. If you have a
         | local business, this isn 't a problem.
         | 
         | Making it super simple to deploy things to the edge, and
         | developing systems to make it easier to push data that can be
         | cached to the edge to avoid trips to a central database, is
         | awesome even for hobbist programmers, like Heroku made it easy
         | to deploy applications without worrying about VMs.
        
       | xwowsersx wrote:
       | I have been trying to find what algorithms or techniques are used
       | to actually accomplish the routing whereby the edge server
       | closest to the user is chosen. Is this accomplished by pinging
       | multiple servers and choosing the one with the lowest TTFB?
        
         | sgammon wrote:
         | that's one way, yes, but it relies on DNSLB, which necessitates
         | shorter TTLs, which means more round trips to DNS.
         | 
         | the smooth way to do this (how Google and others do it, the big
         | boys) is via Anycast routing, where you are IP-routed to the
         | nearest available node (I.e. all nodes globally share an
         | external IP identity and so DNS is not driving LB or routing).
         | 
         | https://en.m.wikipedia.org/wiki/Anycast
         | 
         | edit: i should say, DNSLB needs shorter TTLs, lots of
         | monitoring, and you're already in reactive mode, but otherwise
         | it is a great solution.
        
       | newaccount2021 wrote:
        
       | tonymet wrote:
       | This vision will become real when we can distribute indexes &
       | query engines to the edge. A simplified model would be a
       | lightweight CDN deployment of sqlite with distributed updates.
       | 
       | Querying large indexes is the most common use case that needs
       | code to run. Sqlite would standardize storage & query
       | implementation
        
       | zitterbewegung wrote:
       | The future of the web could also be back to the browser. Python
       | can run in the browser with SQLite. I have had ideas of taking
       | Django or fastapi and then either using the browser or put it in
       | an app which runs it in WebKit or blink and syncing to the
       | servers if that is even needed for the app.
        
         | Existenceblinks wrote:
         | It's just browsers not having generic vm. It just not be able
         | to run more than one programming language. (ok, wasm..). Other
         | VM has a bunch of dialect of its langs run on them.
        
         | imiric wrote:
         | That's neat, but it's not the web. You're merely using the web
         | as a deployment mechanism, and the "browser" as a hypervisor.
         | You might as well build an Electron app at that point if you
         | want the desktop UX.
        
           | lioeters wrote:
           | The web _is_ a deployment mechanism, and the browser does
           | essentially manage sandboxed processes as a kind of virtual
           | operating system.
           | 
           | The web is evolving. Python with SQLite running in the
           | browser is part of the web.
        
             | systemvoltage wrote:
             | Can you please explain more? How would a local sqlite
             | database work with a typical, say a CRUD blogging app as an
             | example? Do invidividual users have their own database in
             | the browser?
        
               | lioeters wrote:
               | It probably wouldn't be suitable for a blog or classic
               | CRUD app. The use cases I've heard about are more for
               | education and online editor/IDE.
               | 
               | For example: interactive documentation that runs code in
               | the browser with an ephemeral/temporary database,
               | possibly imported from the user's desktop. For teaching
               | programming languages in the browser, with the compiler
               | compiled to WASM, so the student doesn't have to set up a
               | local development environment. Or a database explorer
               | that's a purely static site with no server, neither
               | remote nor directly on user's computer - just virtually
               | in the browser, which is a more secure sandbox. You could
               | have a folder of HTML, CSS, JS that's a full-stack
               | application with client UI and server (theoretically).
               | 
               | Further reading:
               | 
               | * SQL Databases in the Browser, via WASM: SQLite and
               | DuckDB - https://blog.ouseful.info/2022/02/11/sql-
               | databases-in-the-br...
               | 
               | * Pyodide - https://pyodide.org/en/stable/ - Pyodide is a
               | Python distribution for the browser and Node.js based on
               | WebAssembly.
               | 
               | * Client-side WebAssembly WordPress with no server -
               | https://make.wordpress.org/core/2022/09/23/client-side-
               | webas...
               | 
               | * Stackblitz - Instant development environments -
               | https://stackblitz.com
        
           | horsawlarway wrote:
           | Out of curiosity - what do you believe the web is, exactly?
           | 
           | Because if you're ruling out his approach - you're also
           | mostly ruling out the entire article here (since this
           | approach does not in any way solve your datastore needs).
        
             | imiric wrote:
             | Right, I was a bit harsh with the "it's not the web"
             | remark. Ultimately, the web is what we make of it, and it's
             | not up to anyone to claim it's one thing or the other.
             | 
             | Initially, the "web" had a clear definition: a client-
             | server architecture, a markup language to render data from
             | the server, a protocol for the client to request data from
             | the server, and a universal format to reference data. Then
             | we added more technologies to improve styling,
             | interactivity, P2P protocols, etc., and it's been evolving
             | ever since. Instead of documents, we served apps. Thin
             | clients were deemed unsuitable, until we realized
             | performance might be an issue, and now we can choose
             | whichever approach makes sense for the product.
             | 
             | So I'd say I'm a bit of a traditionalist in this sense, and
             | think that a web app should still involve frequent
             | communication with a server. If you're building a product
             | using web technologies, but it's running entirely (or
             | mostly) offline, that's great, but it's not part of the
             | World Wide Web. You could use any number of technologies to
             | build a desktop app at that point, and using web frameworks
             | and a web browser is a choice made out of convenience,
             | rather than suitability.
             | 
             | After all, if you download an installer over HTTP for an
             | offline desktop app written in a non-web language, would
             | that still count as a "web app"? We have to draw the line
             | somewhere, and I suppose it's a matter of preference where
             | that is done. Or maybe the line is forever blurred and web
             | apps are all that we have now...
             | 
             | > Because if you're ruling out his approach - you're also
             | mostly ruling out the entire article here (since this
             | approach does not in any way solve your datastore needs).
             | 
             | I don't think that's the case. I may disagree with the
             | assertion that "the future of the web is on the edge", but
             | the article still suggests a traditional client-server
             | model. It's just that the server is now distributed and
             | closer to the client, which in general is a good idea.
        
       | scarmig wrote:
       | Are there any relational systems which store persistent shared
       | state at the edge, with some kind of automatic geopartitioning?
        
         | babelfish wrote:
         | You could probably run a CockroachDB edge cluster
        
           | newaccount2021 wrote:
        
         | hderms wrote:
         | A relational system with the guarantees usually provided by
         | them seems really difficult to do. Like cockroach db but
         | considerably harder or with considerably worse performance.
         | 
         | I always thought it was more common for stuff like KV stores
         | with looser guarantees
        
         | [deleted]
        
         | dingosity wrote:
         | I know you're not asking for this, but distributed consistency
         | can get pretty hairy in anything but the simplest of cases. I
         | know you've probably heard all this, but for the people
         | unfamiliar with CAP theory, if you're asking yourself the same
         | questions and you haven't spent much time researching it, it's
         | worth it to get an over-view. The WikiPedia page is pretty
         | simple, but has links to decent references:
         | 
         | https://en.wikipedia.org/wiki/CAP_theorem
         | 
         | And if you want to get your math on, check out TLA:
         | 
         | https://en.wikipedia.org/wiki/Temporal_logic_of_actions
         | 
         | (Again, the wikipedia page is laughably incomplete, but has
         | references worth clicking on.)
        
       | tommek4077 wrote:
       | > When people say "the edge," they mean that your site or app is
       | going to be hosted simultaneously on multiple servers around the
       | globe, always close to a user.
       | 
       | This is the first time I see such a simple description of this.
       | Often you've got the feeling of "magicians" using technobabble to
       | let things look much more difficult or new than they are.
        
         | horsawlarway wrote:
         | Yes - but even then... it's not really true unless your site is
         | completely static resources.
         | 
         | If you're pushing a blog out - Great!
         | 
         | If you're pushing out anything that relies on application
         | state... much less great.
         | 
         | At best, you then end up in a world of trouble dealing with
         | eventually consistent data, sharding/tenanting, CRDTs, "edge"
         | KV stores (that are really just hiding the eventually
         | consistent nature from you) and all sorts of other trade offs.
         | 
         | If I'm directly collaborating with some half way around the
         | globe in a web application - there is literally no magic way to
         | wave a wand and make that latency go away.
        
           | Existenceblinks wrote:
           | One thing I don't understand CRDT hype is it doesn't solve
           | semantics conflict problem, and solving it on app level would
           | also be better by-passing CRDT completely. And one more
           | thing, real-time collaboration just mean road without sign,
           | lines, traffic light. Having process in place, in async way,
           | is considerably more efficient.
        
         | dcchambers wrote:
         | > Often you've got the feeling of "magicians" using
         | technobabble to let things look much more difficult or new than
         | they are.
         | 
         | Just one of the ways people work to keep salaries up ;)
        
           | ThalesX wrote:
           | > Just one of the ways people work to keep salaries up ;)
           | 
           | I get a bigger paycheck by explaining tech to business in
           | business terms so I'm not sure that's a valid approach after
           | a particular level of salary.
        
       | uncertainrhymes wrote:
       | I like deno.com, but I am deeply suspicious of their speed test
       | methodology. I hope I am wrong, but it really looks like they are
       | comparing time-to-first-byte (TTFB) including TLS, i.e. a 'cold
       | start'. It should not be almost 400 ms from Amsterdam to Virginia
       | on an existing connection.
       | 
       | If your app makes one and only one connection, then fair enough,
       | that is a real penalty. Otherwise, this is just the benefit of
       | literally every single CDN. With enough traffic, their edge
       | servers will keep connections open to origin.
       | 
       | For serverless, there is no origin -- even better for
       | performance, assuming it has no need for a common data store.
        
         | pier25 wrote:
         | > _It should not be almost 400 ms from Amsterdam to Virginia on
         | an existing connection._
         | 
         | Exactly, it should be much closer to 100-150ms.
         | 
         | My production server is in AMS and I'm in central Mexico (QRO).
         | The response is around 200ms, often less than that.
        
         | jacobn wrote:
         | > With enough traffic, their edge servers will keep connections
         | open to origin.
         | 
         | Except AWS CloudFront when used with a custom origin server
         | (whole site acceleration) - their "clever" load distribution
         | algorithm requires inordinate amounts of traffic for effective
         | origin connection re-use.
         | 
         | I run multiple sites in the top 100k websites globally and am
         | getting effectively zero origin connection re-use. Badgered
         | them about it but all I got was a wontfix :-/
         | 
         | Sigh.
        
       | jmull wrote:
       | IDK, I think this is getting overstated.
       | 
       | Don't forget - there's very typically a runtime environment
       | available that's a lot closer to the user... their browser.
       | 
       | The edge, as a place to run code, is a bit of a tweener...
       | farther from the user than the browser, farther from the data
       | than the database environment.
       | 
       | If the data the edge needs is _also_ on or near the edge, you can
       | really start to do something with it. But that means your data is
       | distributed. You want to have a really solid plan on how your
       | edge data is kept valid.
       | 
       | That's not so hard with static assets but edge processing on
       | static assets seems like a relatively narrow case, because it
       | needs to make more sense than pre-computing all the cases and
       | just having a more static files.
       | 
       | Edge processing on dynamic data is pretty interesting, but having
       | coherent distributed dynamic data tends to be app specific and
       | hard to get right and keep right. There are certainly cases, but
       | I don't think they usually tend to comprise the whole app. I
       | think it will usually be a partial solution and add a bunch of
       | complexity, so apps will want to use it sparingly, where it's
       | really needed.
       | 
       | I think this will be more of a tool in the toolbox, not the
       | general future of the web.
        
       | Existenceblinks wrote:
       | The future of the web and the only way it's growing in healthy
       | way is, we, having vm that can runs many languages .. not thing
       | that runs a single language .. everywhere.
        
         | erikpukinskis wrote:
         | That's a nice goal for a generic cloud provider, but within a
         | company having many languages causes a lot of problems. You
         | really want two or ideally one language across your stack.
         | Maybe 3 if you have some really specific workload.
         | 
         | If I'm a TypeScript Company or a Python Company I really don't
         | care if my cloud provider can run JVM. And vice versa.
        
       | Kass-y wrote:
       | 944.14ms - that's the worst case stated on the time to first byte
       | for conventional architecture. That's not bad. Will your user
       | notice it? Probably not for most applications and the ones that
       | they do you can probably cache that locally.
       | 
       | There are performance limited applications - e.g. stock trading -
       | but in those you're talking about choosing specific processors
       | and disabling certain caching approaches to increase the
       | performance that you want, choosing certain network switches,
       | using microwave transmitters where existing physical
       | infrastructure doesn't serve your needs... like fast is _fast_...
       | and people pay for that in expertise and infrastructure.
       | 
       | Will your users pay for cutting your response time from 944.14ms
       | to 45ms? And the additional complexity that comes with?
       | 
       | In some cases the answer is, in all honesty, yes - yes they will.
       | And they'll pay you for every additional fraction of a second it
       | takes light to go from the top of the Empire State building to
       | the bottom, if it gets their trade in first.
       | 
       | More generally, however, your users probably aren't interested in
       | delays measured in less than the time it takes them to blink. How
       | fast is your ballpoint pen? Do you care? To your user's use case,
       | it's all either categorised as instant or something you have to
       | wait for.
        
         | presentation wrote:
         | Um 944.14ms is almost a second, much longer than the time it
         | takes them to blink.
        
       | Karellen wrote:
       | Curse you Title Case!!
       | 
       | With the convention that articles and prepositions are not
       | capitalised, if you have a title that is mostly articles and
       | prepositions, then the remaining few words which are capitalised
       | can easily be confused with proper nouns, especially if those
       | nouns are relevant to the title's subject. e.g.
       | 
       | https://en.wikipedia.org/wiki/Microsoft_Edge
       | 
       | I thought that the article was going to be about how the author
       | thought Edge was going to (somehow) dominate the browser space
       | sometime in the forseeable future.
        
         | userbinator wrote:
         | Glad I'm not the only one who also thought the title was some
         | sort of MS marketing slogan.
         | 
         | ...or it could also be a pun about Edge becoming another
         | Chrome-clone.
        
         | tenebrisalietum wrote:
         | Proper nouns don't take articles. If Edge was intended as a
         | proper noun the title would have been "The Future of the Web Is
         | on Edge".
        
           | Karellen wrote:
           | Sorry, seen too many ungrammatical headlines in my time for
           | that consideration to have swayed how I parsed that one.
        
       | jmcantrell wrote:
       | The curl command mentioned in the article that's supposed to show
       | the region being used for a request `curl -ls https://deno.land`
       | doesn't seem to work as described. Does anyone know if this is a
       | typo?
        
         | [deleted]
        
         | snowwrestler wrote:
         | curl -I worked for me on a Mac.
         | 
         | The -I flag returns only the headers.
        
           | jmcantrell wrote:
           | Thanks, this worked for me, too. I wonder why the command
           | used in the article is so different.
        
       | hbrn wrote:
       | > Better developer experience
       | 
       | That's some wishful thinking right there.
       | 
       | Though author admits that DX is worse _right now_. But then there
       | are frameworks that abstract edge overhead.
       | 
       | Ok, but abstracted overhead is still worse than no overhead.
       | 
       | And then there's modeling your data without a centralized
       | database. There's no world where it leads to better DX.
        
       | jensneuse wrote:
       | Instead of "edge", a lot of websites should just have 3 locations
       | (us,eu,apac) with a non geo replicated Serverless database in
       | each region. At least that's what we're building at WunderGraph
       | (https://wundergraph.com/). Edge sounds super cool, but if you
       | take state and consistency into consideration, you just can't
       | have servers across the globe that also replicate their state
       | consistently with low latency. TTFB doesn't matter as much as
       | correctness. And if stale content is acceptable, then we can also
       | just push it to a CDN. Most importantly, you'd want to have low
       | latency between server and storage. So if your servers are on the
       | "edge", they are close to the user, but (randomly) further away
       | from the database. Durable objcets might solve this, but they are
       | nowhere near a postgres database. I think the "edge" is good for
       | some stateless use cases, like validating auth and inputs, etc.,
       | but it won't make "boring" services, even serverless in "non-
       | edge" Locations obsolete. You can see this on Vercel. Serverless
       | for functions, server side rendering, etc. and cloudflare workers
       | for edge middleware. But they explicitly say that your serverless
       | functions should be close to a database if you're using one.
        
         | naiv wrote:
         | I would even say that for 99% of the existing websites a free
         | oracle cloud instance with 4 cores and 24GB ram + cdn is more
         | than enough.
        
           | jl6 wrote:
           | Agree, except that amount of RAM ain't free.
        
             | yusefnapora wrote:
             | The free x86 VMs are capped at 1GB each, but the ARM ones
             | go up to 24GB.
             | 
             | > Arm-based Ampere A1 cores and 24 GB of memory usable as 1
             | VM or up to 4 VMs with 3,000 OCPU hours and 18,000 GB hours
             | per month
             | 
             | https://www.oracle.com/cloud/free/#always-free
        
           | cercatrova wrote:
           | Agreed, except without the Oracle part.
        
           | jensneuse wrote:
           | I agree. It's probably good enough for a lot of use cases.
        
           | soperj wrote:
           | Nothing from Oracle is ever free.
        
             | systemvoltage wrote:
             | Nothing from _anyone_ is ever free.
        
               | llamaLord wrote:
               | Yeah, but especially not Oracle.
        
               | alexvoda wrote:
               | Never trust the lawnmower to not mow your budget.
        
           | sandGorgon wrote:
           | the point is the developer audience that is just coming out
           | of college...will not be familiar with postgres. they would
           | make most of their applications saving data via "Durable
           | Objects" on the edge. Someone just built Kafka using Durable
           | Objects.
           | 
           | Not arguing that DO is better that postgresql. I'm arguing
           | that a lot of the developers wont realise that. Because the
           | DX of durable objects is superior.
        
             | llamaLord wrote:
             | *groans* is this another new name for an old thing? I know
             | I could just Google it, but wtf is a durable object?
             | 
             | It sounds like a json file... is it a json file? C'mon,
             | tell me it's NOT just a json file...
        
               | skybrian wrote:
               | It's a sharded key-value store with stored procedures
               | written in JavaScript.
        
           | qudat wrote:
           | We use the cloud free tier for https://prose.sh
           | 
           | We aren't even close to hitting any bottlenecks at this point
        
           | systemvoltage wrote:
           | Here is my golden setup: Cloudflare Tunnels + All ports
           | closed (except ssh) + bare metal server. You can scale to the
           | moon with like a million active users on a couple of 16 core
           | servers (1 primary, 1 hot failover). You don't need AWS. You
           | don't need Terraform. You don't need kubernetes. Hell, you
           | don't need docker because you know apriori what the
           | deployment environment is. Just run systemd services.
           | 
           | 99% of the startsup will _never_ need anything more. They 'll
           | fail before that. The ones that succeed have a good problem
           | on hand to actually Scale(tm).
           | 
           | What we're seeing is premature-optimi...errr scaling.
           | 
           | Edit more context:
           | 
           | For Postgres, setup streaming replication between postgres
           | and hot standby. You need a remote server somewhere to check
           | health of your primary and run promote to your hot standby if
           | it fails. It is not that difficult. Have cron jobs to back up
           | your database with pgdumpall in addition somewhere on
           | Backblaze or S3. Use your hot standby to run
           | Grafana/Prometheus/Loki stack. For extra safety, run both
           | servers on ZFS raid (mirror or raidz2) on nvme drives. You'll
           | get like 100k IOPS which would be 300x of base RDS instance
           | on AWS. Ridiculous savings and performance would be just
           | astonishing. Run your app to call postgres on localhost, it
           | will be the fastest web experience your customers will ever
           | experience, on edge or not.
        
             | zoover2020 wrote:
             | Nice
        
             | arcanemachiner wrote:
             | Saving this
        
             | luckylion wrote:
             | You still pay the latency cost, even though your data
             | travels mostly inside CF's network. It's very noticeable
             | when you're far away from the server, which you will be for
             | most of the world if you sell to everyone. Perfectly fine
             | if e.g. you're only targeting anyone from your region.
        
             | anonymousDan wrote:
             | What happens if your remote server thinks the primary is
             | down when it isn't really, and you end up with two hot
             | primaries? Is this just not an issue in practice?
        
               | systemvoltage wrote:
               | In that case, Postgres new-primary would just be detached
               | and will not stream/pull additional new data from the
               | old-primary after promotion. You should also make sure to
               | divert all traffic to the new-primary.
               | 
               | This problem happens in AWS RDS as well: https://docs.aws
               | .amazon.com/AmazonRDS/latest/UserGuide/USER_...
               | 
               | Actually, this might be much simpler with Cloudflare
               | tunnels. So it failover scenario would be something like
               | this:
               | 
               | 1. Primary and Hot standby are active. CF tunnels are
               | routing all traffic to primary.
               | 
               | 2. Primary health check fails, use CF health alerts to
               | promote Hot standby to primary (we'll call this new-
               | primary).
               | 
               | 3. Postgres promotion completes and new primary starts
               | receiving traffic on CF tunnels automatically.
               | 
               | 4. No traffic goes to old-primary. Backup data and use
               | old-primary as a new hotstandby, configure replication
               | again from new-primary.
               | 
               | Even better strategy would be to use Hot Stanby as read-
               | only so traffic is split dynamically depending on write
               | or read needs by the app. Take a look at StackOverflow
               | infra architecture: https://stackexchange.com/performance
        
             | dweekly wrote:
             | Delightful. Only change: I'd add Tailscale for your SSH
             | access (and to access your dashboards/logs) so you don't
             | have ANY ports open.
        
           | treis wrote:
           | I wish the thinking that leads to articles like the one in
           | the OP would take physical form so I could take a baseball
           | bat and release my frustrations by beating the hell out of
           | it. So many of my current pains in the ass at work stem from
           | adding complexity to get some benefit that does nothing to
           | make our product better.
        
           | dmitriid wrote:
           | 99% of websites can run from the cheapest Digital Ocean
           | droplet.
        
         | lewisl9029 wrote:
         | The architecture I eventually ended up with for my product
         | (https://reflame.app) involves:
         | 
         | 1. A strongly consistent globally replicated DB for most data
         | that needs fast reads (<100ms) but not necessarily fast writes
         | (>200ms). I've been using Fauna, but there are other options
         | too such as CockroachDB and Spanner, and more in the works.
         | 
         | 2. An eventually consistent globally replicated DB for the
         | subset of data that does also need fast writes. I eventually
         | settled on Dynamo for this, but there are even more options
         | here.
         | 
         | I think for all but the most latency-sensitive products, 1.
         | will be all they need. IMHO the strongly consistently
         | replicated database is a strictly superior product compared to
         | databases that are single-region by default and only support
         | replication through read-replicas.
         | 
         | In a read-replica system, we have to account for stale reads
         | due to replication delays, and redirect writes to the primary,
         | resulting in inconsistent latencies across regions. This is an
         | extremely expensive complexity tax that will significantly
         | increase the cognitive load on every engineer, lead to a ton of
         | bugs around stale reads, and cause edge case handling code to
         | seep into every corner of our codebase.
         | 
         | Strongly consistently replicated databases on the other hand,
         | offer the exact same mental model as a database that lives in a
         | single region with a single source of truth, while offering
         | consistent, fast, up-to-date reads everywhere, at the cost of
         | consistently slower writes everywhere. I actually consider the
         | consistently slower writes also a benefit since it doesn't
         | allow us to fool ourselves into thinking our app is fast for
         | everybody, when it's only fast for us because we placed the
         | primary db right next to us, and forces us to actually solve
         | for the higher write latency using other technologies if our
         | use case truly requires it (see 2.).
         | 
         | In the super long term, I don't think the future is on what's
         | currently referred to as "the edge", as this "edge" doesn't
         | extend nearly far enough. The true edge is client devices:
         | reading from and writing to client devices is the only way to
         | truly eliminate speed-of-light induced latency.
         | 
         | For a long time, most truly client-first apps have been
         | relegated to single-user experiences due to how most popular
         | client-first architectures have not had an answer for
         | collaboration and authorization, but with this new wave of
         | client-first architectures solving for collaboration and
         | authorization with client-side reads and optimistic client-side
         | writes with server-side validation (see Replicache), I've never
         | been more optimistic about the future (an open source
         | alternative to Replicache would do wonders to accelerate us to
         | this future. clientdb looks promising).
        
           | anonymousDan wrote:
           | Good post. Do you have any resources describing the 'new wave
           | of client-first architectures' you mention? I'm struggling to
           | understand how you can do client-side authorization securely.
        
             | lewisl9029 wrote:
             | Replicache (https://replicache.dev/) and clientdb
             | (https://clientdb.dev/) are the only productized versions
             | of this architecture I'm aware of (please do let me know if
             | anyone is aware of others!).
             | 
             | But the architecture itself has been used successfully in a
             | bunch of apps, most notable of which is probably Linear
             | (https://linear.app/docs/offline-mode, I remember watching
             | an early video of their founder explaining the architecture
             | in more detail but I can't seem to find it anymore (edit:
             | found it! https://youtu.be/WxK11RsLqp4?t=2175)).
             | 
             | Basically the way authorization works is you define
             | specific mutations that are supported (no arbitrary writes
             | to client state, so write semantics are constrained for
             | ease of authorization and conflict handling), with a
             | client-side and server-side implementation for each
             | mutation. The client side gets applied optimistically and
             | then sync'ed and ran on the server eventually, which
             | applies authorization rules and detects and handles
             | conflicts, which can result in client state getting rolled
             | back if authorization rules are violated or if unresolvable
             | conflicts are present. Replicache has a good writeup here:
             | https://doc.replicache.dev/how-it-works#the-big-picture
        
               | anonymousDan wrote:
               | Great, thanks. Are they open-source (or are you aware of
               | anything open-source that does something similar)?
        
               | lewisl9029 wrote:
               | Replicache has a commercial license but is source-
               | available. Clientdb is open-source, but doesn't seem as
               | mature yet. I'd love to see more open source solutions in
               | this space too.
        
         | jstummbillig wrote:
         | > But they explicitly say that your serverless functions should
         | be close to a database if you're using one.
         | 
         | Or else?
        
           | tmikaeld wrote:
           | You'll get the latencies noted for Heroku in the article.
        
           | jensneuse wrote:
           | Let's say the user is in FRA, the database in SF. If the
           | "server" is on the edge, you'll end up with 100-200ms between
           | server and database, while the user has less than 10ms
           | latency to the "edge". If the server does multiple round-
           | trips to the database, it can take seconds until the first
           | byte. If the server and database are both in SF, TTFB will
           | probably be less than one second, as round trips between
           | database and server are almost zero. One thing to mention is
           | that it would be beneficial of the TLS handshake could be
           | made on the edge, as it's a multi roundtrip transaction.
           | Ideally, we could combine a server close to the DB with a
           | stateless edge service.
           | 
           | So, the future of the web might not be on the edge. It's
           | rather: The future if the web will leverage the edge.
        
       | eddieh wrote:
       | Seems like we're headed full circle. At some point in the future
       | someone will rediscover the insanely overpowered machines in
       | everyone's home and hand with almost no latency.
        
         | ocdtrekkie wrote:
         | Many definitions of edge computing are already this: Just
         | running software on local hardware, but of course, still
         | billing it like it's a cloud service with a SaaS model.
         | 
         | Throw it all out and run everything off a PC in your basement,
         | you'll thank me later.
        
       | horsawlarway wrote:
       | Frankly - who cares unless there's a persistence mechanism to go
       | with this?
       | 
       | The devil isn't in getting a static resource close to users
       | (we've been able to do this for decades with CDNs)
       | 
       | The devil is in getting application state pushed close to those
       | users.
       | 
       | "Eventually consistent" is a real bitch of a thing to deal with.
        
         | Existenceblinks wrote:
         | My conclusion from trying to get erlang distribution works
         | across regions is, just don't. Distributed postgresql on fly.io
         | is cool .. though only for read heavy.
        
       ___________________________________________________________________
       (page generated 2022-10-06 23:00 UTC)