{"id":7990,"date":"2020-05-17T14:50:07","date_gmt":"2020-05-17T07:50:07","guid":{"rendered":"http:\/\/binus.ac.id\/knowledge\/?p=7990"},"modified":"2020-12-17T15:38:30","modified_gmt":"2020-12-17T08:38:30","slug":"rancangan-arsitektur-wordpress-yang-scalable","status":"publish","type":"post","link":"https:\/\/binus.ac.id\/knowledge\/2020\/05\/rancangan-arsitektur-wordpress-yang-scalable\/","title":{"rendered":"Rancangan Arsitektur WordPress yang Scalable"},"content":{"rendered":"<p>Website tidak bisa diakses atau lambat begitu <em>traffic<\/em> kunjungan sedang tinggi merupakan bentuk masalah dari adanya arsitektur aplikasi web yang tidak <em>scalable.<\/em><\/p>\n<p>WordPress merupakan <em>web Content Management System<\/em> yang mempercepat pembuatan sebuah website. Pada tahun 2020, website berbasis WordPress digunakan sebanyak 35% di seluruh internet menurut data statistik yang dibuat oleh <a href=\"https:\/\/news.netcraft.com\/archives\/category\/web-server-survey\/\">netcraft<\/a>.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/pantheon.io\/sites\/default\/files\/Pantheon_WP_Scale_d1.gif\" width=\"577\" height=\"403\" \/><\/p>\n<p style=\"text-align: center;\">Gambar 1. Arsitektur Aplikasi Web yang <em>Scalable<\/em><\/p>\n<p>Berikut ini adalah penjelasan dari tiap komponen pada arsitektur di Gambar 1.<\/p>\n<ol>\n<li><strong><em>The browsing public<\/em><\/strong> merupakan pengguna internet yang mengunjungi website ini.<\/li>\n<li><em><strong>Reverse proxy<\/strong><\/em> 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 <em>reverse proxy<\/em> adalah Nginx.<\/li>\n<li><strong><em>PHP APP 1..n<\/em> <\/strong>merupakan aplikasi server yang akan memproses permintaan pengunjung, misalnya <em>query<\/em> data, memprosesnya ke tampilan, dan mengembalikan hasil tampilan. PHP APP ini biasanya yang dilakukan <em>scaling<\/em> dengan replikasi yaitu ditambah atau dikurangi baik secara manual ataupun otomatis. <span style=\"text-decoration: underline;\"><strong>Proses replikasi ini harus dapat dilakukan dengan cepat dan terukur<\/strong><\/span> sehingga website anda akan lebih responsif dan meningkatkan kepuasan pengunjung.<em> Reverse proxy<\/em> juga memungkinkan jenis aplikasi yang berbeda juga dapat berada di belakang <em>reverse proxy<\/em>, misalnya aplikasi NodeJS 1..n, .NET 1..n, dan lainnya.<\/li>\n<li><em><strong>Object Cache<\/strong><\/em> merupakan <em>in-memory database<\/em> yang merupakan data-data umum\/rutin yang telah diambil sebelumnya dari <em>database MySQL<\/em> yang akan langsung dikembalikan ke PHP APP 1..n. <em>Object Cache<\/em> ini sangat bermanfaat terhadap kesehatan <em>database MySQL<\/em>. Seringkali problem dengan website adalah <em>bottleneck<\/em> pada <em>database MySQL<\/em> karena terlalu banyak koneksi yang membutuhkan <em>query.<\/em> <em>Object Cache<\/em> ini juga dapat dilakukan replikasi 1..n. Contoh dari <em>Object Cache<\/em> adalah Redis, Memcache.<\/li>\n<li><em><strong>Search Index<\/strong> <\/em>merupakan <em>database<\/em> khusus yang berisi indeks <em>fulltext<\/em> terhadap konten-konten <em>database MySQL<\/em>. Ketika pengunjung melakukan pencarian berdasarkan <em>keyword<\/em> tertentu di website, maka pencarian dilakukan terhadap <em>search index<\/em> database ini, bukan ke <em>database MySQL<\/em> atau <em>object cache<\/em>. Contoh dari <em>Search Index database<\/em> adalah Elasticsearch.<\/li>\n<li><em><strong>Network filesystem<\/strong><\/em> merupakan penyimpanan data-data non aplikasi yang bersifat dinamis dan dapat diakses oleh seluruh PHP APP. Terdapat beberapa jenis <em>Network filesystem<\/em> yang dapat digunakan, bisa menggunakan <em>hardware NFS<\/em>, ataupun <em>software<\/em> seperti GlusterFS, Minio.<\/li>\n<li><em><strong>MySQL database<\/strong><\/em> merupakan <em>database<\/em> utama yang menyimpan seluruh data dari website WordPress. <em>MySQL<\/em> juga menyediakan layanan <em>High Availability<\/em> dengan menggunakan replikasi <em>Master-Slave<\/em>.<\/li>\n<\/ol>\n<p>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 <em>traffic<\/em> pengunjung dengan volume yang besar. Bila menggunakan <em>cloud services<\/em>, 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.<\/p>\n<p><strong>Sumber Referensi:<\/strong><br \/>\n<a href=\"https:\/\/pantheon.io\/blog\/introducing-wordpress-scale\">https:\/\/pantheon.io\/blog\/introducing-wordpress-scale<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":3170,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[460,457,79],"class_list":["post-7990","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-system-architecture","tag-system-design","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/posts\/7990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/comments?post=7990"}],"version-history":[{"count":5,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/posts\/7990\/revisions"}],"predecessor-version":[{"id":7999,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/posts\/7990\/revisions\/7999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/media\/3170"}],"wp:attachment":[{"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/media?parent=7990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/categories?post=7990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binus.ac.id\/knowledge\/wp-json\/wp\/v2\/tags?post=7990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}