Belajar NestJS - Sejarah, Latar Belakang & Mengapa Membutuhkan NestJS
Episode 1 of 24

Belajar NestJS - Sejarah, Latar Belakang & Mengapa Membutuhkan NestJS

Episode ini menelusuri evolusi backend Node.js dari Express hingga kelahiran NestJS, tujuan arsitektur modular dan scalable, serta perbandingan dengan Express, Koa, dan framework backend lain untuk memahami kapan dan mengapa NestJS diperlukan.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Sebelum menulis kode NestJS, penting untuk memahami mengapa framework ini ada. NestJS tidak lahir dari kekosongan — dia adalah jawaban atas masalah nyata yang dihadapi pengembang backend Node.js selama bertahun-tahun.

Episode 1 membahas evolusi backend Node.js, latar belakang kelahiran NestJS, tujuan arsitekturnya, serta perbandingan dengan Express, Koa, dan framework lain. Dengan pemahaman ini, kalian akan tahu kapan NestJS menjadi pilihan yang tepat.

Sejarah dan Evolusi Backend Node.js

Awal Mula Node.js dan Express

Node.js dirilis tahun 2009 membawa paradigma event-driven dan non-blocking I/O ke dunia JavaScript. Di atasnya, Express muncul sebagai framework web minimalis yang sangat fleksibel. Express sukses besar karena sederhana, namun fleksibilitasnya menjadi masalah saat proyek tumbuh besar.

JSServer Express yang minimal
const express = require("express");
 
const app = express();
 
app.get("/", (req, res) => {
  res.send("Hello World");
});
 
app.listen(3000);

Express tidak memaksakan struktur apa pun. Aplikasi kecil memang nyaman, tetapi saat tim besar mengerjakan fitur yang banyak, kode menjadi sulit dirawat karena setiap developer bisa menulis dengan gaya masing-masing.

Kelahiran NestJS

NestJS diciptakan oleh Kamil Myśliwiec dan pertama kali dirilis tahun 2017. Kamil terinspirasi arsitektur Angular — framework frontend dengan struktur modular yang tegas. Ia membawa pola tersebut ke backend: TypeScript sebagai bahasa utama, dependency injection, dan struktur project yang sudah teratur sejak awal.

Menampilkan versi NestJS
nest --version

NestJS lahir dengan misi menjadikan pengembangan backend Node.js lebih terstruktur, scalable, dan mudah diuji — tanpa mengorbankan kekuatan ekosistem Node.js yang sudah ada. Perintah nest --version di atas memverifikasi bahwa CLI dan seluruh toolchain siap dipakai.

Perkembangan NestJS dari Masa ke Masa

Sejak rilis pertama, NestJS berkembang lewat rilis mayor yang stabil: versi 8 menambah dukungan Fastify dan GraphQL yang lebih matang, versi 9 memperkuat module system dan logging, sedangkan versi 10 dan 11 membawa penyempurnaan performa, dukungan Node.js LTS terbaru, serta integrasi yang lebih erat dengan ekosistem modern. Setiap rilis mayor menjaga kompatibilitas dengan versi sebelumnya sehingga migrasi antar versi terasa mulus.

Mengapa Membutuhkan NestJS

Masalah Struktur di Proyek Besar

Pendekatan tradisional di Node.js umumnya memakai file route yang panjang dan handler yang mencampur logika bisnis dengan detail HTTP. Masalah yang dipecahkan NestJS: aplikasi enterprise-ready dengan struktur yang konsisten, boundary antar modul yang jelas, dan konvensi yang dipahami seluruh tim.

JSStruktur modular ala NestJS
@Module({
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

Dengan pola modul, setiap domain aplikasi hidup di tempatnya sendiri. Kontroler menangani request, service menangani logika, dan modul membatasi ruang lingkup.

Dependency Injection dan Testing

NestJS membangun dependency injection container yang mengelola dependensi antar class secara otomatis. Ini memudahkan testing karena kita bisa mengganti dependensi dengan mock. Testing bukan fitur tambahan, melainkan bagian dari arsitektur sejak awal. Contoh provider yang disuntikkan akan kita lihat langsung saat membahas controllers dan services di episode 4 dan 5.

Dukungan Ekosistem Modern

NestJS menyediakan dukungan resmi untuk GraphQL, microservices, serverless, dan WebSocket. Framework ini tidak mengunci kalian pada satu gaya — kalian bisa membangun REST API sederhana atau sistem microservices yang kompleks dengan fondasi yang sama. Dukungan resmi ini berarti kalian tidak perlu merangkai banyak library sendiri — semuanya sudah terintegrasi rapi dengan modul NestJS.

Perbandingan dengan Framework Lain

NestJS vs Express dan Koa

Express dan Koa bersifat unopinionated: memberi kebebasan penuh tapi tanpa struktur bawaan. NestJS bersifat opinionated: memberikan konvensi dan arsitektur. Untuk prototipe kecil, Express lebih cepat. Untuk aplikasi yang diprediksi tumbuh besar, NestJS menang di sisi maintainability.

NestJS vs Framework Lain

Jika membandingkan dengan framework bahasa lain seperti Spring Boot di Java atau Laravel di PHP, NestJS adalah padanan modern di ekosistem Node.js: modular, memiliki dependency injection, dan dirancang untuk aplikasi enterprise. Perbedaan utamanya adalah NestJS memakai TypeScript dengan sintaks dekorator yang ringkas.

Pendekatan Tradisional vs NestJS

Pendekatan tradisional dengan Express menempatkan seluruh logika dalam satu file — routing, validasi, dan logika bisnis bercampur. NestJS memisahkannya secara tegas: controller untuk HTTP, service untuk logika, dan module untuk batas domain. Ketika aplikasi kecil, perbedaan ini tidak terasa. Ketika aplikasi besar dengan puluhan endpoint, pemisahan ini menyelamatkan waktu maintenance.

JSPemisahan peran di NestJS
// controller: menangani HTTP
@Controller("users")
export class UserController {
  constructor(private readonly userService: UserService) {}
}
 
// service: menangani logika bisnis
@Injectable()
export class UserService {
  findAll(): string[] {
    return ["Arman", "Budi"];
  }
}

Perhatikan dekorator @Controller dan @Injectable — keduanya menjadi penanda peran masing-masing class dalam arsitektur. Ini adalah bentuk awal struktur enterprise-ready yang ditawarkan NestJS sejak project pertama dibuat.

Penutup

Episode 1 menunjukkan bahwa NestJS lahir untuk menjawab masalah struktur dan maintainability di ekosistem Node.js. Dia membawa pola enterprise yang sudah matang — modularitas, dependency injection, dan testing — tanpa meninggalkan ekosistem JavaScript.

Inti yang harus dibawa pulang:

  • Express minimalis tetapi tidak memaksa struktur yang jelas.
  • NestJS dirilis 2017 oleh Kamil Myśliwiec dengan inspirasi arsitektur Angular.
  • Tujuan utamanya adalah arsitektur modular, scalable, dan maintainable.
  • Dependency injection dan testing adalah bagian dari desain inti.
  • NestJS mendukung GraphQL, microservices, dan serverless secara resmi.
  • Pilih NestJS saat aplikasi diprediksi tumbuh besar dan butuh konvensi tim.
  • NestJS membedakan controller, service, dan module secara tegas sejak awal.

Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur utama — bagaimana NestJS bekerja di balik layar sebagai wrapper Express, komponen module-controller-provider, dependency injection container, lifecycle aplikasi, dan alur kerja pipes, guards, filters, serta interceptors. Pastikan pemahaman kalian tentang dekorator sudah solid!

Belajar NestJS - Sejarah, Latar Belakang & Mengapa Membutuhkan NestJS | Belajar NestJS