Mengubah tumpukan saya dari hari Senin



Salam rekan!



Sekitar setahun sebelum artikel ini ditulis, saya mulai merasa seperti mulai kehabisan tenaga. Bekerja, yang dahulu kala berubah menjadi sebuah kerajinan, tidak lagi menghadirkan perasaan mahasiswa merintis, akrab bagi setiap programmer, yang membawa euforia. Demi perasaan ini, demi pengetahuan baru, saya pernah duduk di depan monitor selama 18 jam sehari. Sudah lama berlalu ... tetapi baru-baru ini saya mengalami perasaan ini lagi! Awalnya tenang, tidak biasa karena jeda yang lama, tetapi seiring waktu itu menyala dan terbakar!



Jika Anda sama dengan saya, programmer dengan pengalaman sekitar 12 tahun, sekitar 30 tahun, berlama-lama di stall stack Anda sendiri (terutama jika itu C # .Net MVC), maka saya mengundang Anda di bawah cat. Bagi yang lebih muda, saya rasa akan berguna juga untuk bersiap-siap sebelumnya.



Latar belakang dimulai dengan fakta bahwa saya telah mengembangkan C #. Net stack (ASP, MVC, layanan windows) untuk waktu yang lama. Bagi saya, saya dapat disebut sebagai developer full-stack: database, backend, frontend, dan bahkan pemrograman Olympiad - saya melewati semua ini melalui diri saya sendiri. Saya tidak akan mengatakan bahwa saya seorang profesional, tetapi sulit untuk mengejutkan saya dengan sesuatu yang berkaitan dengan .Net. Tidak, saya tidak menghadiri. Konferensi berikutnya dan sejenisnya, tetapi saya belajar dengan beberapa orang lama di universitas, saya mengenal beberapa dari mereka secara pribadi, dan jumlah proyek skala menengah yang telah saya luncurkan di pelajaran olahraga telah melebihi 30.



Seperti yang ditunjukkan sebelum kata, menurut saya yang saya bakar. Ketika sebuah proyek baru dibawa kepada kami untuk implementasi (tidak terlalu besar - ini penting!), Pada pertemuan pertama saya sudah tahu apa dan bagaimana kami akan melakukannya - membosankan.



Apakah kamu belum mengenali dirimu sendiri? Jika Anda lebih muda, pastikan untuk terus membaca, Anda memiliki segalanya di depan. Jika Anda telah melangkah lebih jauh dari saya, teruslah membaca, dan di komentar ceritakan kepada kami tentang pengalaman Anda.



Jadi, saya memiliki sekitar setengah tahun pekerjaan yang tidak menarik di depan saya. Tapi kami menyelesaikan proyek beberapa bulan sebelumnya, mempelajari banyak hal paling keren, meningkatkan bidang terkait, dan bersenang-senang! Saya tidak akan menunda ... proyek baru dibuat di tumpukan yang benar-benar baru: Node.js + React.



Kolega, yang meramalkan akan terjadi, harus segera membuat reservasi agar keputusan untuk mengubah tumpukan tidak datang secara spontan. Selama beberapa bulan saya telah membawa gagasan bahwa .Net MVC bukanlah pilihan terbaik dalam hal proyek kecil. Saya mencari alternatif, melihat-lihat. Tentang kombinasi Node.js dan React, saya pikir ini adalah alat yang lebih diasah untuk sisi server dan sisi klien daripada C #, tetapi pengalaman pertama sudah melebihi semua harapan saya.



Mari kita tetapkan aturannya



Pertama, saya menganggap perlu untuk mengklarifikasi beberapa detail dan ketentuan di mana gagasan utama artikel - mengganti tumpukan .Net MVC dan Node.JS + React - dapat dianggap benar. Saya tidak cenderung bertindak ekstrem dan berpendapat bahwa dalam semua kasus acara seperti itu akan berguna, jadi berikut adalah daftar singkat batasan awal:



  • Proyek yang melibatkan hingga 3-5 pemrogram;
  • Kurangnya perhitungan penting dan logika yang rumit di backend;
  • Ketersediaan dan / atau kebutuhan untuk menyatukan backend dan frontend;


Proyek yang melibatkan hingga 3-5 pemrogram



Batasan ini muncul karena asumsi bahwa dengan partisipasi tim besar yang terdiri dari 5 orang atau lebih, kita berbicara tentang aplikasi perusahaan yang serius yang akan sulit diimplementasikan tanpa keunggulan .Net (dan tidak hanya ASP.NET, tetapi juga Core). Kami akan berbicara tentang kelebihan dan kekurangannya sendiri di bawah ini.



Kurangnya komputasi penting dan logika kompleks di backend



Menggunakan JavaScript (atau bahkan TypeScript, itu tidak akan menyelamatkan Anda), bahasa yang diketik secara dinamis tanpa multithreading dan tanpa Linq, untuk mengimplementasikan kalkulasi atau logika bisnis yang lebih atau kurang kompleks, sama sekali tidak mungkin - bahasanya tidak dirancang untuk ini. Hal yang sama tidak dapat dikatakan tentang C #. Penting untuk memperhitungkan spesifikasi instrumen agar tidak paku paku dengan mikroskop.



Ketersediaan dan / atau kebutuhan untuk menyatukan backend dan frontend



Penyatuan akan membantu menurunkan hambatan masuk, anggaran dan tenggat waktu. Tetapi tongkat itu selalu memiliki dua ujung, dan langkah terburu-buru di pihak "manajer yang efektif" tanpa kebutuhan nyata dapat menyebabkan kerugian.



Dengan mengingat keterbatasan ini, saya menyarankan daftar periksa berikut, dengan melaluinya Anda dapat menilai penerapannya pada ekosistem proyek Anda.



Daftar periksa



Biaya pengembangan dan pemeliharaan



Apakah anggaran Anda memerlukan bilah bakat yang rendah dan biaya kepemilikan yang rendah?



Jika Anda memiliki perusahaan kecil atau tim pemrogram, kerumitan alat pengembangan membutuhkan sumber daya yang berharga. Tumpukan Node.js + React memiliki sejumlah keunggulan berbeda dibandingkan .Net MVC atau Core: 



  1. Penyatuan backend dan frontend - spesialis akan dapat bekerja sebagai tumpukan penuh lebih mudah dan lebih mudah daripada jika itu adalah tumpukan C #;
  2. Persyaratan sumber daya server yang lebih sedikit - Node.js tidak rakus seperti .Net dan benar-benar lintas platform;
  3. Kecepatan pengembangan lebih tinggi - karena kurangnya pengetikan, tingkat rilis versi pertama produk meningkat secara signifikan.




Peluncuran MVP (produk yang layak minimum) dan PoC (bukti konsep)



Apakah tenggat waktu Anda untuk peluncuran MVP atau PoC?



Dalam hal kecepatan penerapan MVP atau PoC, tumpukan Node.js + React tidak diragukan lagi memiliki posisi yang lebih baik daripada tumpukan .Net. Mempertimbangkan poin sebelumnya tentang biaya pengembangan dan konten, muncul sinergi untuk tugas peluncuran MVP: cepat, murah, efisien. Selain itu, stabilitas Node.js berada pada level yang tinggi dan tidak memuaskan.



Pengembangan lingkungan



Akankah fungsionalitas IDE "ringan" cukup untuk Anda?



IDE yang ringan sangat bagus untuk Node.js bersama dengan React. Misalnya, VS Code tidak memerlukan banyak kekuatan pengembangan, editor lintas platform, didistribusikan secara gratis, fungsinya cukup untuk mengembangkan backend dan frontend dengan nyaman.

Untuk proyek di C #, Anda dapat menggunakan Komunitas Visual Studio - juga IDE shareware, tetapi itu sudah akan membutuhkan sumber daya, tidak akan secepat dan tidak lintas platform.



Pengetikan bahasa



Dapatkah Anda memberikan pengembangan dan dukungan berkualitas tinggi untuk proyek Anda, mengingat kurangnya pengetikan?



Kurangnya mengetik dalam suatu bahasa merupakan pedang bermata dua. Di satu sisi, pendekatan ini memungkinkan Anda menggandakan kecepatan pengembangan dengan mengurangi jumlah kode. Di sisi lain, volume pengujian mengalikan. Selain itu, beberapa kesalahan mungkin hanya muncul selama operasi, berhasil melewati semua tes. Menjadi sulit untuk melakukan proyek besar tanpa mengetik.



Performa dan skalabilitas



Apakah Anda siap membuang multithreading penuh dari kotak? Apakah proyek Anda tidak memiliki perhitungan yang rumit atau logika bisnis?



Seperti yang Anda ketahui, Node.js mengimplementasikan model berbasis peristiwa single-threaded. Ini bagus untuk sejumlah besar kueri, tetapi sama sekali tidak cocok untuk memparalelkan komputasi atau menerapkan logika bisnis yang kompleks. Jadi, saat memilih tumpukan untuk backend di Node.js, seseorang harus menyadari nuansa kerjanya.



Lintas platform



Perlu cross-platform out of the box?



Ya, di bawah .Net ada .Net Core, yang mengklaim sebagai lintas platform. Tapi itu masih bukan MVC .Net. Jika Anda telah merakit sejumlah besar komponen siap pakai untuk .Net MVC, transisi ke .Net Core tidak akan mudah. Menggunakan Node.js Anda tidak perlu khawatir tentang itu dan menggunakan perkembangan Anda untuk platform apa pun, tergantung pada kebutuhan pelanggan.



Kesimpulan



Dunia modul Node.js yang kaya akan memungkinkan Anda untuk secara efisien dan hemat biaya mengimplementasikan hampir semua tugas aplikasi dari otorisasi dalam sistem perusahaan dan rest-api hingga chat bot utusan.



Menerapkan aplikasi Node.js di OS apa pun adalah kesenangan dan beberapa perintah. Dan kebutuhan akan kapasitas server dapat dikurangi dengan urutan besarnya dibandingkan dengan .Net, dan Anda dapat dengan aman memilih "bayar untuk sumber daya" di konfigurator server khusus kami .



Sudahkah Anda mencoba mengubah tumpukan?






All Articles