TeknoCerdas.com – Salam cerdas untuk kita semua. Tulisan kali ini sedikit spesial karena ini adalah artikel ke-100 di TeknoCerdas. Untuk merayakannya saya akan membahas tentang bagaimana saya melakukan hosting static WordPress untuk website TeknoCerdas pada AWS.
Ringkasan
TeknoCerdas menggunakan WordPress sebagai static site generator. S3 bertindak sebagai WordPress static hosting dan Cloudfront sebagai CDN dan SSL termination.
Daftar Isi
- Kriteria Infrastruktur TeknoCerdas
- Skema Infrastruktur TeknoCerdas
- Alur Menulis pada TeknoCerdas
- Keuntungan Static WordPress
Kriteria Infrastruktur TeknoCerdas
Terlebih dahulu saya ingin menjelaskan beberapa kriteria utama yang menjadi pertimbangan ketika membangun infrastruktur TeknoCerdas.
Pertama adalah performa dan skalabilitas. Website TeknoCerdas harus mampu menangani 10 pengguna, 1.000 pengguna atau 1 juta pengguna tanpa mengurangi performa. Infrastruktur harus dibuat untuk dapat menangani masalah tersebut tanpa harus mengelola dan mengkonfigurasi server.
Membuat WordPress super cepat untuk menangani jutaan request memerlukan konfigurasi yang panjang. Daripada bergelut dengan autoscaling dan konfigurasi yang rumit maka menjadikan WordPress static dan menggunakan S3 sebagai object storage dan CloudFront sebagai CDN adalah pilihan yang masuk akal.
Kedua adalah biaya rendah. Saya tidak mau menghabiskan puluhan atau bahkan ratusan dollar pada sebuah website bertipe “read-only” seperti TeknoCerdas. Jika tidak ada kunjungan atau pageview harusnya tidak perlu ada biaya yang dikeluarkan atau paling tidak biaya mendekati nol.
Sehingga konsep “pay-as-you-go” harus bisa diterapkan disini. Sehingga instance EC2 hanya perlu hidup ketika akan menulis artikel setelahnya akan dihancurkan.
Ketiga adalah WordPress. Saya tidak ingin menghabiskan terlalu banyak waktu untuk mendesain halaman website. WordPress adalah pilihan yang paling tepat. Disamping kemudahan menulis, pilihan tema dan plugin yang beragam membuat saya tidak perlu memikirkan SEO dan lain-lain dan hanya fokus pada konten.
Skema Infrastruktur TeknoCerdas
Dari skema infrastruktur diatas untuk mendapatkan konsep Pay-as-you-go maka WordPress diubah menjadi static site. Semua static file seperti file HTML, CSS, Javascript dan gambar akan diletakkan pada object storage S3. Didepan S3 terdapat CloudFront yang bertindak sebagai SSL Termination dan tentunya Content Delivery Network (CDN).
Instance EC2 hanya digunakan ketika menulis artikel karena pengguna TeknoCerdas sudah dilayani oleh CloudFront dan S3. Otomatis resources EC2 dan EBS volume dapat dihancurkan karena tidak diperlukan.
Dengan demikian jika tidak ada request dari pengguna maka tidak perlu ada biaya yang dikeluarkan kecuali untuk biaya penyimpanan storage seperti AMI, Snapshot dan S3.
Alur Menulis pada TeknoCerdas
Rutinitas harian untuk menulis pada TeknoCerdas melibatkan beberapa langkah berikut ini. Jika disingkat perintah berikut ini adalah perintah harian yang saya lakukan.
$ terraform apply -auto-approve
Perintah diatas adalah menyalakan EC2 instance untuk menjalankan WordPress. Sebuah domain khusus A Record akan otomatis mengarah ke EC2 yang baru saja menyala.
Setelah menunggu satu atau dua menit maka WordPress siap digunakan. Langkah berikutnya tentu adalah menulis artikel. Setelah selesai langkah berikutnya adalah melakukan deployment ke S3 dan CloudFront.
$ bash post-install/deploy.sh
Perintah diatas dibalik layar melakukan beberapa hal 1) Melakukan generate static content menggunakan plugin WP2Static. 2) Melakukan sync static file dari EC2 ke S3. 3) Melakukan cache invalidation pada CloudFront agar versi lama dari website dihapus dari cache.
Karena EC2 dan volume disk sudah tidak diperlukan maka akan dimatikan. Sebelum mematikan volume yang menyimpan database dan file-file WordPress maka volume tersebut disnapshot terlebih dahulu. Agar diwaktu yang akan datang ketika menghidupkan EC2 lagi data lama dapat direstore dari snapshot.
$ create_wordpress_snapshot_disk
Proses snapshot memakan waktu biasanya kurang dari semenit. Setelah itu instance EC2 dan disk dihancurkan.
$ destroy_wordpress_ec2_instance
Perintah diatas akan menghancurkan EC2, disk database dan WordPress, dan juga Cloudflare record yang berasosiasi dengan EC2.
Domain utama dan file-file yang ada pada S3 dan Cloudfront tidak terpengaruh dari perintah diatas.
Teknologi Stack yang Digunakan TeknoCerdas
Dari sisi infrastruktur berikut adalah yang digunakan.
- Amazon EC2 t2.micro untuk hosting WordPress dan MariaDB.
- Amazon S3 untuk hosting file-file website seperti HTML, CSS, Javascript dan gambar.
- Amazon CloudFront untuk CDN sekaligus bertindak sebagai SSL termination.
- Amazon EBS 8GB untuk root disk dan 30GB untuk database dan WordPress. EBS juga digunakan untuk menyimpan snapshot.
- Amazon Certificate Manager (ACM) untuk SSL certificate domain utama yaitu teknocerdas.com
- Cloudflare sebagai DNS manager untuk domain teknocerdas.com.
- LetsEncrypt untuk SSL domain khusus editor.
- Terraform sebagai infrastructure as code (IaC)
Dari sisi software berikut adalah yang digunakan.
- WordPress 5.4.2 dengan Mediumish theme.
- Plugin WP2Static untuk membuat static file dari WordPress
- Ubuntu Linux 18.04
- MariaDB 10
- Docker dan Docker Compose untuk menjalankan WordPress dan MariaDB pada server.
- Bash untuk custom scripting dan otomasi
- Git untuk mengelola kode sumber
Keuntungan Static WordPress
Terdapat keuntungan dan kerugian ketika mengubah WordPress menjadi static. Namun yang akan saya utarakan disini hanya dari sisi keuntungan saja.
Keuntungan pertama tentu adalah kecepatan. Tidak ada yang mengalahkan static website. Karena file sudah tersedia diserver dan tidak perlu ada pemrosesan (server-side rendering) maka kecepatan konsisten dan lebih baik.
Kedua adalah maintenance. Tidak perlu memikirkan auto-scaling dan konfigurasi rumit lainnya jika tiba-tiba website mendapatkan lonjakan traffic yang signifikan. 10 request atau 1 juta request harusnya sama saja ketika menggunakan CDN, tidak ada maintenance yang dilakukan. Semua sudah ditangani oleh provider dalam hal ini AWS.
Ketiga adalah keamanan. WordPress merupakan CMS yang banyak mendapat target serangan dari attacker. Dengan menjadikannya static maka celah apapun di WordPress tidak bisa dieksploitasi karena memang “tidak ada” WordPress yang berjalan dibelakangnya.
Selama ini saya cukup puas dengan setup ini karena selain tidak ada maintenance yang perlu dilakukan. Biayanya pun cukup rendah sekitar $1 – $3 per bulan.
Semoga bermanfaat. Salam cerdas. 🙂