
同僚の皆さん、こんにちは!
この記事が書かれる約1年前に、私は燃え尽き始めているように感じ始めました。ずっと前に工芸品に変わった仕事は、すべてのプログラマーに馴染みのある先駆的な感覚を学生にもたらすことをやめ、陶酔感をもたらしました。この気持ちのために、新しい知識のために、私はかつてモニターに1日18時間座っていました。久しぶりですが…最近またこの気持ちを体験しました!最初は静かで、長い休憩のために珍しいものでしたが、時間が経つにつれて燃え上がり、炎上しました!
あなたが私と同じで、約12年の経験、約30歳のプログラマーで、自分のストールスタックに残っている場合(特にC#.Net MVCの場合)、猫の下であなたを招待します。若い方は事前に準備しておくと便利だと思います。
背景は、私がC#.Netスタック(ASP、MVC、Windowsサービス)で長い間開発してきたという事実から始まります。私はフルスタック開発者のようなものと呼ぶことができるように思えます:データベース、バックエンド、フロントエンド、さらにはオリンピックプログラミング-私はこれらすべてを自分自身に通しました。私がプロだとは言いませんが、.Netに関しては何かで驚かされるのは難しいです。いいえ、次の会議などには参加しませんでしたが、大学で何人かの昔の人と勉強しましたが、そのうちの何人かは個人的に知っており、PEで立ち上げた中規模プロジェクトの数は30を超えています。
カタの前に示されていたように、私が燃え尽きること。新しいプロジェクトが実装のために私たちにもたらされたとき(大きすぎない-これは重要です!)、最初の会議ですでに私は私たちが何をどのように行うかを知っていました-退屈です。
まだ気づいていませんか?あなたが若いなら、必ず読み続けてください、あなたは先にすべてを持っています。あなたが私より先に進んだ場合は、読み続けてください、そしてコメントであなたの経験について教えてください。
それで、私は私の前に約半年の面白くない仕事をしました。しかし、私たちは数か月前にプロジェクトを完了し、たくさんのクールなことを学び、関連する分野でポンプを使って、たくさんの楽しみを得ました!遅れることはありません...新しいプロジェクトは完全に新しいスタックで作成されました:Node.js + React。
同僚は、ハプを予見して、スタックを変更する決定が自発的に行われなかったことをすぐに予約する必要があります。私は数ヶ月間、小さなプロジェクトに関しては.NetMVCは最良の選択ではないという考えを持ってきました。私は周りを見回しながら、代替案を探していました。Node.jsとReactの組み合わせについては、C#よりもサーバー側とクライアント側の方がシャープなツールだと思いましたが、すでに最初の経験は私の期待をすべて上回りました。
ルールを定めましょう
まず、記事の重要なアイデア(.NetMVCスタックとNode.JS + Reactの置き換え)が正しいと見なすことができるいくつかの詳細と条件を明確にする必要があると思います。私は極端に行き、そのようなイベントがすべての場合に役立つと主張する傾向はないので、ここに最初の制限の短いリストがあります:
- 最大3〜5人のプログラマーが関与するプロジェクト。
- バックエンドでの重要な計算と複雑なロジックの欠如。
- 可用性および/またはバックエンドとフロントエンドを統合する必要がある。
最大3〜5人のプログラマーが関与するプロジェクト
この制限は、5人以上の大規模なチームの参加により、.Net(ASP.NETだけでなくCore)の利点なしでは実装が困難な深刻なエンタープライズアプリケーションについて話しているという想定から生じました。以下では、長所と短所について説明します。
バックエンドでの本質的な計算と複雑なロジックの欠如
計算や多かれ少なかれ複雑なビジネスロジックを実装するために、マルチスレッドやLinqなしで動的に型指定された言語であるJavaScript(またはTypeScriptでさえ、あなたを救うことはできません)を使用することは、単に不可能です-言語は単にこのために設計されていません C#についても同じことは言えません。顕微鏡で釘を打ち込まないように、機器の詳細を考慮することが重要です。
可用性および/またはバックエンドとフロントエンドを統合する必要がある
統一は、参入の障壁、予算、期限を下げるのに役立ちます。しかし、スティックには常に2つの端があり、実際に必要のない「効果的なマネージャー」の側の急なステップは損失につながる可能性があります。
これらの制限を念頭に置いて、プロジェクトのエコシステムへの適用性を評価するための次のチェックリストをお勧めします。
チェックリスト
開発および保守コスト
あなたの予算は、低い人材バーと低いメンテナンスコストを必要としますか?
小さな会社やプログラマーのチームがある場合、開発ツールの複雑さは貴重なリソースを消費します。Node.js + Reactスタックには、.NetMVCまたはCoreに比べていくつかの明確な利点があります。
- バックエンドとフロントエンドの統合-スペシャリストは、C#スタックの場合よりも簡単かつ簡単にフルスタックとして作業できるようになります。
- サーバーリソースの要件が少ない-Node.jsは.Netほど貪欲ではなく、真にクロスプラットフォームです。
- 開発速度は速くなります-タイピングがないため、製品の最初のバージョンのリリース率は大幅に増加します。
MVP(最小実行可能製品)およびPoC(概念の証明)の発売
MVPまたはPoCの立ち上げの締め切りはありますか?
MVPまたはPoCの実装速度に関しては、Node.js + Reactスタックは間違いなく.Netスタックよりも優れた位置にあります。開発とコンテンツのコストに関する前のポイントを考慮すると、MVPを起動するタスクには、高速、安価、効果的な相乗効果が見られます。さらに、Node.jsの安定性は高レベルであり、満足のいくものではありません。
開発環境
「軽い」IDEの機能で十分ですか?
軽量IDEは、Reactと組み合わせたNode.jsに最適です。たとえば、VSコードは、開発中に多くの電力を必要とせず、クロスプラットフォームエディターであり、無料で配布されます。その機能は、バックエンドとフロントエンドの両方を快適に開発するのに十分です。
C#のプロジェクトでは、Visual Studio Community(共有ウェアIDE)を使用できますが、すでにリソースが必要であり、それほど高速ではなく、クロスプラットフォームでもありません。
言語タイピング
入力が不足しているため、プロジェクトに高品質の開発とサポートを提供できますか?
言語でタイプすることの欠如は両刃の剣です。一方では、このアプローチにより、コードの量を減らすことで開発速度を倍増させることができます。一方で、テストの量は倍増しています。さらに、一部のエラーは操作中にのみ表示され、すべてのテストに合格する場合があります。入力せずに大規模なプロジェクトを行うことは困難になります。
パフォーマンスとスケーラビリティ
箱から出して完全なマルチスレッドを捨てる準備はできていますか?あなたのプロジェクトには複雑な計算やビジネスロジックが欠けていますか?
ご存知のように、Node.jsはシングルスレッドのイベント駆動型モデルを実装しています。これは多数のクエリには最適ですが、計算の並列化や複雑なビジネスロジックの実装にはまったく適していません。したがって、Node.jsでバックエンドのスタックを選択するときは、その作業の微妙な違いに注意する必要があります。
クロスプラットフォーム
箱から出してクロスプラットフォームが必要ですか?
はい、.Netの下に.Net Coreがあり、クロスプラットフォームであると主張しています。しかし、それはまだ.NetMVCではありません。.Net MVC用の既製のコンポーネントを大量に組み立てた場合、.NetCoreへの移行は簡単ではありません。Node.jsを使用すると、これについて心配する必要はなく、顧客の要件に応じて、どのプラットフォームでも開発を使用できます。
結論
Node.jsモジュールの豊富な世界により、企業システムでの承認やrest-apiからメッセンジャーのチャットボットまで、ほとんどすべての適用タスクを効率的かつコスト効率よく実装できます。
Node.jsアプリを任意のOSにデプロイすることは、喜びであり、いくつかのコマンドです。また、サーバー容量の必要性は.Netと比較して大幅に削減でき、専用のサーバーコンフィギュレーターで「リソースの支払い」を安全に選択できます。
スタックを変更しようとしましたか?
