Pengenalan Back-End
- Get link
- X
- Other Apps
Pengenalan Back-End
“Penyebaran komputer dan internet akan membagi pekerjaan menjadi dua kategori. Orang yang memberi tahu komputer apa yang harus dilakukan, dan orang yang diberi tahu oleh komputer apa yang harus dilakukan.” – Marc Andreessen, salah satu pendiri Netscape.
Ketika mengembangkan sebuah aplikasi, terutama aplikasi yang berbasis web, terdapat dua peran yang secara umum dibutuhkan, yaitu Front-End dan Back-End. Di kelas ini, kita akan mendalami peran dari Back-End dalam mengembangkan sebuah aplikasi. Pada modul pertama, kita akan membahas pengenalan Back-End.
Berikut adalah tujuan pembelajaran yang akan dicapai pada modul kali ini.
- Menjelaskan pengertian Front-End dan Back-End pada pengembangan aplikasi.
- Menjelaskan pengertian dan peran dari server.
- Membedakan istilah Web Service, Web Server, REST, API , dan RESTful API.
- Menjelaskan pola komunikasi client server di aplikasi web.
- Menunjukkan jenis Metode HTTP dan Kode Respons di RESTful API .
- Memberikan contoh mendesain URL yang baik di RESTful API .
Yuk, kita mulai!
Berkenalan dengan Back-End
Tanpa disadari, ketika Anda mengakses sebuah situs, misalnya, situs dicoding.com. Anda dapat berinteraksi dengan berbagai elemen di dalamnya, seperti mengklik button, berpindah halaman, atau bahkan memberikan inputan. Berinteraksi dengan bagian depan aplikasi saja tidaklah cukup. Anda perlu mengelola data dan fungsionalitas lainnya. Misalnya, di situs Dicoding, Anda dapat menyimpan profil, seperti nama, foto, dan progres belajar.
Sebenarnya, untuk membuat hal itu terjadi, ada proses panjang yang terjadi di balik layar. Proses tersebut dibagi menjadi dua bagian utama. Bagian pertama adalah tampilan dari sebuah aplikasi yang dapat Anda lihat dan berinteraksi dengannya atau biasa disebut dengan Front-End. Bagian kedua adalah bagian yang mengelola data dan logika bisnis dari sebuah aplikasi, atau biasa disebut dengan Back-End.

Developer yang bertanggung jawab untuk Front-End disebut sebagai Front-End Developer, sedangkan developer yang bertanggung jawab untuk Back-End disebut sebagai Back-End Developer. Mari kita lihat contoh apa saja yang dapat dibuat oleh Front-End Developer dan Back-End Developer. Front-End Developer biasanya membuat aplikasi berbasis web, desktop, dan mobile (native) yang langsung digunakan oleh end-user. Back-End Developer mengelola aplikasi yang berjalan di sisi server, mulai dari API, database, hingga aspek keamanan untuk mendukung fungsionalitas aplikasi Front-End.

Beberapa bahasa pemrograman yang umum digunakan untuk Back-End adalah Python, JavaScript dengan Node.js, Go, Java, dan PHP. Selain keahlian menguasai bahasa pemrograman, seorang Back-End Developer perlu untuk menguasai keahlian seperti Database, Server, API, Version Control, dan Keamanan. Tenang, tak usah khawatir karena beberapa keahlian tersebut akan kita pelajari satu per satu di kelas ini.
Agar pemahaman Anda semakin tajam, mari kita analogikan Front-End dan Back-End dalam sebuah coffee shop.
Misalkan, Anda mendatangi sebuah coffee shop untuk WFC (work from cafe) dan membeli segelas kopi. Anda masuk ke dalamnya, melihat lukisan di dinding, interior yang instagrammable, ruangan bersih, meja yang luas, dan kursi yang tertata rapi. Anda kemudian mendatangi kasir.

Lalu, Anda berbicara, “Halo, saya ingin membuat pesanan, saya ingin pesan satu es matcha latte“.
“Baik, kak, saya tulis dulu, ya,” balas seorang kasir sembari mencatat pesanan Anda di sebuah tablet.
Kemudian, kasir tersebut mengatakan sesuatu lagi kepada Anda sambil tersenyum, “Ada tambahan lagi, kak?”
Anda menjawab, “Cukup, kak, itu saja”.
Lalu, kasir tersebut mencetak nota pesanan dan berbicara, “Untuk pembayaran mau melalui apa, kak? Kita menerima pembayaran Cash, Debit, dan QRIS, ya”.
Anda menjawab “Saya mau bayar pakai QRIS ya”.
Setelah pembayaran sukses, Anda berjalan menjauhi kasir untuk mencari meja. Kasir pun memberikan pesanan Anda ke barista. Sambil menunggu pesanan kopi, Anda membuka laptop dan mulai bekerja.
Berdasarkan skenario tersebut, lukisan, interior, dan pelayan yang berinteraksi dengan Anda adalah sebuah Front-End. Lalu, barista yang membuat es matcha latte di dapur adalah Back-End. Peran Back-End berada di balik layar, Anda tidak tahu mesin kopi apa yang digunakan oleh barista, teknik apa yang digunakan dan biji kopi yang digiling. Yang Anda rasakan lebih ke peran dari Front-End seperti kenyamanan yang Anda rasakan pada meja dan kursi, kemudahan untuk memesan kopi dan interior yang instagrammable.
Meskipun Back-End tidak terlihat dan tidak disadari oleh pengguna, perannya sangatlah vital. Bayangkan jika coffe shop tidak memiliki barista, kopi pesanan pelanggan tidak akan tersedia dan mereka enggan mampir ke coffee shop tersebut. Begitu pun peran Back-End di aplikasi, tanpa Back-End, data yang ada di aplikasi tidak akan tersimpan dan fungsionalitas dari aplikasi tidak akan bisa dijalankan.
Oke, itulah pengenalan Back-End yang akan menjadi bekal Anda untuk mengikuti modul-modul berikutnya.
Server!
Seperti yang sudah Anda ketahui, Back-End memiliki tanggung jawab terhadap fungsionalitas dari aplikasi, terutama yang berbasis web, erat kaitannya dengan server. Anda sebagai calon Back-End Developer harus memiliki pemahaman terkait server.
Server adalah program komputer (sistem) yang dapat menyediakan kebutuhan seperti data, layanan, dan program untuk client. Client adalah komputer atau perangkat yang mengonsumsi resources atau layanan dari server. Dalam model jaringan, client-server terdiri dari dua komponen utama, yaitu client dan server.
Server bertugas untuk melayani permintaan client seperti mengelola dan menyimpan data, sedangkan client hanya meminta dan menerima resources dari server. Satu server dapat melayani banyak client, contohnya seperti server Dicoding yang dapat melayani ratusan ribu pengguna (siswa) yang sedang belajar. Satu client bisa meminta dan menerima resources dari banyak server.
Karena server bertugas untuk melayani client, tentunya ada banyak kebutuhan client yang harus dipenuhi oleh server. Untuk melayani kebutuhan client, server memiliki beberapa jenis. Berikut jenis server yang umum dan perlu Anda ketahui.
- Web Server
Web Server adalah sebuah komputer yang melayani permintaan dari protokol web atau sebutan lainnya adalah HTTP. Web Server dapat memberikan data seperti halaman web (HTML) atau data dalam format lainnya. Web Server adalah jenis server yang paling umum digunakan pada pengembangan aplikasi Back-End. Contoh web server yang open-source adalah Apache dan Nginx. - Mail Server
Mail Server adalah aplikasi yang berfungsi untuk menerima dan mengirimkan email. Mail server digunakan ketika Anda ingin menggunakan email sebagai media komunikasi dengan orang lain. - Database Server
Seperti yang Anda ketahui, database adalah kumpulan data yang terstruktur dan tersimpan dalam suatu sistem komputer. Database yang disimpan dalam jaringan komputer dan dapat diakses dari mana pun melalui jaringan disebut dengan Database Server. - DNS Server
DNS Server adalah server yang menerjemahkan nama domain (seperti dicoding.com) menjadi alamat IP yang dibaca dan dipahami oleh komputer (seperti 192.168.1.1). DNS Server bisa kita anggap sebagai penerjemah.
Selain itu, berikut jenis server lainnya yang ada saat ini: Proxy Server, Application Server, dan FTP Server. Di materi selanjutnya, kita akan bahas lebih dalam mengenai Web Server. Mari kita lanjut!
Web Server vs Web Service
Anda masih ingat peran dari Back-End, kan? Back-End berperan untuk mengelola data, logika bisnis, dan mendukung fungsionalitas aplikasi. Lalu, bagaimana cara Back-End untuk melakukan itu? Untuk menjalankan peran itu, Back-End membutuhkan Web Server.
Sebelumnya Anda sudah mengetahui pengertian dari Web Server. Kini, kita akan lihat bagaimana cara untuk berkomunikasi dengan Web Server. Untuk berkomunikasi dengan Web Server dapat melalui internet menggunakan protokol HTTP (Hypertext Transfer Protocol).
HTTP adalah salah satu protokol jaringan yang dapat digunakan untuk berkomunikasi dengan server, biasanya di antara browser (sebagai client) dan server. Protokol HTTP menggunakan pola request-response, artinya untuk mendapatkan sesuatu (response), kita perlu melakukan permintaan terlebih dahulu (request). Varian lain dari HTTP ialah HTTPS. HTTPS (Hypertext Transfer Protocol Secure) adalah protokol yang memiliki keamanan lebih baik dari HTTP.
Oke, saat ini kita sudah berhasil berkomunikasi dengan Web Server melalui HTTP. Namun, apakah Web Server sudah bisa melayani kebutuhan kita? Katakanlah Front-End membutuhkan data untuk mendukung fungsionalitas aplikasi.
Ternyata, tak cukup hanya Web Server untuk melayani kebutuhan Front-End. Web Server saat ini baru bisa menerima permintaan HTTP, tetapi ia belum mampu untuk berinteraksi dan menyediakan kebutuhan dari Front-End. Untuk mengatasi hal itu, muncullah Web Service.
Web Service adalah program yang dijalankan di Web Server agar kebutuhan bisnis terpenuhi. Web Service berjalan di dalam Web Server sehingga ia dapat diakses melalui internet dengan protokol HTTP. Melalui Web Service inilah aplikasi Front-End (client) dan Back-End dapat bertransaksi dan bertukar data.
Jadi, kesimpulannya adalah untuk melayani dan memenuhi kebutuhan Front-End (client), Back-End membutuhkan Web Server dan Web Service. Sebagai tambahan, Web Service tak hanya digunakan untuk bertransaksi antara aplikasi berbasis web, tetapi juga dapat digunakan pada aplikasi atau sistem yang berbeda.
Web Service dapat bertukar data tanpa memandang sumber datanya. Web Service tak memandang apa database-nya, bahasa yang digunakan, dan pada platform apa data tersebut dikonsumsi. Kemampuan itulah yang membuat Web Service menjadi jembatan penghubung antara berbagai sistem.
Arsitektur Web Service
Dalam mengembangkan Web Service, Anda perlu menetapkan arsitektur apa yang hendak diadaptasi agar pengembangannya tidak terlalu liar. Dengan menetapkan arsitektur, komunikasi antara client dan server akan lebih mudah karena memiliki pola atau gaya yang konsisten. Salah satu arsitektur Web Service yang banyak digunakan saat ini adalah REST.
REST (REpresentational State Transfer) adalah salah satu gaya arsitektur yang dapat diadaptasi ketika membangun Web Service. Arsitektur ini sangat populer digunakan karena pengembangannya yang relatif mudah. REST menggunakan pola request-response dalam berinteraksi, artinya ia memanfaatkan protokol HTTP.
Arsitektur REST benar-benar memisahkan peran client dan server, bahkan keduanya tidak harus saling mengetahui. Artinya ketika terjadi perubahan besar di sisi client, tidak akan berdampak pada sisi server, begitu pun sebaliknya.
RESTful API
Sebelumnya, Anda sudah mengetahui salah satu arsitektur yang ada pada Web Service, yaitu REST. Sekarang, kita akan berkenalan dengan RESTful API. RESTful API adalah API yang menerapkan arsitektur REST.
Arsitektur REST umum diadopsi dalam membuat API. API (Application Programming Interface) adalah antarmuka yang menjadi perantara antara sistem yang berbeda. Sebetulnya, istilah API berlaku tidak hanya dalam bentuk Web Service, bisa saja berupa SDK (Software Development Kit) ataupun lainnya.
REST memiliki beberapa prinsip yang menjadi kunci. Berikut prinsip dari REST.
- Client-Server: Ini adalah hal yang paling mendasar dalam membangun RESTful API. Server harus bisa merespons permintaan yang dilakukan client, baik itu respons berhasil ataupun gagal.
- Stateless: RESTful API tidak boleh menyimpan keadaan (state) apa pun terkait client. Seluruh state harus tetap disimpan di client. Artinya, tidak ada session di RESTful API. Permintaan yang dilakukan client harus mengandung informasi yang jelas. Jangan berharap RESTful API akan menyimpan informasi dari permintaan sebelumnya untuk digunakan di permintaan selanjutnya.
- Cacheable: Agar dapat merespons permintaan dengan cepat, sebaiknya RESTful API menerapkan prinsip cache. Sehingga, setiap permintaan tidak melulu mengambil dari database.
- Layered: Ketika RESTful API server memiliki arsitektur yang kompleks, client seharusnya tidak perlu tahu bagaimana server melayaninya.
Setelah mengetahui prinsip dari REST, tahukah Anda bahwa REST memiliki tingkatan level yang disebut dengan REST Maturity Model atau yang dikenal dengan Richardson Maturity Model? Jika belum tahu, model tersebut dikenalkan oleh Leonard Richardson yang membagi REST menjadi beberapa level atau tingkatan [1]. Apa saja tingkatannya?
Simak gambar berikut.

Esensinya, RESTful API harus mencapai level 3, hypermedia controls. Hypermedia adalah konten yang berisi link ke media lainnya seperti images, audio, dan text. Secara singkat, untuk mencapai level 3 (“Glory of REST”) API yang Anda kembangkan selain mengirimkan response berupa resources yang diminta, ia juga harus mengembalikan link menuju ke resources lainnya yang berhubungan atau ke aksi lainnya. Level 3 dari REST Maturity Model dikenal juga sebagai HATEOAS. Jika API belum mencapai level 3, kita belum bisa menyebutnya sebagai RESTful.
Misalnya, menampilkan daftar catatan. Berikut adalah contoh response yang diberikan HATEOAS.
- {
- "status": "success",
- "message": "Catatan berhasil ditampilkan",
- "data": {
- "notes": [
- {
- "id": 2,
- "title": "Catatan pertama saya",
- "body": "Ini adalah contoh catatan saya dalam perjalanan belajar Back-End dengan Django di Dicoding",
- "tags": [
- "Personal"
- ],
- "createdAt": "2024-09-18T10:34:52.595848Z",
- "updatedAt": "2024-09-18T10:34:52.595916Z",
- "links": [
- {
- "rel": "self",
- "href": "http://127.0.0.1:8000/notes/2/?format=json",
- "action": "GET",
- "types": [
- "application/json"
- ]
- },
- {
- "rel": "self",
- "href": "http://127.0.0.1:8000/notes/2/?format=json",
- "action": "PUT",
- "types": [
- "application/json"
- ]
- },
- {
- "rel": "self",
- "href": "http://127.0.0.1:8000/notes/2/?format=json",
- "action": "DELETE",
- "types": [
- "application/json"
- ]
- }
- ]
- }
- ]
- }
- }
Di dalam response tersebut, terdapat link yang menuju ke resource lainnya, misalnya resources user. Selain itu, di response juga terkandung link untuk aksi lainnya di resources-nya sendiri seperti detail catatan yang ada di atribut url. Itulah contoh sederhana dari HATEOAS.
Well, sejauh ini Anda sudah mengetahui tentang Web Server, Web Service, REST, dan RESTful API. Anda mungkin tidak sabar untuk memulai membangun RESTful API. Namun, sebelum itu, Anda perlu mengetahui konsep lainnya dalam membangun RESTful API, seperti HTTP Methods, HTTP Request/Response, dan URL desain. Untuk mengetahui konsep-konsep tersebut, yuk lanjut ke materi berikutnya! See you!
Menyelami Komunikasi Client-Server
Seperti yang kita ketahui, komunikasi klien dan server memiliki pola request dan respon . Hal ini sama seperti skenario coffee shop di materi sebelumnya, masih ingat kan? Untuk mendapatkan kopi, Anda harus memesan terlebih dahulu ke kasir (ini dapat kami anggap sebagai permintaan). Setelah kopi dibuat, pelayan akan mengantarkan kopi yang Anda pesan (respons dari permintaan yang kami lakukan).

Begitu pun pola yang sama terjadi pada komunikasi antara client dengan server. Client-lah yang akan menginisiasi komunikasi. Server tidak akan mengirimkan data apa pun jika tidak ada permintaan dari klien (sama seperti barista, ia tidak akan membuat kopi jika tidak diminta).
Client akan melakukan request ke server, server menerima request tersebut dan memprosesnya. Setelah memproses, server akan mengirimkan hasil ke klien yang disebut dengan respon. Permintaan yang dilakukan oleh klien haruslah jelas dan berisi informasi yang dibutuhkan oleh server untuk menangani permintaan klien.
Jika permintaan yang Anda lakukan kurang jelas, kemungkinan besar server gagal untuk memprosesnya, sama seperti di coffee shop. Jika Anda menyampaikan pesan yang kurang jelas seperti “Saya ingin pesan kopi”, kasir tidak akan paham karena ada banyak jenis kopi dan ia tidak dapat memproses pesanan Anda.
Apa saja informasi yang harus dimiliki oleh permintaan? Permintaan setidaknya mengandung informasi sebagai berikut [2].
- Request line : berisi metode/verb (akan dibahas nanti), path atau alamat web yang diminta; dan versi HTTP yang digunakan.
- Header : memuat informasi yang dilampirkan permintaan terkait seperti format dokumen (contoh application/json, text/html, dsb), kunci akses, dsb.
- Body (opsional) : berisi data yang dibutuhkan oleh server, bisa dalam bentuk teks, JSON, dll. Body tidak wajib terpasang bila server tidak membutuhkan data apa pun.
Tak hanya request client yang berisi informasi, respon yang diberikan oleh server juga berisi informasi. Berikut beberapa informasi yang dilampirkan oleh respon [3]:
- Status line : berisikan HTTP versi yang digunakan; status code (akan dibahas nanti), Reason Phrase atau Status Text yang merupakan pesan berdasarkan status code dalam bentuk teks sehingga lebih mudah dipahami.
- Header : berisi informasi yang dilampirkan terkait respon seperti format dokumen.
- Body (opsional, namun biasanya selalu disertakan): memuat data yang dikirimkan oleh server dalam bentuk HTML, JSON, gambar, dan sebagainya.
Format Permintaan dan Respon di RESTful API
Format yang digunakan pada request dan respon ada banyak tetapi secara umum dan yang paling populer adalah menggunakan JSON (JavaScript Object Notation). Sebelum adanya JSON, orang-orang menggunakan format XML. Alasan mengapa banyak beralih dari XML adalah karena JSON lebih mudah dibaca dan efisien dalam transaksi data.
Sesuai namanya, JSON memiliki struktur seperti JavaScript Object yaitu menggunakan key-value. Bedanya, key pada JSON selalu dituliskan menggunakan tanda kutip dua (“”). Nilai pada JSON dapat menampung nilai-nilai primitif seperti string, number, boolean, atau nilai non primitif seperti objek atau array. Sebab RESTful API selalu merespons dengan format JSON, pastikan setiap respons terdapat properti Content-Typedengan nilai application/json.
Berikut contoh struktur JSON ketika melakukan GET request terhadap URL. https://coffee-api.dicoding.dev/coffees :
- {
- "message" : "Berikut daftar kopi yang tersedia" ,
- "kopi" : [
- {
- "id" : 1 ,
- "nama" : "Kopi Tubruk" ,
- "harga" : 12000
- },
- {
- "id" : 2 ,
- "nama" : "Kopi Tarik" ,
- "harga" : 15000
- },
- {
- "id" : 3 ,
- "nama" : "Kopi Jawa" ,
- "harga" : 18000
- }
- ]
- }
Anda juga dapat mencobanya dengan cara klik URL tersebut. Meskipun memiliki nama JavaScript Object Notation, bukan berarti kita harus menggunakan JavaScript untuk menggunakan format JSON. Format JSON dapat digunakan oleh hampir semua bahasa pemrograman yang ada.
Bersambung ke:
Latihan: Melakukan Permintaan HTTP
- Get link
- X
- Other Apps




Comments
Post a Comment