Knowledege Content
Insinyur perangkat lunak tampaknya selalu mendiskusikan front-end dan back-end aplikasi mereka. Tapi apa sebenarnya artinya ini?
Front-end adalah kode yang dijalankan di sisi klien. Kode ini (biasanya HTML, CSS, dan JavaScript) berjalan di browser pengguna dan membuat antarmuka pengguna.
Back-end adalah kode yang berjalan di server, yang menerima permintaan dari klien, dan berisi logika untuk mengirimkan data yang sesuai kembali ke klien. Back-end juga menyertakan database, yang akan terus menyimpan semua data untuk aplikasi. Artikel ini berfokus pada perangkat keras dan perangkat lunak di sisi server yang memungkinkan hal ini.
Apa Clients?
Client adalah segala sesuatu yang mengirim permintaan ke back-end. Mereka sering kali merupakan browser yang membuat permintaan untuk kode HTML dan JavaScript yang akan mereka jalankan untuk menampilkan situs web kepada pengguna akhir. Namun, ada banyak jenis klien: mereka mungkin aplikasi seluler, aplikasi yang berjalan di server lain, atau bahkan alat pintar yang mendukung web.
Apa itu back-end?
Back-end adalah semua teknologi yang diperlukan untuk memproses permintaan yang masuk dan menghasilkan serta mengirim respons ke client. Ini biasanya mencakup tiga bagian utama:
• Server. Ini adalah komputer yang menerima permintaan.
• Aplikasi. Ini adalah aplikasi yang berjalan di server yang mendengarkan permintaan, mengambil informasi dari database, dan mengirimkan respons.
• Data. Database digunakan untuk mengatur dan menyimpan data.
Apa itu server?
Server hanyalah komputer yang mendengarkan permintaan masuk. Meskipun ada mesin yang dibuat dan dioptimalkan untuk tujuan khusus ini, setiap komputer yang terhubung ke jaringan dapat bertindak sebagai server. Bahkan, Anda akan sering menggunakan komputer Anda sendiri sebagai server saat mengembangkan aplikasi.
Apa fungsi inti dari aplikasi?
Server menjalankan aplikasi yang berisi logika tentang cara merespons berbagai permintaan berdasarkan kata kerja HTTP dan Uniform Resource Identifier (URI). Pasangan kata kerja HTTP dan URI disebut rute dan mencocokkannya berdasarkan permintaan disebut perutean.
Beberapa fungsi penangan ini akan menjadi middleware. Dalam konteks ini, middleware adalah kode apa pun yang dijalankan antara server yang menerima permintaan dan mengirim respons. Fungsi middleware ini mungkin memodifikasi objek permintaan, mengkueri database, atau memproses permintaan yang masuk. Fungsi middleware biasanya diakhiri dengan meneruskan kontrol ke fungsi middleware berikutnya, bukan dengan mengirimkan respons.
Akhirnya, fungsi middleware akan dipanggil yang mengakhiri siklus permintaan-respons dengan mengirimkan respons HTTP kembali ke client.
Seringkali, pemrogram akan menggunakan kerangka kerja seperti Express atau Ruby on Rails untuk menyederhanakan logika perutean. Untuk saat ini, anggap saja setiap rute dapat memiliki satu atau banyak fungsi penangan yang dijalankan setiap kali permintaan ke rute tersebut (kata kerja HTTP dan URI) cocok.
Jenis tanggapan apa yang dapat dikirim oleh server?
Data yang dikirim kembali oleh server dapat datang dalam berbagai bentuk. Misalnya, server mungkin menyajikan file HTML, mengirim data sebagai JSON, atau mungkin hanya mengirim kembali kode status HTTP. Anda mungkin pernah melihat kode status "404 - Tidak Ditemukan" setiap kali Anda mencoba menavigasi ke URI yang tidak ada, tetapi masih banyak lagi kode status yang menunjukkan apa yang terjadi saat server menerima permintaan.
Apa itu database, dan mengapa kita perlu menggunakannya?
Database biasanya digunakan di back-end aplikasi web. Basis data ini menyediakan tampilan untuk menyimpan data secara terus-menerus ke memori. Menyimpan data dalam database mengurangi beban pada memori utama CPU server dan memungkinkan data diambil kembali jika server mogok atau kehilangan daya.
Banyak permintaan yang dikirim ke server mungkin memerlukan kueri basis data. Seorang klien mungkin meminta informasi yang disimpan dalam database, atau klien mungkin mengirimkan data dengan permintaan mereka untuk ditambahkan ke database.
Apa sebenarnya API Web itu?
API adalah kumpulan metode komunikasi yang didefinisikan dengan jelas antara komponen perangkat lunak yang berbeda.
Lebih khusus lagi, API Web adalah tampilan yang dibuat oleh back-end: kumpulan titik akhir dan sumber daya yang diekspos titik akhir ini.
API Web ditentukan oleh jenis permintaan yang dapat ditanganinya, yang ditentukan oleh rute yang ditentukannya, dan jenis respons yang diharapkan diterima klien setelah mencapai rute tersebut.
Satu Web API dapat digunakan untuk menyediakan data untuk front-end yang berbeda. Sejak API Web dapat memberikan data tanpa benar-benar menentukan bagaimana data dilihat, beberapa halaman HTML atau aplikasi seluler yang berbeda dapat dibuat untuk melihat data dari API Web.
Prinsip lain dari siklus permintaan-respons:
• Server biasanya tidak dapat melakukan tanggapan tanpa permintaan!
• Setiap permintaan memerlukan tanggapan, meskipun hanya berupa kode status 404 yang menunjukkan bahwa konten tidak ditemukan. Kalau tidak, client Anda akan dibiarkan menggantung (menunggu tanpa batas).
• Server tidak boleh mengirimkan lebih dari satu respons per permintaan. Ini akan membuang kesalahan dalam kode Anda.
Memetakan permintaan
Mari buat semua ini sedikit lebih konkret, dengan mengikuti contoh langkah-langkah utama yang terjadi saat klien membuat permintaan ke server.
1. Alice berbelanja di SuperCoolShop.com. Dia mengklik gambar sampul untuk ponsel cerdasnya, dan peristiwa klik itu membuat permintaan GET ke http://www.SuperCoolShop.com/products/66432.
Ingat, GET mendeskripsikan jenis permintaan (klien hanya meminta data, tidak mengubah apa pun). URI (uniform resource identifier) /products/66432 menentukan bahwa klien mencari informasi lebih lanjut tentang suatu produk, dan produk tersebut memiliki id 66432.
SuperCoolShop memiliki sejumlah besar produk, dan banyak kategori berbeda untuk memfilternya, jadi URI sebenarnya akan lebih rumit dari ini. Tapi ini adalah prinsip umum tentang cara kerja permintaan dan pengidentifikasi sumber daya.
2. Permintaan Alice melintasi internet ke salah satu server SuperCoolShop. Ini adalah salah satu langkah yang lebih lambat dalam proses, karena permintaan tidak bisa lebih cepat dari kecepatan cahaya, dan mungkin jarak tempuh yang jauh. Untuk alasan ini, situs web besar dengan pengguna di seluruh dunia akan memiliki banyak server berbeda, dan mereka akan mengarahkan pengguna ke server yang paling dekat dengan mereka!
3. Server, yang secara aktif mendengarkan permintaan dari semua pengguna, menerima permintaan Alice!
4. Pendengar acara yang cocok dengan permintaan ini (kata kerja HTTP: GET, dan URI: /products/66432) dipicu. Kode yang berjalan di server antara permintaan dan respons disebut middleware.
5. Dalam memproses request, kode server membuat query database untuk mendapatkan informasi lebih lanjut tentang case smartphone ini. Basis data berisi semua informasi lain yang ingin diketahui Alice tentang casing smartphone ini: nama produk, harga produk, beberapa ulasan produk, dan string yang akan memberikan jalur ke gambar produk.
6. Permintaan basis data dijalankan, dan basis data mengirimkan kembali data yang diminta ke server. Perlu dicatat bahwa kueri basis data adalah salah satu langkah yang lebih lambat dalam proses ini. Membaca dan menulis dari memori statis cukup lambat, dan database mungkin berada di mesin yang berbeda dari server aslinya. Permintaan ini sendiri mungkin harus melintasi internet!
7. Server menerima data yang diperlukan dari database, dan sekarang siap untuk membangun dan mengirimkan responsnya kembali ke klien. Badan tanggapan ini memiliki semua informasi yang diperlukan oleh browser untuk menunjukkan rincian lebih lanjut kepada Alice (harga, ulasan, ukuran, dll) tentang casing ponsel yang dia minati. Header tanggapan akan berisi kode status HTTP 200 untuk menunjukkan bahwa permintaan telah berhasil.
8. Respons dikirimkan melalui internet, kembali ke komputer Alice.
9. Browser Alice menerima respons dan menggunakan informasi tersebut untuk membuat dan merender tampilan yang akhirnya dilihat Alice!