Aku mengenal Google Cloud sebenarnya sudah lama. Waktu itu, aku tertarik menggunakan Google Cloud karena ada promo gratis menggunakan Google Cloud untuk 3 bulan dengan saldo $300. Waktu itu, aku mendaftar menggunakan VCC yang disediakan oleh Neteller namun sayang tak lama kemudian Neteller menghapus layanan VCC-nya. Akhirnya aku tidak bisa melanjutkan Google Cloud setelah masa trial berakhir karena pembayaran menggunakan ATM yang kupunya tidak bisa.
Beberapa hari yang lalu, aku mengontak salah satu teman untuk mengajaknya kerjasama. Aku memintanya untuk membuat akun Google Cloud dan sharing billing denganku. Aku katakan padanya akan membayar biaya server serta biaya layanan yang dia berikan. Dia sepakat dan akhirnya Google Cloud yang sempat terhenti bisa digunakan kembali.
Projek yang kubuat di Google Cloud itu rencananya akan kugunakan untuk optimasi blog Nusagates ini. Sesuai konsep yang kubuat, Google Cloud itu hanya kufungsikan sebagai CDN untuk mempercebat distribusi data dari server ke pengunjung blog. Aku pun memulai pengerjaan maintenance blog dengan full power agar segera selesai dan kembali mengerjakan garapan yang masih lumayan banyak.
Sebelum tertarik membuat CDN sendiri, sebenarnya aku tertarik ingin menggunakan layanan hosting Managed WordPress yang disediakan oleh WPEngine. Tapi setelah melihat harganya yang paling murah sekitar $26/bulan akhirnya ketertarikan itu sirna mengingat blog ini hanya untuk mengisi hobi. Bukan untuk mengejar provit dari iklan yang tayang.
Gagal mendapatkan hosting khusus untuk WordPress, selanjutnya aku melirik pada layanan CDN. Namun, lagi-lagi biaya bulanannya terlalu besar. Lebih besar dari biaya hosting yang kusewa dari Namecheap yang hanya $9/tahun waktu itu. Akhirnya aku mengurungkan niat untuk menggunakan layanan CDN.
Waktu terus berjalan dan trafik blog Nusagates terus meningkat menyebabkan blog Nusagates sering down karena telah melebihi batas bandwidth yang disediakan oleh Namecheap. Aku pun terus memutar otak bagaimana caranya agar bisa mengoptimasi blog nusagates dengan biaya murah tetapi hasilnya memuaskan. Beruntunglah Robert Taylor bersedia membantuku untuk mendapatkan Google Cloud dengan cara sharing billing. Aku pun memutuskan membuat CDN sendiri karena menurut perhitunganku, biayanya jauh lebih murah dibandingkan denga hosting Managed WP atau layanan CDN.
Pembuatan CDN Google Cloud Untuk WordPress
Google Cloud CDN yang kugunakan ini menggunakan alat-alat tempur sebagai berikut:
WP Total Cache
Plugin ini kugunakan untuk menghandel urusan rewrite url yang semula menggunakan nusagates.com diganti dengan cdn.nusagates.com. Ini yang paling inti.
Instance Group
Instance group adalah fitur Google Cloud untuk memudahkan pengguna mengelola beberapa instance (Compute Engine) sekaligus. Melalui instance group ini, kita bisa mengatur instance-instance yang ada di dalamnya menyesuaikan kebutuhan kita secara automatis menggunakan fitur autoscale. Fitur ini sangat cocok digunakan untuk CDN karena bisa menyesuaikan kebutuhan resource. Misalnya: Jika pengunjung blog sangat banyak hingga menyebabkan penggunaan reaource melebihi batas yang ditentukan maka fitur autoscale akan menambah jumlah instace sesuai kebutuhannya. Jika kemudian trafiknya menurun maka instance yang dibuat itu akan dihapus kembali untuk menyesuaikan kebutuhan resource saat itu.
Aku membuat satu Instance Group dengan region east-asia1 karena sesuai statistik kebanyakan pengunjung yang datang ke blog Nusagates dari Indonesia.
Load Balancer
Load balancer adalah fitur Google Cloud untuk menyeimbangkan pendistribusian data. Melalui ini, kita bisa mengoptimalkan pengunaan seumber daya backend dari instance group atau dari Google Cloud Storage (Bucket). Ada beberapa metode pendistribusian data dan aku memilih menggunakan protocol http(s) request.
Google Cloud CDN
Setelah instance group dan load balancer dibuat dan dikonfigurasi maka kita sudah bisa menggunakan google cloud CDN dengan membuat origin berdasarkan load balancer yang di buat.
Google Cloud Storage
Google Cloud Storage adalah layanan google cloud untuk menyimpan data-data static seperti gambar, css, js, atau html. Data yang kita simpan di dalam bucket bisa kita gunakan dari website secara langsung atau kita cast melalui Google Cloud CDN. Kita juga bisa menambahkan custom domain untuk mengakses data-data itu dengan cara menambahkan cname record ke dalam DNS record yang diarahkan ke host Google Cloud Storage.
Untuk mengintegrasikan Google Cloud Storage dengan WordPress, kita bisa menggunakan plugin WP Stateless Media. Namun, plugin tersebut hanya bisa menghandel file-file yang bisa diuplod pada media librari seperti gambar, video, atau PDF. Untuk file css, js, atau html tidak bisa dihandel.
Instalasi Nginx Pada Compute Engine
Pada dasarnya, sebenarnya kita bisa menggunakan CDN Google Cloud hanya dengan sebuah instance group dan sebuah load balancer. Kita tidak memerlukan Google Storage. Namun, aku menggunakan Google Storage untuk memisahkan data gambar agar terarsipkan di sana karena biayanya lebih murah. ☺
Ok. Kita butuh instalasi nginx untuk menyimpan file-file static dari WordPress. Aku install nginx di dalam salah satu compute engine yang ada di dalam instance group dengan OS Centos 7, memori SSD 10 GB dan ram cuma 750 mb (shared). Spek paling rendah di Google Cloud. Tapi ini bisa diganti kalau memang suatu saat nanti membutuhkan resource yang jauh lebih besar.
Jika kita menggunakan plugin WP Total Cache maka bisa upload secara langsung file-file static tersebut melalui uploader/exporter yang disediakan WP Total Cache. Saat ini, kita bisa menggunakan FTP karena layanan Google Cloud belum dientegrasi dengan plugin tersebut. Jadi kita harus mengonfigurasi ftp secara manual.
Aku menyimpan file-file static tersebut di dalam directory root yang dibuat secara default oleh nginx. Alasannya sederhana yaitu karena aku baru pertama kali ini berinteraksi dengan nginx. Mau buat virtual host seperti di apache belum bisa. Haha..
Free SSL Let’s Encript
Karena nusagates menggunakan SSL maka aku harus memasang SSL juga pada subdomain yang mau kugunakan untuk alias CDN. Untuk keperluan itu, aku memutuskan menggunakan free ssl let’s encript. SSL ini masa aktifnya seminggu oleh karena itu butuh bantuan cron job untuk memperbaruinya secara otomatis.
Instalasi VSFTPD
Kita membutuhkan ftp server untuk mengintegrasikan CDN Google Cloud dengan WordPress melalui plugin WP Total Cache. Aku memilih menggunakan vsftpd untuk ftp servernya.
Secara default, port 21 didisable oleh Google Cloud. Untuk itu, kita perlu mengonfigurasi port tersebut melalui menu Networking – Firewall Rule yang ada di dashboard Google Cloud. Jika tidak ditambahkan maka sia-sia belaka kita menginstall ftp server karena tidak akan bisa digunakan dari luar.
Rekap:
Secara singkat, langkah-langkah mengguanakan CDN Google cloud untuk WordPress adalah sebagai berikut:
- Membuat instance group dengan regional sesuai regional sasaran audien
- Membuat load balancer dari instance group yang dibuat. Load balancer ini menggunakan backend instance (bukan bucket).
- Membuat/Menambahkan origin baru di pengaturan CDN (Networking – Cloud CDN). Origin tersebut diambil dari load balancer yang dibuat sebelumnya.
- Pointing domain/sub domain ke salah satu host instance yang ada di di dalam instance group. Bisa menggunakan A record atau domain mapping menggunakan Google Cloud DNS (Networking – Cloud DNS).
- Instalasi nginx, ssl (jika perlu), dan ftp server.
- Menambahkan port 21 ke daftar white list firewal (Networking – Firewall Rule)
- Aktivasi WP Total Cache, enable CDN, memilih CDN tipe custom/ftp.
- Konfigurasi FTP di menu CDN yang disediakan plugin. Testing FTP kemudian gunakan CDN untuk media, file static wordpress, dan file static theme. Uplod semuanya melalui fitur uploader yang disediakan.
- Purge cache kemudian coba hasilnya.
Bagaimana, ada yang tertarik ikut nyoba menggunakan CDN Google Cloud? Jika ada pertanyaan silahkan tulis di kolom komentar atau silahkam mampir di forum.nusagates.com.
Cheers
Ahmad Budairi