우리는 대규모 Ruby on Rails 애플리케이션 (매월 2,500 만 명의 사용자)을 보유하고 있으며 경영진은 Node.js로 다시 작성하기로 결정했습니다.


24

다음과 같은 경우 알려주십시오.

  • Node.js는 우리 사이트를 더 빨리 만들 것입니다!
  • Node.js는 더 적은 서버 리소스를 사용하므로 비용을 절약 할 수 있습니다!
  • Node.js는 우리를보다 생산적으로 만들어 줄 것입니다!
  • Node.js는 클라이언트와 서버 측 JavaScript 코드를 공유 할 수 있음을 의미합니다.

명확히하기 위해 프론트 엔드 서버를 다시 작성하여 기존 Ruby on Rails 애플리케이션과 API로 통신합니다. 한편 Ruby on Rails 애플리케이션을 서비스로 리팩토링합니다.

기존 아키텍처에 대한 자세한 내용 :

  • HTML 부분 캐싱을위한 Memcached
  • 세션 용 Redis 및 일부 구조화 된 데이터 캐싱
  • MySQL 단일 마스터, 다중 슬레이브
    • 많은 쓰기를 허용하는 하나의 큰 테이블이 있습니다 (투표를 상상하십시오)
    • 그렇지 않으면 대부분 읽습니다.
  • 일부 메타 데이터를위한 MongoDB
  • 루비 온 레일즈 3.0
  • nginx유니콘

33
hipster,이 모든 힙 스터 언어. 잘 작성된 PHP 응용 프로그램은 쉽게 확장되며, 전통적인 도구는 작동합니다.
Darknight

5
문제는 "개선을 통해 비즈니스에 충분한 돈을 절약하여 가치가 있는가?"라는 문구를 따라야합니다. 5 년 동안 비용을 절감 할 수 있지만 재 작성은 비용이 많이 들고 시간이 많이 소요됩니다. 코드가 끔찍한 엉망이 아니라면 관리자가 화를 내고 있다고 생각합니다.
Mikey C

4
다시 쓰기를 고려중인 경우 프런트 엔드를 클라이언트 측 자바 스크립트로 이동하는 것도 고려할 수 있습니다. 이는 더 이상 동적 프런트 엔드 서버가없고 정적 파일 일뿐입니다.
Joeri Sebrechts

11
@Darknight는 PHP가 힙 스터 언어였으며, Perl 웹 개발자가 PHP 힙 스터를 놀라게하는 동안 성공적인 제품에 배포 할 수 있음을 보여주는 사람들이 채택을 촉진했다는 사실을 명심해야합니다.

9
아무도 당신이 절대로하지 말아야 할 것들을 Joel Spolsky 기사를 가져 오지 않은 것에 매우 놀랐습니다 . 나는 모든 재 작성이 나쁘다는 것을 말하는 것은 아니지만 @MikeyC에 매우주의를 기울여 접근해야한다는 것에 동의합니다.
Dan Pichelman

답변:


22

당신이 묻는 대부분의 질문은 맥락 없이는 대답 할 수 없으며, 경영진이 이미 당신을 위해 선택했다는 점을 감안할 때 다소 무질서합니다. '이 모든 변화에 직면하여 새 직장을 구해야합니까 ? '

당신이 그것을 힘들어하는 경우 나는 당신이 정신을 잃지 않고 기초 재 작성 생존 방법 주제 에서이 게시물을 읽는 것이 좋습니다 .

나는 최근 node.js에서 약간의 서버 로직을 다시 작성하는 경로를 시작했습니다. 주된 이유는 현재 .NET으로 작성되었으며 MS 환경에서 멀리 떨어져 마이그레이션하기를 원했기 때문입니다.

지금까지 나의 경험은 긍정적이었다. 당신은 그것의 모든 비차 단성을 가진 초기 학습 곡선을 가지게 될 것이다.

JavaScript로 프론트 엔드 개발을 한 모든 남자와 개는 node.js가 '서버 측 자바 스크립트'라고 언급하면 ​​약간 흥분됩니다. 그러나 이것이 프론트 엔드 개발자가 우수한 서버 측 앱을 작성하는 데 필요한 경험을 갖게되는 것은 아닙니다.

한 가지 고려할 점은 스레드가 아닌 특성으로 인해 치명적인 오류로 인해 전체 앱이 중단되므로 스테이크가 약간 높아서 모든 것을 명시 적으로 확인하고 포착해야한다는 것입니다.

프론트 엔드와 백엔드를 모두 수행하고 두 가지를 모두 즐기는 사람들에게는 프론트 엔드에서 백엔드 언어로 정신적 맥락을 전환 할 필요가 없다는 것이 궁극적으로 우리 팀의 생산성을 궁극적으로 향상시킬 것이라고 생각합니다.


"당신이 고려해야 할 한 가지는 치명적인 오류로 인해 스레드가 아닌 특성으로 인해 전체 앱이 다운 될 수 있기 때문에 스테이크가 약간 높아지고 모든 것을 명시 적으로 확인하고 포착해야한다는 것입니다."-내 걱정이 될 것입니다.

예, 그 진술의 주요 요점은 프론트 엔드 만 개발자가 예외 처리와 관련하여 일반적으로 까다 롭지 않다는 것입니다. 어서, 그것은 이미 거의 2017입니다!
dave.zap

8

글쎄, 나는 응용 프로그램을 다시 작성하는 것이 좋지 않은 성능을 발휘하지 않는 한 좋은 생각이라고 생각하지 않습니다. 질문에 대답하려면 :

  1. Node.js는 마술이 아닙니다. 응용 프로그램에 엄청난 수의 사용자가 있으므로 더 빠르게 만들지 확신 할 수 없습니다.

  2. 예. Node.js는 실제로 적은 서버 리소스를 사용합니다. 따라서 자원을 절약 할 수있을뿐만 아니라 기존 자원으로 더 많은 것을 할 수 있습니다. 이것은 주로 Node.js의 단일 스레드 특성 때문입니다. 추가 스레드의 오버 헤드가 없습니다.

  3. 다시 Node.js는 마법이 아닙니다. 그 말에 진실이있을 수 있습니다. Node.js는 가능한 모든 작업에 대해 수백 개의 모듈을 생성 한 매우 활발한 커뮤니티를 보유하고 있습니다. 따라서 대부분의 작업이 완료되었을 가능성이 큽니다. 조각들을 맞추기 만하면됩니다.

  4. 이론적으로는 그렇습니다. Node.js는 JavaScript이므로 클라이언트와 서버간에 코드를 공유 할 수 있습니다. 그러나 나는 그것이 공유 될 것이 무엇인지 정확히 모른다. 클라이언트에서 재사용 할 수있는 코드를 작성하지 않았습니다. 우리가 서버에서하는 일은 대개 클라이언트와 관련이 없습니다. 나에게 더 중요한 것은 컨텍스트 전환이 없다는 것입니다. 클라이언트와 서버 모두에서 단일 언어로 코딩하는 것이 더 쉽다는 것을 알았습니다.

Node.js는 단일 스레드이므로 명시 적으로 구성 하지 않으면 여러 CPU를 활용할 수 없습니다 .

의견도 살펴보십시오. Node.js의 작동에 대한 통찰력을 제공합니다.


16
단일 스레드로 인해 리소스가 적습니까? 여분의 스레드가 무엇을 할 것이라고 생각하십니까?
Joe

@Joe 내가 이해하는 한 그들은 합산 할 것입니다. 노드 js에서는 가능한 한 빨리 요청을 처리하는 것이 가장 좋습니다. 한 번에 요청을 완료하거나 다음에 다시 시작하여 정직한 노드 js 프로덕션 응용 프로그램을 만든 유일한 기술이므로 다른 서버 쪽 기술과 비교하기에 가장 좋은 사람은 아닐 수 있습니다. 왜냐하면 비교를 삼가고 노드 j에 대해 알고 있다고 생각하는 것을 넣었습니다. 내 대답.
Akshat Jiwan Sharma

7
예, 단일 스레드는 확실히 서버가 이벤트 루프에서 한 번에 한 가지 작업 만 수행 할 수 있기 때문에 리소스 사용을 제한합니다. 또한 한 번에 한 가지 작업 만 수행 할 수 있으므로 서버 사용이 제한됩니다. 기능 (단일 스레드)과 거꾸로가 아닌 거꾸로와 거꾸로 인용하는 것이 매우 중요합니다. Node.js는 일부 용도에 적합하지만 다른 용도에는 적합하지 않습니다. 단일 스레드 노드 서버에 용량 문제가 있으면 다른 노드 인스턴스를 추가해야 할 수도 있습니다. 이제 다중 프로세스 서버가 있습니다.
Joe

나는 당신이 무엇을 의미하는지 봅니다. 나는 대답을 곧 업데이트 할 것입니다 (연구 후 읽음)
Akshat Jiwan Sharma

10
CPU에 관한 것이 아닙니다. 그 이유 모든 요청은 당신이 모든 처리를 완료 할 때까지 기다려야하므로 서버가 한 번에 여러 요청을 처리 할 수 있기 때문에 (다른 동시성을 가진 단일 스레드 시스템에서) 가능한 한 빨리 모든 요청을 처리하는 것이 중요입니다 그 전에 요청. 동시성, 제대로 된 것은 더 적은 대기를 의미합니다. 스레드 사용은 본질적으로 성능 저하가 아니며 단일 스레드 (기본적으로 또는 기타)는 성능 이점이 아닙니다.
피터 Hosey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.