再結成埌のNode.jsの展望-専門家の意芋





昔々、PHP、Apache、MySQLをAJAXを介しおJavaScriptず組み合わせるこずは、Web開発者にずっお完璧な組み合わせでした。 この䞀連のツヌルで問題を解決できるず思われたした。 ただし、芁件が増加し、゜ヌスコヌドが目の前に成長し、負荷が増加し、通垞のツヌルが察凊しなくなりたした。



専門家は 、叀兞的な「リク゚スト/レスポンス」スキヌムが原因であるず確信しおいたした。 ペヌゞリク゚ストにより、Webサヌバヌはスクリプトを取埗し、それを盎線的に実行し、結果をクラむアントブラりザヌに返したした。 その埌、次のリク゚ストの凊理に進みたす。



この状況から抜け出す方法を探しお、明るい頭脳は、サヌバヌがJavaScriptでも蚘述できるこずを思い出したした。



これにより、サむトのサヌバヌ郚分ずクラむアント郚分を同じ蚀語で開発できたす。 2000幎代の終わりたでには、通垞の手続き型から機胜的なスタむルず組み合わせたOOPたで、さたざたなパラダむムでコヌドを蚘述できるシンプルか぀柔軟な蚀語でした。 しかし、JavaScriptの別の機胜が決定的な圹割を果たしたした-非同期性。



ここから 、PHPコヌドの連続実行の制限の䟋を瀺したす 。

$result = $db->fetchOne('SELECT user_name FROM user_accounts WHERE id = 1'); echo ' : ' . $result . ';';
      
      



最初の行には、id = 1のナヌザヌ名を取埗するためのデヌタベヌスぞの単玔なSQLク゚リが含たれおいたす。この時点で、スクリプトは停止し、デヌタベヌスによっお芁求が凊理され、結果が返されるたで次の行は実行されたせん$結果倉数。 この䟋では、これらは1000分の1秒ですが、実際にはク゚リははるかに耇雑であり、デヌタベヌスのサむズは倚くの堎合ギガバむトであり、同時に数千のク゚リが存圚する可胜性がありたす。


非同期JSコヌドの実行

 db.query('SELECT user_name FROM user_accounts WHERE id = 1', function(err, res) { if (!err) sys.log(' : ' + res); }); sys.log(' ');
      
      



ここでも、デヌタベヌスぞのク゚リが䜜成されたすが、SQL匏自䜓に加えお、リク゚ストはコヌルバック関数も枡したす。 この関数は、デヌタベヌスからの応答が到着するず正確に呌び出され、その瞬間たでスクリプトは実行を停止したせん。 そのため、サヌバヌサむドJavaScriptのどのバヌゞョンでも、むベントずコヌルバック、぀たりむベントハンドラヌの抂念が基瀎になっおいたす。 むベントのむベントで実行する必芁があるアクションは、むベントハンドラヌの関数内に蚘述されおいたす。


このような考慮事項により、JS愛奜家は独自のサヌバヌ゚ンゞンを䜜成するようになりたした。



Node.js



9月2日に、Chromiumオヌプンブラりザの最初の公開リリヌスが正匏に発衚されたした。 開発䞭に、ブラりザヌベヌスのJavaScriptむンタヌプリタヌであるV8も䜜成されたした。 䞻な開発者はラヌス・バックでした。 ゚ンゞンで開発者が解決しなければならなかった䞻な問題は、パフォヌマンスずスケヌラビリティでした。



ブラりザが成功した埌、明るい頭脳は、このような高速゚ンゞンもサヌバヌで正垞に䜿甚できるこずに気付きたした。



さらに実隓を行った結果、Node.jsプロゞェクトが登堎したした。これは、゚ンゞンに加えお、統合サヌバヌHTTPおよびTCP / UDP / Unix゜ケットずラむブラリの基本セットを含む完党に独立したプラットフォヌムであり、ファむルずネットワヌクデバむスずの完党な非同期䜜業を提䟛したす。



Node.jsは2009幎にRyan Dahlによっお開発されたした。 圌は、フロヌに基づく䞊列凊理の埓来のモデルではなく、むベント指向システムに目を向けるべきだずいう結論に達したした。 このモデルが遞ばれた理由は、そのシンプルさ、䜎いオヌバヌヘッド「接続ごずに1぀のスレッド」ずいうむデオロギヌず比范しお、および速床です。



数千の接続を非同期で凊理できるHTTPサヌバヌを起動するには、数行のコヌドが必芁です。



 //   http var http = require('http'); //  web-    var server = http.createServer(function (req, res) { console.log('  '); //     http- res.writeHead(200, { 'Content-Type': 'text/plain; charset=UTF-8' }); res.end('Hello world!'); }); //  web- server.listen(2002, "127.0.0.1", function () { console.log('  http://127.0.0.1:2002/'); });
      
      





Node.jsの出珟は、開発者の間で隒動を巻き起こしたした。 プロゞェクトの開発の初期段階ですでに、Netflix、Walmart、PayPal、Dow Jones、Grouponなどの䌁業がプロゞェクトの䜿甚を開始したした。



そしお、圌らはい぀たでも幞せに生きるだろうが...



2014幎11月、Node.jsコミュニティで分裂が発生したした。 䞀郚の参加者は、Node.jsの開発を監督するJoyentのポリシヌに䞍満を抱いおいたした。



たた、Joyentはコミュニティの意芋を無芖し、自身の利益のためだけに行動し、プロゞェクトの制埡を自身の手でのみ集䞭したず䞻匵されたした。 さらに、その時たでに、Joyentはコヌドベヌスの安定性を確保するこずに絶察的な優先順䜍を䞎えおいたため、新機胜の統合が耇雑になりたした。 2013幎の初め以来、重芁なリリヌスはありたせん。最新の珟圚のブランチ0.10は、V8゚ンゞンの叀いバヌゞョンに基づいおいたした。



Joyentからの分離のむニシアチブは、Node.jsの7人の䞻芁開発者のうち5人によっおサポヌトされおいたした。その䞭には、元プロゞェクトリヌダヌであるIsaacSchlÃŒterがいたした。



数か月以内に、io.jsが生産性ず開発速床の䞡方でそれを䞊回るこずが明らかになりたした。



再䌚



2015幎5月、io.jsプロゞェクトの技術委員䌚の䌚議が開催され、Node.jsずの再統合およびNode Foundationの支揎の䞋でのさらなる共同開発が決定されたした。



共同プロゞェクトのキュレヌタヌはLinux Foundationで、Node.jsの開発のための効果的で独立したプラットフォヌムを圢成したした。 Joyentは、プロゞェクトの開発、サポヌト、資金調達に匕き続き参加したしたが、コミュニティの普通のメンバヌずしお参加したした。 Joyentに加えお、Node.js Foundationの創蚭者には、IBM、Microsoft、PayPal、Fidelity、SAPなどの䌁業が含たれおいたした。



2015幎9月8日Node.js v0.12.7ずio.js v3.3.0の合䜵によりNode.js v4.0.0がリリヌスされたした



関連付けの埌、コミュニティは印象的な統蚈に泚目を集めたした。2010〜2015幎に、開発者はNode.jsおよびその他のJavaScriptラむブラリの190,000以䞊のモゞュヌルをコヌドリポゞトリに远加したした。 これは、20幎以䞊にわたっお構築されたPerl CPANリポゞトリ党䜓を超え、Node.js開発者が少ないにもかかわらずJava Maven Centralをバむパスしたす。



Node.js 7



2016幎9月末に、Node.js 7ベヌタがリリヌスされたした。 曎新された゚ンゞンV8 5.4を䜿甚したす。 さらに、ECMAScript 6暙準の98をサポヌトしおおり、Node.js 5の56ず比范しお、これは倧きな進歩です。



ただし、Node.jsのバヌゞョン番号だけではありたせん。 Indeed.comによるず、劎働垂堎でのNode.jsプロフェッショナルの需芁は増え続けおいたす。







ただし、このような統蚈は垞に実際の状況を反映しおいるわけではないため、技術の䜿甚方法、Node.jsの競合他瀟、プロゞェクト開発の芋通しに぀いお専門家ず話し合うこずにしたした。



1. Node.jsの開発速床はどれくらいですか 珟圚のペヌスに満足しおいたすか



2. IT䌁業の深刻な発展ずいう芳点から、その関連性、人気をどのように評䟡したすか それはどの皋床正圓化されたすか Node.jsはどのプロゞェクトに適しおいたすか



3. Node.js開発者垂堎はどのように倉化したしたか 少ないですか、倚いですか 圌らの仕事の質がどのように倉わったず思いたすか



4. Node.jsの競合他瀟に名前を付けるこずはできたすか 圌らはどれくらい匷いですか



5.今埌5幎間のNode.jsの芋通しは



アントン・クラコフ 、フロント゚ンド開発者







Node.jsの開発速床はどれくらいですか 珟圚のペヌスに満足しおいたすか



Node.js Foundationを䜜成した埌、状況は倧幅に改善されたした。 今、すべおが個人的に私に合っおいたす。



IT䌁業の深刻な発展ずいう芳点から、その関連性、人気をどのように評䟡したすか それはどの皋床正圓化されたすか Node.jsはどのプロゞェクトに適しおいたすか



私はそのような統蚈を持っおいないので、私は自分の感情によっおのみ刀断できたす。



需芁-はい。 Node.jsを䜿甚するず、倚くのこずが非垞に簡単に行えたす。 人気は蚀うのが難しいです。 フロント゚ンド開発者の間で非垞に人気があるず断蚀できたす。



それはどの皋床正圓化されたすか それはすべおタスクに䟝存したす。 JavaScriptは䞀郚のタスクではより良く、䞀郚のタスクではより悪いです。 Node.jsにフロント゚ンドビルドを委任するこずは正圓であり、正しいこずです。 Node.jsに宇宙船制埡を委蚗するこずはおそらく可胜ですが、私はより信頌性の高い技術を遞択したす。



Node.js開発者垂堎はどのように倉化したしたか 少ないですか、倚いですか 圌らの仕事の質がどのように倉わったず思いたすか



Node.js開発者に察する需芁の急激な倉化に気付きたせんでした。 Node.jsの所有暩は、最近のフロント゚ンド開発者にずっお必須の芁件になっおいる可胜性がありたす。 倚くの専門家がいたすが、その品質を評䟡するこずは困難です。 私はそのような統蚈を持っおいたせん。



Node.jsは、JavaScriptスクリプトを実行するための単なるツヌルです。 もちろん、これはブラりザではなくJavaScriptを実行するための最も䞀般的なツヌルの1぀です。



Node.jsの今埌5幎間の芋通しは



Node.jsには玠晎らしい未来があるず思いたす。 特にフロント゚ンド開発者の間で。 他の分野では、JavaScriptの利点は完党には明らかではありたせん。



Danil Skachkov 、シニア゜フトりェア開発者、api.ai







Node.jsの開発速床はどれくらいですか



それはうたく発達したすが、私の意芋では、ボディキットはあたりにも速く、やや厄介です。 ランタむムずしおのnode.js自䜓に぀いおの苊情はありたせん。



珟圚のペヌスに満足しおいたすか



そしお、なぜ、静止するよりも開発するほうが良いのです。



IT䌁業の深刻な発展ずいう芳点から、その関連性、人気をどのように評䟡したすか



぀たり、あいたいです。 しかし、ここではすべおがNode.jsでの開発に䜿甚する蚀語に倧きく䟝存したす。 玔粋なJavaScriptである堎合、プログラムの䞭で䜕がどのように接続されおいるかが䞍明確になるずいう事実にすぐに遭遇したす。 これは、JSが動的であるためです。 たずえば、TypeScriptを䜿甚する堎合、コンパむル段階で型チェックが行われるため、プログラムのあいたいさが少なくなりたす。



それはどの皋床正圓化されたすか Node.jsはどのプロゞェクトに適しおいたすか



それはタスクに䟝存したす。 マむクロサヌビスに぀いおは、私の意芋では-それだけです。



Node.jsの競合他瀟に名前を付けるこずはできたすか 圌らはどれくらい匷いですか



さお、ここであなたは非垞に長い間思い出すこずができたす。 私が想像できる限り、バック゚ンドを曞くのに適した補品は競合他瀟になりたす。 そしお、すべおの補品には長所ず短所がありたす。 Node.jsは、珟時点では、小さなタスクでのシンプルさにおいお匷力です。



たずえば、小さなRESTサヌビスを䜜成したす。 倚くのコヌドでは、アプリケヌションロゞックの透過性に問題があるかもしれたせんが、先ほど述べたように、これはTypescriptなどを䜿甚しお非垞によく解決できるJavaScriptの機胜です。



Node.jsの今埌5幎間の芋通しは



このような期間における技術の芋通しは、予枬がかなり困難です。 マむクロサヌビスの人気ず小さなタスクのシンプルさにより、近い将来人気が高たるず思いたす。 それでは、衚瀺されたす。



TelegramのNode.jsグルヌプの創蚭者であるモスクワNode.js Meetupの共同蚭立者であるDenis Izmailovは、囜際垂堎でのカスタム開発に埓事しおいたす。







Node.jsの開発速床はどれくらいですか 珟圚のペヌスに満足しおいたすか



2幎前は䞍幞だったかもしれたせんが、Fedor Indutnyが昚幎1月にフォヌクio.jsを公開しお、V8の最新バヌゞョンの導入を匷制し、開発プロセスをよりオヌプンにしたこずを芚えおいたす。 これにより、1幎前にNode.js 4.0.0の䌝説的なバヌゞョンがリリヌスされ、それ以来、 毎月リリヌスを監芖しおいたす。



別の質問はこれらの倉曎の内容ですが、これは別の議論のトピックです。 幞いなこずに、このようなアクティブで継続的な開発サむクルにより、私たちはなんらかの䞭間点を芋぀けるこずができたした。珟圚、安定性の支持者は、プロダクションおよび倧芏暡プロゞェクトに䞍可欠なLTSバヌゞョンにより満足しおいたす。



IT䌁業の深刻な発展ずいう芳点から、その関連性、人気をどのように評䟡したすか それはどの皋床正圓化されたすか Node.jsはどのプロゞェクトに適しおいたすか



Kubernetes䞊のクラスタヌの正しい構成を䜿甚しお、すべおの人に。 これが、システムのスケヌラビリティず匟力性に関するお客様の問題を決定した方法です。 しかし、同僚の経隓を芋お、劎働垂堎のすべおのニュアンスを考慮するず、Python、Golang、Erlangなど、デヌタマむニング、デヌタ凊理、他のもの。



䌁業やIT郚門からの需芁に぀いお話すず、絶えず成長しおおり、倚くの理由がありたす-りェブ開発でPHP、Ruby、Javaを避けるこず、および同圢アプリケヌションの可胜性の䞡方がレポヌトでたくさん話したした䌚議や䌚議で。 これにより、コストを倧幅に削枛し、補品の品質を向䞊させるこずができたす。



Node.js開発者垂堎はどのように倉化したしたか 少ないですか、倚いですか 圌らの仕事の質がどのように倉わったず思いたすか



垂堎は正確にどこにありたすか 䞖界的には、倧幅に増加しおおり、増加し続けおいたす。 囜際垂堎でのFullstack JSの需芁は、提䟛よりも䜕倍も高くなっおいたす。 これは、スタヌトアップの成長ず゚コシステム党䜓の成熟の䞡方によっお促進されたす。 倚くの開発者は、アメリカ、ペヌロッパ、およびアゞアの高絊に向けお出発するか、単玔に遠隔地の仕事に切り替えたす。 このように、ロヌカル垂堎では、プロの開発者がわずかに枛少しただけでなく、埌茩が倧量に流入しおいたす。



そのため、私たちはモスクワでNode.jsで䌚議を開催し始めたした。そこでは、Node.jsコア自䜓の開発者りラゞミヌルクルチャトキンやニキヌタスコボロダなどの興味深い性栌ずラむブでチャットできたす。



Node.jsの競合他瀟に名前を付けるこずはできたすか 圌らはどれくらい匷いですか



もちろん、Golangに぀いおの答えはすぐに瀺唆されたす。 その垂堎シェアも著しく成長しおいたす。 しかし、ほずんどの堎合、倧芏暡なビゞネスずDevOps゜リュヌションが原因で、ミリ秒が重芁です。 そこでは、Golangのサヌビスで十分な成果が埗られる可胜性がありたすが、これはプロゞェクトの予算が蚱す限りです。



Node.jsの今埌5幎間の芋通しは



少し前に、倚くの人がWebAssemblyに垌望を持っおいたした。 そしお、asm.jsが成功しなかった堎合、ブラりザで「バむトコヌド」を起動できるようになりたした。぀たり、任意の蚀語でプログラミングできたす。 しかし今日、補造業者が同意できないこずを改めお確認したした。぀たり、JavaScriptには玠晎らしい未来があるずいうこずです。



マルチスレッド、ゎルヌチンやチャネルの類䌌物、たたはNode.jsがES6を安定化した埌にV8を攟棄するずいう事実に぀いおは、サヌビスの盞互䜜甚がブラりザずわずかに異なる特異性を持っおいるずいう理由だけでは蚀いたせん。 しかし、高品質のツヌルにより、Microsoftがコミュニティ、特にこのセグメントでリヌダヌシップを取り戻す非垞に興味深い機䌚に泚目しおいたす。



それたでの間、Node.js v7.xを積極的に埅っおいたす。これは、最終的にasync-awaitをもたらすこずを玄束したす。



むリダ・カンタヌ 、JavaScript.ruの䜜成者、ロシアで最初のプロのJS蚀語教垫の䞀人







Node.jsの開発速床はどれくらいですか 珟圚のペヌスに満足しおいたすか



珟圚、Node.JSは非垞に高速に開発されおいたす。Node.JS自䜓ずJavaScript蚀語および関連むンフラストラクチャの䞡方です。



もちろん、私はすぐに新しい機胜を導入したいず思いたすが、状況は非垞に急速に倉化しおいたす。 たずえば、コヌルバックスタむルは最近、promises + generatorsに倉曎され、async / awaitは来幎それらを眮き換えたす。 コヌドを曞くずきは、埌で曞き盎さないように、これを芚えおおく必芁がありたす。



IT䌁業の深刻な発展ずいう芳点から、その関連性、人気をどのように評䟡したすか それはどの皋床正圓化されたすか Node.jsはどのプロゞェクトに適しおいたすか



たくさんのツヌルがありたす。 遞択は個人の奜みに倧きく䟝存したす。

Node.JSのいく぀かの利点



1パフォヌマンスの点で高速です。 もちろん、より高速な蚀語、特に厳密な型指定でコンパむルされた蚀語もありたすが、抂しお-Node.JSはかなり高速です。 原則ずしお、Node.JSのサヌビスは、PHPたたはRubyで蚘述されたものよりも高速です。



Node.JSは、その䜜成以来、デヌタが「飛ぶ」同時接続が倚数あるアプリケヌションに䜿甚されおきたした。 これにより、それぞれ、問題もありたせん。



2その開発も非垞に高速です。



3Webアプリケヌションの開発時にフロント゚ンドずバック゚ンドの䞡方でJavaScriptを䜿甚するず、あちこちで1぀のコヌドを䜿甚できたす。 同型アプリケヌション-それだけです。 たた、開発者が1぀の蚀語を䜿甚する方が䟿利です。 最新の改善の埌、JavaScriptはより良くなりたした。



Node.js開発者垂堎はどのように倉化したしたか 少ないですか、倚いですか 圌らの仕事の質がどのように倉わったず思いたすか



申し蚳ありたせんが、「マヌケット」を远跡しおいたせん。 優秀な開発者は垞に少数です。 Node.JSに関しおは、通垞、完成したものを芋぀けるよりも成長する方が簡単です。



Node.jsの競合他瀟に名前を付けるこずはできたすか 圌らはどれくらい匷いですか



Node.JSには、JavaScriptプラットフォヌム間で深刻な競争盞手はいたせん。 他の蚀語に぀いお話す堎合、遞択はタスクず、開発者の個人的な奜みに䟝存したす。 人々がコヌディングしたいもの。



Node.jsの今埌5幎間の芋通しは



珟圚、すべおが非垞に迅速に開発されおおり、5幎は長い時間です。 珟圚の傟向を芋るず、Node.JSは急速に前進しおいたす。 䞀方、Node.JSの重芁な利点は、特にブラりザヌレベルでJavaScriptが唯䞀のクロスブラりザヌ開発蚀語であるこずです。



おそらく将来、WebAssembly暙準が導入され、この利点が奪われるこずになりたす。 䞀方、これが発生したずしおも、すぐにではなく、Node.JSはその時たでに成長したす。 おそらく、圌にずっおのこの利点はそれほど重芁ではないでしょう。



All Articles