Back to IF3110 Pengembangan Aplikasi Berbasis Web

Topic

Questions/Cues

  • Apa itu Aplikasi Internet?

  • Apa saja karakteristik utamanya?

  • Apa itu Sistem Terdistribusi?

  • Perbedaan Client-Server & Peer-to-Peer?

  • Perbedaan Stateless & Stateful?

  • Apa itu Protokol Komunikasi?

  • Beda Aplikasi Internet vs Aplikasi Web?

  • Komponen teknologi Aplikasi Web?

  • Apa itu URL, HTTP, HTML, CSS?

  • Jenis-jenis Web Programming?

  • Bagaimana alur proses aplikasi web?

  • Apa itu Arsitektur N-Tier?

  • Apa itu Web Stack?

Reference Points

  • Slides IF3110 - 01b - InternetApp.pdf

Konsep Utama Aplikasi Internet

Aplikasi Internet (Internet App) adalah sebuah program komputer yang komponen-komponennya tersebar di berbagai lokasi (tidak berada dalam satu mesin tunggal) dan menggunakan jaringan internet sebagai media untuk berkomunikasi satu sama lain.

Kata kunci dari konsep ini adalah:

  1. Sistem Terdistribusi (Distributed System): Logika dan data aplikasi tidak terpusat di satu komputer, melainkan terbagi ke beberapa komputer yang saling terhubung.

  2. Komunikasi via Internet: Pertukaran data dan instruksi antar komponen aplikasi tersebut terjadi melalui infrastruktur internet.

Karakteristik Aplikasi Internet

Sebagai sistem terdistribusi, Aplikasi Internet memiliki karakteristik khusus:

  • Concurrency (Konkurensi): Kemampuan untuk menangani banyak tugas secara bersamaan. Contohnya, sebuah server aplikasi harus bisa melayani permintaan dari ratusan klien, memproses data, dan mengirim/menerima informasi ke database pada waktu yang hampir bersamaan.

  • Synchronization (Sinkronisasi): Perlunya koordinasi aktivitas antar komponen yang berjalan terpisah. Ini penting untuk menjaga konsistensi data dan urutan proses, misalnya memastikan transaksi bank diproses dalam urutan yang benar.

  • Exception Handling (Penanganan Kegagalan): Sistem harus dirancang agar tangguh. Jika satu komponen atau satu proses untuk satu pengguna gagal, hal itu tidak boleh menyebabkan seluruh sistem berhenti bekerja atau mengganggu layanan untuk pengguna lain.

Model Sistem Terdistribusi

Ada dua model utama dalam sistem terdistribusi:

  1. Client-Server: Model yang paling umum, di mana ada pembagian peran yang jelas.

    • Client: Pihak yang meminta layanan atau sumber daya (misalnya, browser Anda saat meminta halaman web).

    • Server: Pihak yang menyediakan layanan atau sumber daya (misalnya, web server yang menyimpan dan mengirimkan halaman web).

  2. Peer-to-Peer (P2P): Dalam model ini, setiap komponen (disebut peer) memiliki kedudukan yang setara. Setiap peer bisa berfungsi sebagai client (meminta layanan) dan juga sebagai server (memberikan layanan) secara bersamaan. Contoh klasiknya adalah aplikasi file-sharing seperti BitTorrent.

Varian Model Client-Server

Interaksi antara client dan server dapat dibedakan menjadi:

  • Stateless (Tanpa Status): Server tidak menyimpan informasi atau status apa pun tentang client dari interaksi sebelumnya. Setiap permintaan dari client dianggap sebagai transaksi yang baru dan independen. HTTP secara dasar bersifat stateless. Analogi: Mesin penjual otomatis, setiap pembelian adalah transaksi baru tanpa mengingat siapa Anda.

  • Stateful (Dengan Status): Server menyimpan informasi konteks dari interaksi sebelumnya dengan client (ini disebut session). Permintaan berikutnya dari client yang sama dapat diproses berdasarkan konteks yang sudah ada. Analogi: Percakapan telepon dengan teman, Anda berdua ingat apa yang sudah dibicarakan sebelumnya.

Protokol Komunikasi

Protokol adalah seperangkat aturan atau standar yang disepakati oleh pihak-pihak yang berkomunikasi (misalnya, client dan server) agar dapat saling memahami.

  • Protokol Aplikasi: Mendefinisikan format pesan, sintaks, dan urutan komunikasi untuk aplikasi tertentu. Contoh: HTTP untuk web, FTP untuk transfer file, SMTP untuk email.

  • Protokol Transport: Mengatur bagaimana data dipecah menjadi paket-paket kecil, dikirim melalui jaringan, dan disusun kembali di tujuan. Contoh: TCP (yang andal dan berorientasi koneksi) dan UDP (yang lebih cepat tetapi tidak andal).

Perbedaan Aplikasi Internet vs Aplikasi Berbasis Web

Meskipun sering digunakan secara bergantian, keduanya memiliki perbedaan teknis:

KriteriaAplikasi Internet (Umum)Aplikasi Berbasis Web (Spesifik)
ProtokolBisa menggunakan protokol aplikasi apa pun (FTP, SMTP, dll) atau bahkan protokol buatan sendiri.Hanya menggunakan HTTP/HTTPS sebagai protokol utama.
KomunikasiAplikasi di server bisa berkomunikasi langsung dengan aplikasi client.Aplikasi di server berkomunikasi dengan client melalui sebuah Web Server.
Antarmuka ClientBisa berupa aplikasi standalone (desktop), komponen dalam aplikasi lain, atau terminal.Umumnya berjalan dan diakses melalui Web Browser.

Singkatnya, Aplikasi Web adalah salah satu jenis (subset) dari Aplikasi Internet yang secara khusus menggunakan teknologi web (HTTP, Browser).

Teknologi Inti Aplikasi Berbasis Web

Sebuah aplikasi web dibangun dari beberapa komponen teknologi yang bekerja sama:

  • Web Client (Web Browser): Perangkat lunak di sisi pengguna (misal: Chrome, Firefox) yang bertugas meminta, menerima, dan me-render (menampilkan) halaman web.

  • Web Server: Perangkat lunak di sisi server (misal: Apache, NginX) yang bertugas menerima permintaan HTTP dari browser dan mengirimkan dokumen web sebagai respons.

  • URL (Uniform Resource Locator): Alamat unik yang digunakan untuk menemukan sebuah sumber daya (seperti halaman HTML atau gambar) di internet.

  • HTTP (HyperText Transfer Protocol): Protokol aplikasi yang menjadi fondasi komunikasi data di World Wide Web.

  • HTML (HyperText Markup Language): Bahasa standar untuk membuat struktur dan konten dari sebuah halaman web.

  • CSS (Cascading Style Sheet): Bahasa yang digunakan untuk mendefinisikan gaya dan tata letak (presentasi visual) dari dokumen HTML.

Jenis-Jenis Pemrograman Web

Eksekusi kode dalam aplikasi web dapat terjadi di dua tempat:

  1. Server-Side Scripting (PHP, Python, JSP, ASP.NET): Kode dieksekusi di web server. Server memproses skrip, menghasilkan output (biasanya HTML), lalu mengirimkan hasil jadinya ke browser. Ini digunakan untuk logika bisnis, akses database, dan otentikasi.

  2. Client-Side Scripting (JavaScript): Kode dikirim bersama HTML/CSS ke browser, lalu dieksekusi oleh browser di komputer pengguna. Ini digunakan untuk membuat halaman web yang interaktif, memvalidasi input form, atau memanipulasi tampilan halaman tanpa perlu me-refresh (misalnya, menggunakan teknologi AJAX).

Selain itu, ada juga CGI (Common Gateway Interface), sebuah standar lama di mana web server menjalankan program eksternal dan menyalurkan outputnya sebagai respons HTTP, serta Plugin (Applet, Flash) yang merupakan program eksternal yang dieksekusi oleh browser dengan bantuan perangkat lunak tambahan.

Arsitektur Aplikasi Web

Sebelum saat ini, arsitektur aplikasi web hanya berkutat pada penyajian file statis.

Seiring waktu, arsitektur aplikasi web berevolusi dari sekadar penyajian file statis menjadi sistem multi-lapis (N-Tier Architecture) yang kompleks. Arsitektur modern umumnya memisahkan tugas menjadi beberapa lapisan (layer):

  • Presentation Layer (UI): Bertanggung jawab untuk menampilkan antarmuka kepada pengguna dan menangkap input dari pengguna. Ini adalah bagian yang dilihat dan diinteraksi oleh pengguna di browser.

  • Business Layer (Logic): Berisi logika bisnis inti dari aplikasi. Lapisan ini memproses data, menerapkan aturan, dan membuat keputusan.

  • Data Layer (Data Access): Bertanggung jawab untuk komunikasi dengan penyimpanan data, seperti database. Tugasnya adalah mengambil, menyimpan, memperbarui, dan menghapus data.

Web Stack

Web Stack adalah kumpulan dari beberapa teknologi perangkat lunak yang dibutuhkan untuk membangun dan menjalankan sebuah aplikasi web dari awal hingga akhir. Ini mencakup sistem operasi, web server, database, dan bahasa pemrograman. Contoh stack populer adalah:

  • LAMP: Linux (OS), Apache (Web Server), MySQL (Database), PHP/Perl/Python (Programming Language).

  • MEAN: MongoDB (Database), Express.js (Web Framework), Angular (Frontend Framework), Node.js (Runtime Environment).

Summary

Aplikasi Internet adalah sistem perangkat lunak terdistribusi yang berkomunikasi melalui internet, dengan karakteristik utama seperti konkurensi, sinkronisasi, dan penanganan kegagalan. Model yang paling umum adalah Client-Server, yang bisa bersifat stateless (tiap permintaan independen) atau stateful (server mengingat interaksi sebelumnya). Aplikasi Web merupakan subset spesifik dari Aplikasi Internet yang menggunakan protokol HTTP, diakses melalui browser, dan dibangun di atas tumpukan teknologi (Web Stack) seperti Web Server, Database, HTML, CSS, dan bahasa pemrograman sisi server (misal: PHP) serta sisi klien (JavaScript). Arsitektur aplikasi web modern berevolusi menjadi model multi-lapis (N-Tier) yang memisahkan logika presentasi, bisnis, dan data untuk skalabilitas dan pemeliharaan yang lebih baik.