TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What is the future of back-end development?

177 点作者 johnnydoebk将近 9 年前
Apparently, WebAssembly will revolutionize the client-side development. The web apps will be very much like desktop ones: high performing, can be written in any language. At the same time they are cross platform, can be easily distributed, and do not require installation.<p>Meanwhile, every &quot;builder of web3.0&quot; who&#x27;s trying to &quot;fix the Internet&quot;, or &quot;make the web faster, safer, and more open&quot; is doing it in such a way that back-end development is not required. I.e. they are working on decentralized (either p2p or federated) universal back-ends that they assume should be used by everyone.<p>Do you believe that in future the back-end development as we know it today will be obsolete as everybody will use some p2p BaaS platform and the web-development will be all about implementing client-side apps?

38 条评论

mabbo将近 9 年前
Some people don&#x27;t like the word much, but &quot;serverless&quot; is going to become a bigger deal.<p>You&#x27;ll write your code, complex or simple; you&#x27;ll hand it off to some cloud system; you&#x27;ll write a bit of configuration; you&#x27;re done. Likely the configuration part will become less and less required.<p>You won&#x27;t think about hardware, scaling, load balancing, etc, it will just happen for you. The data store being used will be abstracted away so that you don&#x27;t know&#x2F;care much about who provides it. Configuration problem.<p>Containers, AWS Lambda, these are just the first course of this meal.<p>Why? Because developers are expensive. Time spent doing anything other than the critical piece of writing business logic code is time wasted, and longer time to market.<p>That&#x27;s how I see the future of the server side.
评论 #12274922 未加载
评论 #12275125 未加载
评论 #12274920 未加载
评论 #12275034 未加载
评论 #12274976 未加载
评论 #12275488 未加载
评论 #12275988 未加载
british_india将近 9 年前
Given the complex services we already have, services that access complex, multi-source databases of the relational and NoSQL kind, I find it amusing that UI developers are so unaware of the complexities of the back end--complexities that are normally hidden from them--that they think they can be reduced to so many calls. WebSockets don&#x27;t magically assemble complex back-end data. Amusing in the extreme.
评论 #12274688 未加载
评论 #12276253 未加载
mrweasel将近 9 年前
The ability to build a solid backend platform and infrastructure is going to be increasingly important in the future. The &quot;backend&quot; is becoming increasingly anonymous (as in not seen, not as in privacy), but it has never been more important.<p>If nothing else the increasing focus on data collection and processing will push the need for custom backend forward for many years. Any every application that needs to store or share data via an API, needs an backend that understand the data it receives so that it can validate, process and distribute that data correctly.<p>Backends (custom backends) aren&#x27;t going away any time soon.<p>Your question reads as if you believe that &quot;backends&quot; equals desktop applications. Even in that case it&#x27;s still hard for web application to compete with desktop applications. It&#x27;s a matter of personal preference of cause, but something like Google Docs feels weirdly restricted, confined and cramped somehow, simply because it lives in the browser.
评论 #12274753 未加载
jalfresi将近 9 年前
Personally I don&#x27;t see any of that happening - client-side app development on the web is a chaotic mess with no &quot;official&quot; (whatever that means) way of doing things. Throw into that mix the constant reinvention thats going on (yeah can&#x27;t wait to see everything get re-invented AGAIN when web-assembly comes along), for what constitute incredibly marginal gains in the UI space (the web UI was already way fast enough 5 years ago without introducing mind-bending paradigms like react).<p>On top of all that, the very concept of web apps (in my opinion) is fundamentally flawed in that they break the web (fundamentally flawed in a similar way that Flash as a interactive platform was flawed e.g user interaction along a timeline is an inherent conflict).<p>So personally I expect all the client-side web app stuff to collapse under its own weight at some point. As a example, I&#x27;ve been a web developer for 20 years, and for my own projects at home I don&#x27;t even bother with web front ends; I use QML and QT and bang out a great UI in a fraction of the time it takes to produce a web UI. It&#x27;s not worth the hassle anymore, but then I have the luxury of my own projects not having many (any?) users beside myself.<p>As for back-end, I&#x27;ve actually seen a shift more towards &quot;systems&quot; e.g a set of isolated sub-systems interacting via event busses or queues over HTTP&#x2F;JSON either as micro-services or something close to that. Then a separate &quot;web front-end&quot; app pull data for output&#x2F;display, almost as a client to that system. So a cleaner separation of The Real System from Web Application Back-end. And in this space, things seem to becoming much more standardised means of communication between parts, whilst at the same time there is a Cambrian explosion of new tools, languages etc which can be exploited. There is very much an idea that separate sub-systems can be written in languages which can best take advantage of for the problem space.<p>It&#x27;s very interesting to see the differences in the way the front-end and back-end communities are approaching progress&#x2F;innovation.<p>Anyway, thats my opinion&#x2F;view of it all. Sorry for the wall of text
评论 #12274896 未加载
评论 #12275812 未加载
sktrdie将近 9 年前
I think backend will move more towards streaming endpoints (WebSockets). Already with concepts such as Observables we&#x27;re building apps entirely around streams of events. So to me the connection between frontend and backend will just be what you already use to communicate between your app components (streams). With regards to &quot;where the backend is&quot;, it doesn&#x27;t really matter. It can be on N different servers. What&#x27;s important is that we&#x27;ll be able to generalize lots of logic and automate most of the things (things like auth, database writes&#x2F;reads, etc). Other more specific things we&#x27;ll always have to write ourselves, but the management of an &quot;actual server&quot; will be more and more abstracted, and we&#x27;ll eventually deal with it entirely on the app-code side of things.
DoubleGlazing将近 9 年前
The more people try to build simple and &quot;elegant&quot; front ends, the more us backend developers have to do to support them.<p>I seem to be doing a lot more &quot;mashup&quot; work than ever before, joining up disparate back end systems in order to hide it all behind a simple modern front end. In the past if I was developing an order processing system I would work on the view&#x2F;UI side of things as well, now I expose the functionality via an API and let the front end guys develop a nice interface for it all.<p>Also lets not forget you don&#x27;t actually want any mission critical, confidential or security stuff happening on the front end no matter how WebAssembly gets.<p>There will always be a backend.
jbb555将近 9 年前
WebAssembly will not revolutionize anything. It&#x27;s like java where people claim it&#x27;s as fast as native code, and yet every single program runs like a dog and takes 100 times the resources. Only worse because it runs in a browser.
评论 #12275346 未加载
评论 #12275106 未加载
评论 #12274886 未加载
评论 #12275527 未加载
评论 #12275962 未加载
评论 #12275266 未加载
评论 #12275918 未加载
emilsedgh将近 9 年前
I don&#x27;t think WebAssembly is going to revolutionize front end development.<p>What you can do with WebAssembly regarding front-end development is running your Qt&#x2F;GTK+ type of programs on web.<p>But noone is interested in that. As a matter of fact, current trend seems to be ditching that sort of program on desktops and using HTML&#x2F;JS&#x2F;CSS stack for desktops as well (atom, slack, etc) because its much easier to create a top-notch UX using HTML stack.<p>HTML stack is very resilient. It evolves at a fast pace. Don&#x27;t underestimate it.<p>WebAssembly will definitely have its own use case in the future (games, apps with specific performance requirements) but its not replacing frontend development.<p>Regarding backend, its not going away. Serverless doesn&#x27;t mean backend-less. It means backend deployed in a very distributed fashion.<p>I personally think backends will be thinner and thinner as databases gain more responsibility an functionality.
评论 #12274700 未加载
评论 #12274916 未加载
评论 #12275530 未加载
otobrglez将近 9 年前
- More &quot;reactive&quot; frameworks &#x2F; languages &#x2F; tools.<p>- More functional principles and more resilient implementations.<p>- Complete decoupling from lower levels. Meaning that you don&#x27;t care about servers anymore. Apps are Dockerized and resources are dedicated automatically.<p>- No more human designed APIs. Why write APIs if modern machine learning principles can replace the whole concept?<p>- More lambda &#x2F; serverless concepts.<p>- APIs and integrations will be automated and auto discovered.<p>- More (micro)services, mixing of different languages and stacks.<p>- More streams, more events,...
评论 #12274910 未加载
pauljaworski将近 9 年前
When I started building out the back-end of my latest project, I realized its only purpose was to persist data to a NoSQL database. I had a small epiphany and decided I didn&#x27;t need to build a server at all - I could just use something like Firebase to accomplish that task.<p>Now that I&#x27;m getting deeper into the project, I need to add in features like PDF generation. No problem! I&#x27;ll use microservices for that. Well, that means I need to build a Docker container, deploy it to AWS ECS, and configure AWS API Gateway to talk to it. None of these things are what I would consider &quot;front-end&quot; dev work.<p>Back-end is surely changing, and many of the needs can be shifted to the front-end&#x2F;BaaS platforms, but there&#x27;s still plenty of work left! I think we&#x27;ll see the back-end role transition more toward building and maintaining these microservices and possibly the business logic portions of the front-end.
评论 #12275382 未加载
评论 #12275298 未加载
donatj将近 9 年前
Simple Client&#x2F;server isn&#x27;t going anywhere anytime soon. It&#x27;s too simple to implement and understand and use to die. Good enough almost always wins.
tinganho将近 9 年前
I think the future of back-end development is heavily decided by the future programming language. I think we are still missing a programming language that is safe, fast and productive. Safe meaning type safe and memory safe(Also memory leak safe), Fast meaning near zero abstraction costs, and productive meaning productive syntax and good tooling support. And it has to be built on modern compiler architecture, which means a compiler exposes an API for tooling(symbol lookup, refactoring, etc.), so people around the world don&#x27;t need to reinvent the wheel.<p>I personally don&#x27;t think any programming language fits the above description. And we have yet to invent it.
评论 #12276345 未加载
tonyedgecombe将近 9 年前
My hope is it will get a lot simpler, even trivial work seems far more complex that it needs to be. I&#x27;m pretty sure I was more productive writing VB apps twenty years ago than I am with current web development.
评论 #12274773 未加载
mempko将近 9 年前
I would love the future to be P2P. However, I don&#x27;t see it happening unless we have an economic revolution. There is just too much money to be made from collecting data. Data is king.<p>My guess is that future of back-end is using tighter languages like C++ and rust. Why? Because energy will become more expensive and we will require fewer machines to operate the application. These apps will run on single purpose kernels like exokernels and unikernels where the OS and app are married like in the &quot;good old days&quot;
samblr将近 9 年前
I tend to agree with development as we largely see will become obsolete or in other words development will&#x2F;should become really easy. It is primarily because designing backend is very similar to designing a deterministic state machine albeit a large one. And strangely enough, there is much re-invention of that state machine that happens in different projects by different set of people using different frameworks.<p>And going a step futher - relationship between tables in database should reflect on how an <i>operational</i>&#x2F;working UI will look like. eg: say <i>blog</i> and <i>comments</i> are two tables and related by foreign key. So in <i>operational</i> front end - it makes sense to see them linked together in say <i>blog</i> page.<p>Now sprinkle machine learning concepts to it - a relationship between two interlinked tables where &#x27;p&#x27; columns are in <i>blog</i> table and &#x27;q&#x27; columns in <i>comment</i> table can be represented in &#x27;n&#x27; different ways in say &#x27;m&#x27; different type of clients(like web mobile etc).<p>Now is it not possible to link design of whole web app to our voice commands and let some <i>deep learning</i> algorithm figure best schemas, front end, frameworks and even show a demo MVP.
weddpros将近 9 年前
Many&#x2F;most backends are stateless... In a way, they push the complexity of distributed systems to the db. They don&#x27;t deal with sharding, load balancing, request routing... so they leave some performance on the table.<p>They are still built as if it&#x27;s normal to split the backend in two: app server + db.<p>Maybe backends will learn from databases, and become sharded, redondant, and stateful. The border between app server and db could become fuzzy...
SFJulie将近 9 年前
It depends of the QE and next central banks announcement.<p>If liquidity is cheap on the market, innovations will tends towards KPEX=0 thus more SaaS and stuff will be produced backed with heavy marketing disguised as technical conf&#x2F;blogs, and corps will have the money to kill competition by buying it. Hence it will not be a truly competitive market.<p>If there is a contraction of liquidity however only the fittest will survive (low OPEX) and then SaaS, p2p, BaaS will die for more «old school» kind of development based on costing&#x2F;pricing. Clearly this would mean the return of GUI and all kind of transactional databases and small meaningful data.<p>The problem with financial markets is they are like weather : hard to forecast.<p>And for the same reason we know there is a global warming, there is clearly a tech bubble. The more we wait for solving the problem, the more it will hurt.<p>An industry future is always related to the confidence and money investors have in investing into it to expect ROI.<p>With the paranoia going on all around the world, expect security to be the next money maker.
p4wnc6将近 9 年前
There are many software jobs in which the ultimate output of your work is not something that interacts directly with a user or client. In my line of work, machine learning and statistical modeling, the true output of the work is most often &quot;answers to questions.&quot; You still need to write systematic code to be able to handle common questions, adjust for new questions, add new capabilities, etc.<p>The only way that such a thing could be commoditized into a front-end interface is if you could devise an interface that allowed for all the different kinds of questions that will be asked, the ways they will change, the new features that will be wanted -- because most of the work is taking some backend pipeline that is already optimized for being able to answer questions of type X, and then figuring out how to generalize it without losing any performance in order to also answer questions of type Y.<p>It&#x27;s almost always highly specialized to the specific company and line of business involved, so consulting companies can pop up to take away some of the in-house work, but in general there is no conceivable &quot;as-a-service&quot; thing that could.<p>Thus, you&#x27;re left with needing to manage your own backend, probably for quite a long time to come.<p>Finance, ML for search interfaces, small-data statistics consulting (like political statistics, ecology, and other fields), education analytics, and many other fields offer work that falls into these categories.<p>Basically, anywhere that there is a business or domain science researcher that needs ad hoc computer programs whose lives as programs will generally only serve to answer scientific questions for that researcher. The ad hoc nature of how the questions change most often mean that no service that pretends to put a front-end API over top of the science questions can adequately capture the variety of things that are needed, especially once the further need to heavily optimize them is added in.
brad0将近 9 年前
I think as standards become more adopted it will become easier to use tooling for the majority of backend development.<p>What is it that keeps backend developers in a job? We write code to give access to data in a way a consumer can use.<p>ie: we have input, we process the input and give the output (CS 101)<p>Every time we write something new one or more of those three elements has changed. Input, Processing or Output.<p>eg:<p>Input: The DB has a new table with data you need to expose on the website<p>Processing: The list of comments need to be ordered by upvotes rather than chronologically<p>Output: The existing JSON output also needs to be output as protobuf<p>Whenever any one of these elements is standardised it reduces our workload. Usually as a result of standardisation tools and frameworks are developed to take advantage of this.<p>If you want to know the future of any technology keep on top of their standards.<p>EDIT:<p>As well as keeping track of standards you should extrapolate what would happen if everybody adopted that standard. Who knows, maybe you could build a tool everyone uses and start a business around it.
LukeB42将近 9 年前
Hardware: Better &quot;development boards&quot;. Fanless, slimmer server hardware. TPUs in the typical datacenter within fifteen years.<p>Frontend: Webassembly for augemented reality: Hololens or whichever Linux-compatible equivalent comes out on top.<p>Backend: Evolution as we know it appears to be an optimization function that balances between diversity and fitness, so with that in mind I&#x27;ll hypothesize a healthy mix of RESTful HTTP&#x2F;2 with optional streaming. Static resources should live in decentralised overlay networks guarded by frequent trust computation. See <a href="https:&#x2F;&#x2F;github.com&#x2F;Psybernetics&#x2F;Synchrony" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Psybernetics&#x2F;Synchrony</a> and <a href="https:&#x2F;&#x2F;github.com&#x2F;Psybernetics&#x2F;Trust-Toolkit" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Psybernetics&#x2F;Trust-Toolkit</a> for PoCs of this last part.
tzakrajs将近 9 年前
I had this long rant, then I deleted it because I realized I misunderstood you. Another attempt: The vast majority of compute will live in the datacenter for the next 30 years bc quantum computers require superconductivity.<p>That compute will become like a common utility and will most certainly be used to power the APIs that consumer electronics call. The P2P adds unnecessary complexity when client&#x2F;server, a simpler solution, works well to bootstrap an application from a trusted source without the need for homomorphic encryption or other exotic schemes.<p>Bandwidth, compute and storage will continue to increase faster in the center than our consumer electronics on the edge. The backbones, internet exhanges and datacenters are where density equals economy of scale.<p>And webframeworks will come and go without a revolution, just another leaf in the wind.
评论 #12274883 未加载
cweagans将近 9 年前
I always thought that backend development would converge around a Parse-style API -- basically just CRUD as a service. There&#x27;s always going to be special bits of logic that need to be executed in certain conditions, so probably some straightforward way of handling that (like Parse&#x27;s Cloud Code feature) is needed + some way to handle recurring jobs&#x2F;background workers.<p>IMO, right now, web development is just an exercise in how complex we can make string concatenation. Getting away from that would be really nice.<p>Things I hope <i>don&#x27;t</i> happen: everyone uses lambda for everything, everything happens on a blockchain style network, etc. Those technologies are cool, but I feel like a lot of people view them as a golden hammer.
iElectric2将近 9 年前
When large code bases will have sane(!) static typing and functional programming principles. And no, slamming types onto Python won&#x27;t help much.
评论 #12276392 未加载
timwaagh将近 9 年前
I think the backend will remain pretty much the same as it always has been. decentralized networks will have their role however they will be too complicated to be cost efficient to develop for small-to-medium businesses, due to their increased complexity. the trend towards high-level development platforms that take care of a lot of things will continue. the trend towards generic backends that require little programming at all (think CMS) will also continue.
falcolas将近 9 年前
I picture the easy (CRUD, blogs, etc) backend development somewhat continuing as it has for years, frankly. The easy use cases are going to continue to rely on PAAS offerings; those offerings will simply go from &quot;colocated web hosting&quot; to Heroku, Lambda, and GAE. As easy edge caching from CDNs continues to proliferate, we&#x27;ll see more and more use of those as well.<p>Backends which are expected to do more, however, are going to be different. With the loss of growth in computing speed due to faster silicon, I think the growing complexity of our software programs is going to force the pendulum swing back away from &quot;fast enough&quot; and towards &quot;optimize everything&quot;. We simply won&#x27;t be able to rely on faster silicon to handle the greater complexity without further thought on our part.<p>Pushing the additional complexity to the client will cease to become enough, since the capability to do heavy client side processing is becoming less reliable. The reason is simple: personal computation devices are smaller, lighter, and with more and more unpredictable levels of computation power (as they are throttling to conserve the battery and minimize heat). This leads me to speculate that more and more work is going to be pushed back towards the server, which has fewer restrictions. I do think that communication between the server and client will grow in complexity as well, which will make us look at the days of long-polling HTTP and websockets as &quot;the good old days&quot;.<p>All that to say, the future of backend development is much like the past. Supporting thin clients with unpredictable computing environments by making everything run as quickly as possible in a large, distributed datacenter.
sontek将近 9 年前
I don&#x27;t believe the backend development we know today is obsolete or will be having many changes in the upcoming years. In every project I&#x27;ve worked on the front-end has always been the slower&#x2F;buggier part of the stack because front-end is so complex with device&#x2F;browser compatibility and having to respond.<p>What I do believe is that we are seeing a game changing revolution in backend development with RethinkDB ( <a href="http:&#x2F;&#x2F;rethinkdb.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;rethinkdb.com&#x2F;</a> ). It is an extremely fast distributed database with the ability to get a real-time feed of data as it changes for a query.<p>I&#x27;ve done two projects with RethinkDB and I can&#x27;t imagine going back to operating postgresl&#x2F;mysql&#x2F;mongo because of the joy it is to scale out RethinkDB and to use it as an application developer.<p>They&#x27;ve also created a new service that abstract it away even more and allows front-end developers to be extremely productive in their prototypes: <a href="http:&#x2F;&#x2F;horizon.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;horizon.io&#x2F;</a> and although its not for me I see a lot of value in it for people like you who want the backend to get of their way.
ninjakeyboard将近 9 年前
This is totally dependent on the domain. If you&#x27;re working in digital video, for example, much of the work is moving away from the client toward server side solutions. I don&#x27;t think you can make any sweeping generalizations - there are just more options that suit different needs. The need to scale is an increasingly important and popular topic and that won&#x27;t go away any time soon.
eyan将近 9 年前
How far into the future are you looking at? There&#x27;s got to be a server somewhere. Somebody has to write code for those, aside from caring and feeding.<p>Smaller applications, in the Big Data sense, will still be used on site. At least say, 10 years down (yeah, pulled that figure from my ass).<p>So no. I don&#x27;t believe that back-end development will be obsolete. Middle is the new back.
shams93将近 9 年前
At my work we still run all our own iron. Many classes if applications will continue to be way too complex to run entirely on a mobile device. Web assembly will enable things like blender3d, Photoshop and ableton live to run within a browser it&#x27;s not going to entirely wipe out the back end rather the desktop and local applications will go away.
k__将近 9 年前
My take:<p>FaaS will become big.<p>Back-end development with this will become so easy that a front-end dev can cobble together a pretty performant and secure back-end.<p>Only FaaS provider will hire back-end devs.<p>&lt;&#x2F;joke&gt;<p>I think since much is transitioning to realtime data (which FaaS can&#x27;t do godo ATM), there is still a huge demand for back-end devs in the next years.
Swennemans将近 9 年前
What about oCaml&#x2F;Reason?<p>oCaml&#x2F;Reason can compile to JavaScript making it posible to write everything in one very powerfull language. In the near future we can probably also use jsx.<p>Seems like an improvement over using node and React.
评论 #12287145 未加载
strictnein将近 9 年前
Java. It&#x27;s the past, present, and future. We&#x27;ll never rid ourselves of it.
the_arun将近 9 年前
back-end paradigm shift will be there. Similar to what is happening for the front-end. Servlerless architectures are the hosting &amp; platform part. But someone has to write business logic for the backend. Correct?
ganarajpr将近 9 年前
Potentially GraphQL.
verdverm将近 9 年前
Kubernetes
alex_duf将近 9 年前
serverless is the next big buzzword for back-end architecture
评论 #12274660 未加载
评论 #12275364 未加载
i336_将近 9 年前
&gt; <i>Apparently, WebAssembly will revolutionize the client-side development. The web apps will be very much like desktop ones: high performing, can be written in any language.</i><p>I unfortunately don&#x27;t have the specifics myself, but this would be the perfect point for someone else to chime in about DOM manipulation speed and the other various sources of browser overhead. I know they&#x27;re nonzero myself.<p>WebAssembly won&#x27;t turn the browser into a &quot;perfect&quot; runtime. Things will still be glitchy and slow and buggy and stuff, like they are today. Except now there will be multiple WA implementations, with low-level bugs 99% of webdevs won&#x27;t be able to debug... :D<p>It may be helpful to see WA as a W3C-ratified JVM (Java VM) for your browser: like the JVM, WA is bytecode-based, and like the JVM, WA will be targetable from many languages.<p>You might even compare it to JVM + Swing - where WA is the JVM, and the DOM (and all other related bits) are like Swing. (Swing is notorious for being slow, although it&#x27;s recently a lot faster.)<p>I think client-side will &quot;break though&quot; in the way you describe when there&#x27;s something that bridges the (relative) ease-of-use of the DOM and the performance&#x2F;accelerability of WebGL. I doubt that will happen soon though, considering the cementedness of HTML+CSS and the associated investment (eg full-stack CSS3 hardware accel).<p>-<p>I don&#x27;t have a clear picture of the backend side of things at the moment, but I can offer these comments:<p>You&#x27;ve probably heard of WebTorrent. WebTorrent is not BitTorrent, because WebRTC P2P channels use SCTP on top of DTLS, which is effectively UDP on the wire. Besides being a headache for sysadmins who manage deep-packet-inspecting proxies, this essentially isolates the Web as its own &quot;network&quot; in practice - the only way you can talk to servers is via TCP+HTTP or UDP+DTLS+SCTP+&lt;your protocol&gt;. This makes things somewhat difficult. WebTorrent is actually a fully independent network that uses SCTP instead of TCP or UDP - the protocol is the same, it&#x27;s just tacked on top of SCTP (&amp; co). I expect (or at least hope!) that in a couple years next year most BitTorrent clients will have WebTorrent support.<p>There&#x27;s also the fact that mobile networks are notorious at handling &quot;unusual&quot; data, because cellular data gets mangled by lots of pesky&#x2F;fussy infrastructure as it bounces between your device and what might be considered the &quot;traditional&quot; Internet backbone. I&#x27;ve heard UDP is touch-and-go, for example, or even access to unusual ports. There&#x27;s also the well-known fact that radio dropouts are still common and fundamentally hard to fix, even in 1st-world areas. This makes peer-to-peer networking incredibly hard.<p>A relay-as-a-service system to handle issues like these (SCTP-&gt;TCP gateway; connection persistence (very hard); etc) would make for an excellent DDoS generator, so at this point these types of things would need to be fixed at the application level, on a case-by-case basis. Unfortunately.<p>For another example consider Skype, which recently switched to an entirely client-server model, wherein the client talks solely to Microsoft servers; in the old days if the Skype client decided you had an awesome CPU&#x2F;RAM and network and your NAT config was sane, it made you a supernode for clients who didn&#x27;t have working NAT. Yup. Ref: &quot;skype supernode&quot;, also <a href="http:&#x2F;&#x2F;www.zdnet.com&#x2F;article&#x2F;skype-ditched-peer-to-peer-supernodes-for-scalability-not-surveillance&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.zdnet.com&#x2F;article&#x2F;skype-ditched-peer-to-peer-supe...</a><p>There&#x27;s also the fact that it&#x27;s not (yet) possible to cleanly and reliably detect what kind of connection you&#x27;re using on all OS platforms, so the old supernode system might decide your flaky home 3Mbps DSL connection isn&#x27;t supernode material, but once you switched your laptop from Wi-Fi to your $5&#x2F;MB 100Mbps 4GX connection, suddenly your uplink would look perfect for servicing all 100 clients that appeared to be geographically nearby... :D - and all P2P systems suffer from issues like these.<p>In short, federated, distributed peer-to-peer applications aren&#x27;t quite there yet, and I expect WebAssembly is one of those technologies that will probably take enough time to mature that you&#x27;ll have plenty of time to figure out where it&#x27;s headed and position yourself appropriately.
评论 #12274727 未加载
dan31将近 9 年前
Many web apps are indeed suited as a logic sprinkled atop several *aaS endpoints. Music streaming, social networking, collaboration and such.<p>This client-side logic can be made to run really fast with the evolution of JS engines and now also WebAssembly. Meanwhile communication cost is always bound by signalling over wires times number of endpoints. More time waste comes from data redundancy invoked by a physical separation of services (severity depends on the app nature). Within the fastest client side possible, overall latency will be capped by messaging.<p>Still all is well while you have 3-4 endpoints to mash up: probably staying within 1-2 seconds of psychologically acceptable latency so that your user won&#x27;t switch to something else too fast.<p>Things shall not be that funny once you need to integrate more than 5 endpoints. Messaging overhead turns into seconds and tens of seconds. A good example comes from business software. Parts of a typical ERP suite are tightly coupled on data: should you have a person, it is the same person for accounting, CRM, BPM, project planning etc. Integrate these parts the SOA way and obtain irreducible chatter between endpoints and thus slow UX.<p>It was observed that up to 40% of total system workload in typical SOA-style ERP suite is in data exchange between the core ERP system and the satellites. One has to control the flow between endpoints transactionally, hence aggressive caching is not only very complex there, but would not actually work.<p>Having that in mind and thinking of the enterprise software, I am personally in big favour of approach that SAP HANA guys took, where the business re-unites all the apps on a single platform and lets them share data in transactional way. This is contrary to the widespread belief that future enterprise systems should be a collection of SaaS components integrated through standard interfaces.<p>The management of redundancy is prohibitive, and extra workload from shipping data back and forth creates a bottleneck. And, by the way, there is no need to implement physically disjoint microservices to achieve great system modularity, neither should you build monolith anymore to address performance problems. Leverage the capabilities of modern software platforms and &quot;do microservices the right way&quot;.<p>In the world of enterprise software understanding comes right now that data integration always beats messaging in total cost of ownership.<p>Surely there is no sliver bullet, what is good for enterprise software might not suit other domains. But just imagine when one builds a game engine where polygons are rendered on one machine, physics calculations are done on the other machine, multiplayer logic is on third, and all flows and mixes up through the user machine. Wouldn&#x27;t it be kinda slow? But enterprise software done via messaging-based integration isn&#x27;t really far from that.