NHN FORWARD 2020 내가 만든 WebFlux 애플리케이션이 왜 느린지 모르시는 분들, 남이 실패한 걸 즐기고 싶은 개발자 분들, 모두 모여주세요. Spring 5의 WebFlux로 개발하면서 실패했던 내용을 공유합니다. ^_^ ▶▶ forward.nhn.co...
좋은 의견에 감사드리고자 기프티콘을 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
좋은 의견에 감사드리고자 기프티콘을 12월 23일까지 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
좋은 의견에 감사드리고자 기프티콘을 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
좋은 의견에 감사드리고자 기프티콘을 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
대규모 응답에 대한 서비스를 개인적으로 만들어보고 싶은 생각이 있긴한데 장난이 아니었네요. BlockHound처럼 map과 같은 동기 메소드 자체를 못쓰게 하기 위해 자바 객체를 일부러 별도의 비동기 전용 객체로 한번 더 감싸서 map을 못쓰게 하는 방법이나 그런 라이브러리가 개발된게 있지 않을까 하고 고민하게 되네요.
의견에 감사드리고자 기프티콘을 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
Production 에서 아직 배포해본적이 없습니다. 현상황에서 개인적으로 RDB 로 r2dbc 를 이용하여 개발하고 싶은 생각이 없습니다. Transaction 을 사용하기 위해서 RDB를 사용하는데, 아직 충분한 신뢰와 레퍼런스가 없어서 사용하고 싶지 않습니다. 또한 지금 하고 있는 일들이 RDB를 이용해서 데이터의 정합성을 보장받아야 하는 일입니다. 그래서 목적과 신뢰 측면에서 사용하지 않고 있습니다.
유익한 내용 간명하게 잘 정리해주셔서 감사합니다! 웹플럭스(리액터+네티)에서 스레드 4개가 사용 되면 그 중 한 개는 이벤트루프만, 그러니까 요청 큐에서 요청을 꺼내가는 일만 전담하고 나머지 3개가 실제 요청을 처리하는 식으로 역할 분담이 되는 건가요? 아니면 4개가 모두 요청 큐를 바라보고 하나씩 꺼내서 처리하는 동일한 일을 그냥 나눠서 처리하는 건가요?
질문에 감사드리고자 기프티콘을 보내드릴 예정입니다 :-) 아래 정보를 forward@nhn.com 메일로 보내 주세요. - RU-vid 댓글 ID - NHN FORWARD 사이트에 등록하신 '이름/메일 주소' * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
안녕하세요, 좋은 발표 감사합니다. 질문이 있습니다. 21:40 분에서, 그래프가 약간 떠 있는 걸 본다면 코드에 문제가 없는지 의심해봐야 한다고 하셨는데요. 코드에서 의존하는 외부 client가 늦게 응답을 준다면, blocking 코드 유무와 관련 없이, 그래프가 떠 있을 수 밖에 없지 않나요? 제가 이해한 바로는, 어떤 요청을 non blocking으로 처리한다는 건, 그 요청 처리 시간을 빠르게 하는 게 아니고요. 그 요청이 외부 client를 기다리는 동안 노는 cpu를 다른 요청이 쓸 수 있게끔하는 것으로 이해했는데요. 특정 요청 a에게 외부 client가 늦게 응답을 준다면, 그 요청의 처리 시간이 늦어지는 건 webflux, web mvc 둘 다 똑같은 것 아닌가?라는 생각이 들어 질문드려요. 요즘 webflux, non blocking 관련 개념을 공부하는 데 헷갈리는 게 많아서, 답변 주시면 이해에 큰 도움 될 것 같습니다. 감사합니다!
좋은 의견에 감사드리고자 12월 23일까지 기프티콘을 보내드릴 예정입니다. 경품을 받으시려면 양식(t0a.st/AFgQ) 을 작성해 제출해 주시기 바랍니다. * 아직 사이트에 등록하지 못한 분은 forward.nhn.com 사이트 오른쪽 상단의 [로그인]을 눌러 등록하실 수 있습니다.
넵 맞습니다. 코드에서 외부 클라이언트가 늦게 응답을 준다면 그 시간만큼 떠 있을 수 밖에 없습니다. 제가 설명이 약간 부족했네요. 보충의견 드립니다. REDIS는 응답 시간이 1ms 정도 인데, 저렇게 떠있는 구간이 일정하게 보인다면 코드에 문제가 있는지 없는지 의심해봐야 한다 라고 자세히 말씀드렸어야 했네요. 의견 감사합니다.
놓치기 쉬운 부분, 잘 모르고 사용하면 문제가 될 부분들을 너무 잘 풀어서 설명해 주셔서 정말 많은 도움이 많이 되었습니다. 감사합니다~ 시간상 성능 시험에 관련된 상황을 자세히 설명해 주시지는 못한 듯 한데 부하가 다 들어간 상황(램프업 끝나고 스캐터 차트가 수평인 상황, 더이상 TPS가 늘어나지 않았을때)에서 각각(mvc, webflux)의 자원 상황과 mvc이 max-thread 설정도 궁금한데 추가적인 정보를 알 수 있을까요? 그리고 1000 vuser를 사용했다고 하셨는데 think time이 있었던 것인지도 궁금하네요~ 질문만 잔뜩 드렸습니다~ :) 좋은 내용 다시 한번 감사드립니다.
성능 테스트 때, cpu usage 를 캡쳐한것이 있었으면 좋았을텐데.. 기억에 의존할 수 밖에 없어서 안타깝네요. 기억으로는 MVC 는 거의 100% 에 가까운 cpu usage 를 보여줬고, webflux 는 약 80% 정도 선이였던것 같습니다. mvc, webflux 모두기본 설정값으로 했습니다. 그래서 max = 200 입니다. think time 은 없었습니다. api 자체가 단순한 내용이라 시나리오 구성도 하지 않고 단순 부하 테스트가 목적이었습니다.