3 ms·
Ask HN: People who work on V8, how hard would it be to adapt V8 to do this?
A JIT compiler that can work across multiple machine, true Scaling.
I think we have microservices backwards. What we are doing should be the job of a program. It should be possible for a JIT compiler to automatically find code that is a bottleneck and spawn it on another server + provide remote connection to heap/stack for spawned code. In fact, have shared VRAM where all shared heap/stacks can live.
- It'd simplify debugging
- you'd get by with just monoliths
- lot less need to monitor
- no need for gRPCs, etc.
- highly simplified programs
If V8 could provide nodejs with this it'd be a game changer. A JIT compiler that can scale automatically. I believe, and I've no experience in compilers, the hardest part would be sharing stack/heap between code in efficient manner. But program should do the math and figure out if performance gained by 'outsourcing' execution is more than latency and extra processing introduced.
- throwaway888abc 5y agoI think, excluding the JIT and optimization, you just described worker nodes and worker pools [0] (?). Another frame, can be, openfass serverless for certains part of code. 2cents, will keep the JIT for someone else, interesting topic [0] https://medium.com/coinmonks/visually-understanding-worker-pool-48a83b7fc1f5 https://medium.com/coinmonks/visually-understanding-worker-p...
- lifeplusplus 5y agolooks interesting thanks
- sesuximo 5y agoFirst off, distributed memory has been tried (e.g. in https://en.wikipedia.org/wiki/Amoeba_(operating_system) https://en.wikipedia.org/wiki/Amoeba_(operating_system) which is famous for its relationship with Python). It’s extremely hard to do in a performant and coherent way. It basically didn’t work. Second off, automatically distributing computations implies automatically adding the necessary synchronization. That’s super hard/maybe impossible in general. Third, IMO there’s value in human readable APIs for services. I think it makes systems easier to debug since you have clear boundaries and (should) have simple constraints for each service.