Dari Ide di Laptop ke Aplikasi yang Benar-Benar Bisa Dipakai Orang

Setiap aplikasi berawal dengan cara yang sama: sebagai ide di kepala seseorang. Mungkin Anda ingin memecahkan masalah yang Anda perhatikan, atau tim Anda meminta Anda membangun sesuatu yang baru. Apa pun alasannya, pada suatu saat Anda membuka laptop dan mulai menulis kode.

Di laptop Anda, semuanya terasa mudah. Anda menjalankan aplikasi, melihat antarmuka, mencoba beberapa fitur, dan semuanya berfungsi. Jika ada yang rusak, Anda perbaiki dan jalankan lagi. Hanya Anda yang melihatnya. Tidak ada orang lain yang terganggu jika aplikasi crash atau memunculkan error.

Namun, ide membangun aplikasi jarang berhenti di laptop Anda. Anda membangunnya agar orang lain bisa menggunakannya — teman, klien, rekan kerja di kantor, atau publik. Saat orang lain perlu mengaksesnya, muncullah pertanyaan yang sangat mendasar: di mana aplikasi ini akan berjalan sehingga orang lain bisa menjangkaunya?

Laptop Anda bukan tempat yang tepat. Laptop bisa mati, kehabisan baterai, dibawa pulang, atau terhubung ke jaringan yang memblokir akses dari luar. Jika aplikasi Anda hanya berjalan di mesin Anda, orang lain hanya bisa menggunakannya saat Anda duduk di depannya dan jaringan Anda mengizinkan akses eksternal. Itu tidak praktis dan tidak andal.

Kebutuhan Nyata Pertama: Tempat untuk Berjalan

Sebuah aplikasi perlu tinggal di suatu tempat yang tetap menyala, tetap terhubung ke jaringan, dan dapat dijangkau oleh siapa pun yang Anda izinkan. Tempat itu disebut server. Server bisa berupa komputer fisik yang Anda kelola sendiri, atau mesin virtual yang Anda sewa dari penyedia cloud. Yang penting adalah server adalah komputer yang tugas utamanya menjalankan aplikasi dan melayani permintaan dari pengguna.

Proses menempatkan aplikasi Anda ke server agar orang lain bisa mengaksesnya adalah kebutuhan nyata pertama yang muncul dalam pengiriman perangkat lunak. Kebutuhan ini sering disebut hosting. Anda perlu memutuskan di mana aplikasi akan di-host, bagaimana cara mengirim kode Anda ke server itu, dan bagaimana memastikan aplikasi benar-benar berjalan setelah sampai di sana.

Server yang digunakan untuk menjalankan aplikasi yang diandalkan oleh pengguna nyata disebut lingkungan produksi. Kata "produksi" menandakan bahwa ini bukan lagi area uji coba. Di sinilah aplikasi harus bekerja dengan benar karena pengguna nyata bergantung padanya. Jika aplikasi error di produksi, pengguna tidak bisa menggunakan fitur-fiturnya. Jika benar-benar down, pengguna tidak bisa mengakses layanan sama sekali.

Perbedaan Antara Laptop Anda dan Produksi

Kesenjangan antara laptop Anda dan lingkungan produksi sangat mendasar. Di laptop Anda, Anda memiliki kendali penuh dan tidak ada konsekuensi besar jika aplikasi rusak. Di produksi, aplikasi harus tetap berjalan, harus dapat diakses, dan harus tetap stabil. Konsekuensi kegagalan dirasakan langsung oleh pengguna.

Di sinilah banyak pengembang pertama kali menyadari sesuatu yang penting: membuat aplikasi berjalan di laptop sendiri adalah urusan pribadi. Membuat aplikasi dapat digunakan oleh orang lain adalah tantangan yang sama sekali berbeda. Anda membutuhkan tempat untuk menjalankannya, cara untuk mengirimkannya ke sana, dan keyakinan bahwa aplikasi akan bekerja dengan benar setelah tiba.

Bagaimana Sebenarnya Cara Mengirim Aplikasi ke Server?

Setelah Anda memiliki server, pertanyaan alami berikutnya adalah: bagaimana cara mengirim aplikasi ke sana? Apakah cukup dengan menyalin file? Atau ada yang lebih dari itu?

Jawabannya tergantung pada jenis aplikasi yang Anda buat. Jika itu adalah situs web statis sederhana, menyalin file HTML mungkin sudah cukup. Namun, sebagian besar aplikasi lebih kompleks. Mereka membutuhkan dependensi yang diinstal, file konfigurasi yang diatur, database yang terhubung, dan variabel lingkungan yang ditentukan. Hanya menyalin kode jarang cukup.

Di sinilah konsep deployment berperan. Deployment adalah proses mengambil aplikasi Anda dari sumbernya — biasanya repositori kode — dan membuatnya berjalan di lingkungan target. Ini termasuk menyalin file yang tepat, menginstal dependensi, menjalankan langkah-langkah penyiapan, dan memulai proses aplikasi sehingga mulai menerima permintaan.

Deployment sederhana mungkin terlihat seperti ini:

  • Tarik kode terbaru dari repositori ke server.
  • Instal dependensi baru apa pun.
  • Jalankan migrasi database jika skema berubah.
  • Mulai ulang proses aplikasi.

Bahkan urutan sederhana ini pun bisa salah. Bagaimana jika server menjalankan sistem operasi yang berbeda dari laptop Anda? Bagaimana jika versi dependensi bertentangan dengan sesuatu yang sudah terinstal? Bagaimana jika migrasi database memakan waktu lebih lama dari yang diperkirakan dan pengguna melihat error?

Membuatnya Tersedia vs. Membuatnya Berfungsi

Ada perbedaan lain yang perlu diperhatikan sejak awal: menempatkan aplikasi di server tidak sama dengan membuatnya tersedia bagi pengguna.

Anda dapat menyalin semua file ke server, memulai prosesnya, dan tetap memiliki aplikasi yang tidak dapat dijangkau siapa pun. Mungkin firewall server memblokir port. Mungkin nama domain tidak mengarah ke alamat IP yang benar. Mungkin aplikasi terikat ke localhost, bukan ke antarmuka jaringan. Mungkin sertifikat SSL kedaluwarsa dan browser menolak untuk terhubung.

Membuat aplikasi benar-benar dapat digunakan berarti lebih dari sekadar deployment. Itu berarti memastikan jaringan dikonfigurasi dengan benar, catatan DNS mengarah ke tempat yang tepat, aplikasi mendengarkan di alamat dan port yang benar, dan layanan tetap berjalan bahkan setelah server di-restart.

Inilah mengapa lingkungan produksi tidak pernah hanya tentang kode. Mereka melibatkan jaringan, administrasi sistem, pemantauan, dan seringkali tim atau orang terpisah yang bertanggung jawab menjaga infrastruktur tetap sehat.

Apa yang Terjadi Selanjutnya

Setelah aplikasi Anda berjalan di produksi dan pengguna dapat mengaksesnya, perjalanan tidak berhenti. Pengguna akan menemukan bug. Mereka akan meminta fitur baru. Seseorang akan menemukan kerentanan keamanan. Bisnis akan ingin menambahkan alur pembayaran atau mengubah antarmuka pengguna.

Setiap perubahan ini berarti Anda perlu memperbarui aplikasi di produksi. Dan setiap pembaruan membawa risiko. Fitur baru mungkin merusak sesuatu yang lain. Migrasi database mungkin merusak data. Perubahan konfigurasi mungkin membuat aplikasi lebih lambat.

Di sinilah kebutuhan akan proses yang andal dan dapat diulang menjadi jelas. Anda tidak bisa mengandalkan penyalinan file secara manual dan berharap semuanya berfungsi setiap kali Anda melakukan perubahan. Anda membutuhkan sistem yang membangun, menguji, dan men-deploy aplikasi Anda secara konsisten.

Sistem itulah yang akan dijelajahi oleh seri artikel selanjutnya. Namun, sebelum kita sampai ke sana, ada baiknya memeriksa apakah pengaturan Anda saat ini sudah memiliki dasar-dasarnya.

Pemeriksaan Praktis Cepat

Jika Anda saat ini menjalankan aplikasi yang digunakan orang lain, tanyakan pada diri Anda pertanyaan-pertanyaan ini:

  • Apakah Anda tahu persis server mana yang menjalankan aplikasi?
  • Bisakah Anda men-deploy versi baru dalam waktu kurang dari 30 menit dengan percaya diri?
  • Jika server crash, bisakah Anda memulihkan aplikasi dan datanya?
  • Apakah Anda tahu apa yang terjadi saat Anda me-restart server?
  • Bisakah Anda melakukan roll back ke versi sebelumnya jika ada yang salah?

Jika Anda menjawab "tidak" untuk salah satu dari ini, Anda tidak sendirian. Sebagian besar tim memulai dengan proses manual dan meningkat seiring waktu. Yang penting adalah mengenali celah-celah ini dan mulai menutupnya satu per satu.

Intisari

Membuat aplikasi yang benar-benar bisa dipakai orang dimulai dengan satu kebenaran sederhana: laptop Anda bukanlah produksi. Kesenjangan antara menjalankan kode secara lokal dan menjalankannya untuk pengguna nyata adalah tempat sebagian besar kompleksitas dalam pengiriman perangkat lunak berada. Sebelum mengkhawatirkan pipeline, otomatisasi, atau strategi deployment tingkat lanjut, pastikan Anda memahami di mana aplikasi Anda berjalan, bagaimana aplikasi itu sampai ke sana, dan apa yang dibutuhkan agar tetap berjalan. Segala sesuatu yang lain dibangun di atas fondasi itu.