Tulisan ini disumbangkan oleh Roman Boiko, Solutions Architect. Show React adalah framework front-end populer yang digunakan untuk membuat single page application (SPA). Framework ini di-render dan dijalankan di sisi klien di browser. Namun, untuk alasan SEO atau kinerja, Anda mungkin perlu melakukan rendering beberapa bagian dari aplikasi React di sisi server. Di sinilah server-side rendering (SSR) berguna. Tulisan ini memperkenalkan konsep dan mendemonstrasikan cara rendering aplikasi React dengan AWS Lambda. Untuk menerapkan solusi ini dan untuk menyediakan resource di AWS, saya menggunakan AWS Cloud Development Kit (CDK). AWS CDK adalah open source framework, yang membantu Anda mengurangi jumlah kode yang diperlukan untuk membuat otomatisasi deployment. Gambaran UmumSolusi ini menggunakan Amazon S3, Amazon CloudFront, Amazon API Gateway, AWS Lambda, dan Lambda @ Edge. Kombinasi ini menciptakan implementasi SSR yang sepenuhnya serverless, dan secara otomatis dapan scale sesuai dengan beban kerja. Solusi ini membahas tiga skenario. Skenario 1 Aplikasi React statis yang di-hosting dalam bucket S3 dengan distribusi CloudFront di depan situs web. Backend dari aplikasi ini berjalan di belakang API Gateway dan diimplementasikan sebagai fungsi Lambda. Di sini, aplikasi sepenuhnya diunduh ke klien dan ditampilkan di browser web. Aplikasi ini kemudian mengirimkan permintaan ke backend. Skenario 2 Aplikasi React di-render dengan fungsi Lambda. Distribusi CloudFront dikonfigurasi untuk meneruskan permintaan
dari path Skenario 3 Aplikasi React di-render dengan fungsi Lambda@Edge. Skenario ini serupa dengan skenario sebelumnya tetapi rendering terjadi di lokasi edge. Permintaan ke path DemonstrasiAplikasi contoh berikut menunjukkan bagaimana skenario sebelumnya diimplementasikan dengan AWS CDK. Solusi ini membutuhkan:
Solusi ini melakukan deployment fungsi Lambda@Edge sehingga harus disediakan di AWS Region AS Timur (Virginia U.). Untuk memulai, unduh dan konfigurasikan sampel: Langkah 1 Dari sebuah terminal, clone repositori GitHub berikut:
Langkah 2 Berikan nama unik untuk S3 bucket, yang dibuat oleh stack dan digunakan untuk meng-hosting aplikasi React. Ubah
placeholder
Langkah 3 Catat nilai-nilai berikut dari output:
Langkah 4 Di browser, buka setiap URL dari langkah 3. Anda melihat halaman yang sama dengan footer berbeda, yang menunjukkan bagaimana halaman tersebut ditampilkan. Memahami aplikasi React contohAplikasi dibuat oleh tool Aplikasi kecil ini terdiri dari dua komponen yang akan me-render daftar produk yang diterima dari backend. File
Menambahkan server-side renderingUntuk mendukung SSR, saya mengubah aplikasi sebelumnya menggunakan beberapa fungsi Lambda untuk implementasinya. Saat saya mengubah cara data diambil dari backend, saya menghapus kode ini dari File baru
Selanjutnya,
saya menerapkan logika SSR dalam fungsi Lambda tersebut. Untuk kesederhanaan, saya menggunakan metode
Untuk me-render kode yang sama di Lambda@Edge, saya mengubah kode agar bisa memproses event CloudFront dan juga mengubah format respons. Fungsi ini mencari path khusus (
Tool
Saya juga menyertakan semua dependensi. Saya menggunakan tool frontend populer yakni webpack, yang juga dapat bekerja dengan fungsi Lambda. Tool ini hanya menambahkan dependensi yang diperlukan dan meminimalkan ukuran paket. Untuk tujuan ini, saya membuat konfigurasi untuk kedua fungsi tersebut. Anda dapat menemukannya di file webpack.edge.js dan webpack.server.js:
Hasil dari
menjalankan webpack adalah satu file untuk setiap build. Saya menggunakan file ini untuk mendeploy fungsi Lambda dan Lambda@Edge. Untuk mengotomatiskan proses build, saya menambahkan beberapa skrip ke
Jalankan proses build dengan perintah Melakukan deployment aplikasiSetelah proses build aplikasi berhasil, saya akan melakukan deployment ke AWS Cloud. Saya menggunakan AWS CDK sebagain pendekatan infrastructure as code. Kode terletak di cdk/lib/ssr-stack.ts. Pertama, saya membuat bucket S3 untuk menyimpan konten statis dan saya meneruskan nama bucket sebagai parameter. Untuk memastikan hanya CloudFront yang dapat mengakses bucket S3 saya, saya menggunakan konfigurasi origin access identity:
Saya men-deploy fungsi Lambda dari direktori build dan mengonfigurasi integrasi dengan API Gateway. Saya juga mencatat nama domain API Gateway untuk digunakan nanti dalam distribusi CloudFront.
Saya mengkonfigurasi fungsi Lambda@Edge. Penting untuk membuat versi fungsi secara eksplisit untuk digunakan dengan CloudFront:
Terakhir, saya mengonfigurasi distribusi CloudFront untuk berkomunikasi dengan semua sumber:
Template sekarang siap untuk di-deploy. Pendekatan ini memungkinkan Anda menggunakan kode ini di pipeline Continuous Integration and Continuous Delivery / Deployment (CI / CD) untuk mengotomatiskan deployment aplikasi SSR Anda. Selain itu, Anda dapat membuat konstruksi CDK untuk menggunakan kembali kode ini dalam aplikasi yang berbeda. PembersihanUntuk menghapus semua sumber daya yang digunakan dalam solusi ini, jalankan:
Kesimpulan Tulisan ini mendemonstrasikan dua cara Anda dapat mengimplementasikan dan menerapkan solusi untuk rendering sisi server di aplikasi React, dengan menggunakan Lambda atau Lambda@Edge. Saya juga menunjukkan cara menggunakan alat sumber terbuka dan AWS CDK untuk mengotomatiskan pembuatan dan penerapan aplikasi semacam itu. Untuk lebih banyak sumber belajar untuk aplikasi serverless, kunjungi Serverless Land. Tulisan ini diterjemahkan dari tulisan Building server-side rendering for React in AWS Lambda oleh Roman Boiko, Solutions Architect. React digunakan untuk apa?Saat ini, ReactJS digunakan sebagai salah satu framework untuk membuat bagian front-end dari sebuah aplikasi. Dilansir dari laman resminya, ReactJS diklaim membantumu membuat UI interaktif dengan mudah. ReactJS akan secara efisien memperbarui dan merender komponen yang tepat saat datamu berubah.
Apa perbedaan react JS dan react native?React Native merupakan sebuah framework atau kerangka kerja, sedangkan React JS merupakan sebuah pustaka JavaScript yang biasa digunakan pada situs web. React Native sangat membantu para developer dalam membuat aplikasi menjadi lebih nyata dan menarik meskipun hanya lewat bantuan dari JavaScript saja.
Apa itu JSX pada React?JSX adalah ekstensi syntax JavaScript yang digunakan dalam pembuatan elemen React. Developer menggunakannya untuk menyematkan (embed) kode HTML pada objek JavaScript. Karena bisa memproses embedding ekspresi dan fungsi JavaScript yang valid, JSX pun membantu mempersingkat struktur kode yang kompleks.
Kenapa belajar react JS?React JS memungkinkan Anda untuk menggunakan kembali komponen yang telah dikembangkan ke aplikasi lain yang menggunakan fungsi yang sama. Hal ini tentu menghemat waktu dan tenaga, ditambah dengan kepastian bahwa komponen Anda berfungsi dengan mulus dan tanpa cacat.
|