나 이거 있는데 주딱이 공부하라는게 이게아니고, 구조 공부하라는거아님? 저거는 웹플럭스 함수 기능들 공부하는거라
백갤러 3(61.33)2024-10-03 15:10
답글
목차는 괜찮은데, 내가 말한건 책들이랑 상관 없어
동작 방식 정도만 공부하고 추론해낼 수 있어야함
김대기(waitkim)2024-10-03 15:10
Node.js는 CPU 집약적 작업에는 제약이 있고, WebFlux는 JVM의 멀티스레딩을 통해 확장성에서 더 유리하고, 동시성 처리와 성능 요구사항에 따라 Node.js는 빠른 I/O 처리, WebFlux는 복잡한 리액티브 시스템에 적합함
백갤러 2(1.222)2024-10-03 15:09
답글
왜 제약이 있어? cpu 코어 1개일때도 그럴까?
김대기(waitkim)2024-10-03 15:11
답글
core 1개에서 똑같이 cpu 집약적 작업을 하면 컨텍스트 스위칭 와바박 일어나는 webflux가 더 느리지 않을까?
김대기(waitkim)2024-10-03 15:12
답글
노드는 이벤트 루프 싱글스레드인데 네티는 이벤트 루프 멀티스레드 차이 알라고하는거아님?
백갤러 3(61.33)2024-10-03 15:12
답글
틀렸다고 하는게 아니라, 의문을 가지라는거임
김대기(waitkim)2024-10-03 15:12
답글
사실상 싱글 코어 환경에서는 Node.js나 WebFlux 모두 CPU 집약적 작업을 수행할 때 한계가 있을 수밖에 없음
이벤트 루프를 사용해 비동기 I/O는 정말 효율적으로 처리하지만, CPU 집약적 작업에 대해서는 구조적으로 제약이 있어. 그 이유는 이벤트 루프가 블로킹될 수 있지...
하지만, CPU 코어가 하나인 환경에서는 여러 스레드를 돌리는 게 큰 이점이 되지 못하기 때문에, Node.js의 싱글 스레드 모델이 오히려 복잡한 스레드 컨텍스트 스위칭이 없는 만큼 간단하고 안정적일 수도 있음
다만, 이건 CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지
백갤러 2(1.222)2024-10-03 15:15
답글
"CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지"
이걸 좀 더 설명해야될듯
김대기(waitkim)2024-10-03 15:15
답글
CPU 코어가 하나일 때, Node.js는 오히려 비동기 이벤트 루프가 강점이 될 수 있음
CPU 집약적인 작업에서도 컨텍스트 스위칭이 없기 때문에 단순성이 장점이 될 수 있는 반면, WebFlux는 멀티 스레드로 인한 오버헤드로 인해 성능이 저하될 가능성이 있기도 하고
복잡한 CPU 작업을 처리해야 한다면, Node.js 역시 본질적으로는 한계가 있다는 점을 기억하셈 특히 워커 스레드나 클러스터링 없이 장기적으로 큰 부하를 감당하기 어려울 수 있음
백갤러 2(1.222)2024-10-03 15:16
답글
"CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지" 를 좀더 설명하자면 흠..
Node.js에서 CPU 집약적인 작업을 비동기 방식으로 처리하기 어렵다는 것을 의미하는데
그 이유는 Node.js의 비동기 모델이 주로 I/O 작업에 특화되어 있고, CPU 자원을 많이 사용하는 작업은 본질적으로 비동기 처리와는 잘 맞지 않기 때문임
더 자세하게 쓸려면 한도 끝도 없긴한데..
Node.js의 비동기 모델이 I/O에 특화된 이유만 설명하자면 I/O 작업(파일 읽기, 네트워크 요청 등)은 비동기적으로 처리되고 I/O 요청을 보내놓고 다른 작업을 하다가, 그 작업이 완료되면 그때 다시 결과를 받아와서 처리하는 방식임
이 과정에서 CPU는 대부분 대기 상태에 있기 때문에
백갤러 2(1.222)2024-10-03 15:19
답글
Node.js의 싱글 스레드 모델이 큰 문제가 되지 않아
이런 비동기 방식은 대기 시간이 많은 작업에 효율적임 즉, I/O 바운드 작업이 주를 이루는 애플리케이션(웹 서버, API 서버 등)은 Node.js가 최적화되어 있는 부분이지..
백갤러 2(1.222)2024-10-03 15:20
답글
장문의 설명 고맙다
여기에 내가 강조하고 싶었던 것 하나만 덧붙이자면, node는 싱글스레드라서 cpu 집약적 작업에 스레드가 묶이면 그 뒤에 io 작업들도 죄다 밀려버리지만, webflux는 스레드가 여러개라서 그럴 일이 없다는거야
cpu 집약적 작업에서 손해를 조금 보더라도, 궁극적으로는 이득을 보는거지
김대기(waitkim)2024-10-03 15:25
답글
이게 바로 노드가 극한의 io 성능에도 불구하고 메이저가 되기 힘든 이유야
세상에 io만 하는 서버는 별로 없거든
김대기(waitkim)2024-10-03 15:27
답글
굳..
Node.js에서 CPU 집약적인 작업이 스레드를 점유하면 그 뒤의 I/O 작업이 밀리는 현상은 본질적인 문제고, WebFlux처럼 여러 스레드를 활용하는 환경에서는 그 문제를 회피할 수 있지...
다만 기에 대해 생각해볼 몇 가지가 있는데
멀티스레드 환경에서 스레드 풀 과부하나 컨텍스트 스위칭 비용을 무시 못한다는것..
나아가 CPU 작업 최적화가 여전히 필요하기도 하지..
백갤러 2(1.222)2024-10-03 15:29
답글
배워갑니다
백갤러 3(61.33)2024-10-03 15:29
답글
코어 1개라면 충분히 고민해볼 문제임
결국 환경과 서비스의 특성에 따라 솔루션은 달라지는 것이고, 그걸 알려면 cs 지식이 있어야한다는 이야기
https://www.yes24.com/Product/Goods/118202569
이거
읽고 있는데 괜찮은지 평가좀
읽어보고 노드도 대충 배워봐야겠다
나 이거 있는데 주딱이 공부하라는게 이게아니고, 구조 공부하라는거아님? 저거는 웹플럭스 함수 기능들 공부하는거라
목차는 괜찮은데, 내가 말한건 책들이랑 상관 없어 동작 방식 정도만 공부하고 추론해낼 수 있어야함
Node.js는 CPU 집약적 작업에는 제약이 있고, WebFlux는 JVM의 멀티스레딩을 통해 확장성에서 더 유리하고, 동시성 처리와 성능 요구사항에 따라 Node.js는 빠른 I/O 처리, WebFlux는 복잡한 리액티브 시스템에 적합함
왜 제약이 있어? cpu 코어 1개일때도 그럴까?
core 1개에서 똑같이 cpu 집약적 작업을 하면 컨텍스트 스위칭 와바박 일어나는 webflux가 더 느리지 않을까?
노드는 이벤트 루프 싱글스레드인데 네티는 이벤트 루프 멀티스레드 차이 알라고하는거아님?
틀렸다고 하는게 아니라, 의문을 가지라는거임
사실상 싱글 코어 환경에서는 Node.js나 WebFlux 모두 CPU 집약적 작업을 수행할 때 한계가 있을 수밖에 없음 이벤트 루프를 사용해 비동기 I/O는 정말 효율적으로 처리하지만, CPU 집약적 작업에 대해서는 구조적으로 제약이 있어. 그 이유는 이벤트 루프가 블로킹될 수 있지... 하지만, CPU 코어가 하나인 환경에서는 여러 스레드를 돌리는 게 큰 이점이 되지 못하기 때문에, Node.js의 싱글 스레드 모델이 오히려 복잡한 스레드 컨텍스트 스위칭이 없는 만큼 간단하고 안정적일 수도 있음 다만, 이건 CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지
"CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지" 이걸 좀 더 설명해야될듯
CPU 코어가 하나일 때, Node.js는 오히려 비동기 이벤트 루프가 강점이 될 수 있음 CPU 집약적인 작업에서도 컨텍스트 스위칭이 없기 때문에 단순성이 장점이 될 수 있는 반면, WebFlux는 멀티 스레드로 인한 오버헤드로 인해 성능이 저하될 가능성이 있기도 하고 복잡한 CPU 작업을 처리해야 한다면, Node.js 역시 본질적으로는 한계가 있다는 점을 기억하셈 특히 워커 스레드나 클러스터링 없이 장기적으로 큰 부하를 감당하기 어려울 수 있음
"CPU 작업을 나눠서 비동기적으로 처리할 수 있는 방식이 없다는 걸 전제로 하는 거지" 를 좀더 설명하자면 흠.. Node.js에서 CPU 집약적인 작업을 비동기 방식으로 처리하기 어렵다는 것을 의미하는데 그 이유는 Node.js의 비동기 모델이 주로 I/O 작업에 특화되어 있고, CPU 자원을 많이 사용하는 작업은 본질적으로 비동기 처리와는 잘 맞지 않기 때문임 더 자세하게 쓸려면 한도 끝도 없긴한데.. Node.js의 비동기 모델이 I/O에 특화된 이유만 설명하자면 I/O 작업(파일 읽기, 네트워크 요청 등)은 비동기적으로 처리되고 I/O 요청을 보내놓고 다른 작업을 하다가, 그 작업이 완료되면 그때 다시 결과를 받아와서 처리하는 방식임 이 과정에서 CPU는 대부분 대기 상태에 있기 때문에
Node.js의 싱글 스레드 모델이 큰 문제가 되지 않아 이런 비동기 방식은 대기 시간이 많은 작업에 효율적임 즉, I/O 바운드 작업이 주를 이루는 애플리케이션(웹 서버, API 서버 등)은 Node.js가 최적화되어 있는 부분이지..
장문의 설명 고맙다 여기에 내가 강조하고 싶었던 것 하나만 덧붙이자면, node는 싱글스레드라서 cpu 집약적 작업에 스레드가 묶이면 그 뒤에 io 작업들도 죄다 밀려버리지만, webflux는 스레드가 여러개라서 그럴 일이 없다는거야 cpu 집약적 작업에서 손해를 조금 보더라도, 궁극적으로는 이득을 보는거지
이게 바로 노드가 극한의 io 성능에도 불구하고 메이저가 되기 힘든 이유야 세상에 io만 하는 서버는 별로 없거든
굳.. Node.js에서 CPU 집약적인 작업이 스레드를 점유하면 그 뒤의 I/O 작업이 밀리는 현상은 본질적인 문제고, WebFlux처럼 여러 스레드를 활용하는 환경에서는 그 문제를 회피할 수 있지... 다만 기에 대해 생각해볼 몇 가지가 있는데 멀티스레드 환경에서 스레드 풀 과부하나 컨텍스트 스위칭 비용을 무시 못한다는것.. 나아가 CPU 작업 최적화가 여전히 필요하기도 하지..
배워갑니다
코어 1개라면 충분히 고민해볼 문제임 결국 환경과 서비스의 특성에 따라 솔루션은 달라지는 것이고, 그걸 알려면 cs 지식이 있어야한다는 이야기
C#의 태스크도 좋더라 - dc App
안사요