Website tidak bisa diakses atau lambat begitu traffic kunjungan sedang tinggi merupakan bentuk masalah dari adanya arsitektur aplikasi web yang tidak scalable.

WordPress merupakan web Content Management System yang mempercepat pembuatan sebuah website. Pada tahun 2020, website berbasis WordPress digunakan sebanyak 35% di seluruh internet menurut data statistik yang dibuat oleh netcraft.

Gambar 1. Arsitektur Aplikasi Web yang Scalable

Berikut ini adalah penjelasan dari tiap komponen pada arsitektur di Gambar 1.

  1. The browsing public merupakan pengguna internet yang mengunjungi website ini.
  2. Reverse proxy merupakan pintu masuk yang bertugas untuk meneruskan permintaan halaman web dari pengunjung ke server aplikasi yang terkait. Dalam hal ini yaitu WordPress yang ada di dalam PHP APP 1..n (replika). Contoh reverse proxy adalah Nginx.
  3. PHP APP 1..n merupakan aplikasi server yang akan memproses permintaan pengunjung, misalnya query data, memprosesnya ke tampilan, dan mengembalikan hasil tampilan. PHP APP ini biasanya yang dilakukan scaling dengan replikasi yaitu ditambah atau dikurangi baik secara manual ataupun otomatis. Proses replikasi ini harus dapat dilakukan dengan cepat dan terukur sehingga website anda akan lebih responsif dan meningkatkan kepuasan pengunjung. Reverse proxy juga memungkinkan jenis aplikasi yang berbeda juga dapat berada di belakang reverse proxy, misalnya aplikasi NodeJS 1..n, .NET 1..n, dan lainnya.
  4. Object Cache merupakan in-memory database yang merupakan data-data umum/rutin yang telah diambil sebelumnya dari database MySQL yang akan langsung dikembalikan ke PHP APP 1..n. Object Cache ini sangat bermanfaat terhadap kesehatan database MySQL. Seringkali problem dengan website adalah bottleneck pada database MySQL karena terlalu banyak koneksi yang membutuhkan query. Object Cache ini juga dapat dilakukan replikasi 1..n. Contoh dari Object Cache adalah Redis, Memcache.
  5. Search Index merupakan database khusus yang berisi indeks fulltext terhadap konten-konten database MySQL. Ketika pengunjung melakukan pencarian berdasarkan keyword tertentu di website, maka pencarian dilakukan terhadap search index database ini, bukan ke database MySQL atau object cache. Contoh dari Search Index database adalah Elasticsearch.
  6. Network filesystem merupakan penyimpanan data-data non aplikasi yang bersifat dinamis dan dapat diakses oleh seluruh PHP APP. Terdapat beberapa jenis Network filesystem yang dapat digunakan, bisa menggunakan hardware NFS, ataupun software seperti GlusterFS, Minio.
  7. MySQL database merupakan database utama yang menyimpan seluruh data dari website WordPress. MySQL juga menyediakan layanan High Availability dengan menggunakan replikasi Master-Slave.

Untuk membangun arsitektur ini diperlukan konfigurasi yang cukup kompleks dan juga perlu ketelitian. Namun dengan teknik ini dapat dipastikan performa website akan semakin baik dan juga dapat menangani traffic pengunjung dengan volume yang besar. Bila menggunakan cloud services, maka arsitektur ini dapat dikonfigurasi dengan relatif mudah, pada artikel berikutnya akan dibahas mengenai pengalaman saya dalam mencoba implementasi arsitektur ini dengan menggunakan Microsoft Azure.

Sumber Referensi:
https://pantheon.io/blog/introducing-wordpress-scale