1. Pengantar Serverless dan AWS
Serverless adalah paradigma pengembangan aplikasi dimana pengembang tidak perlu mengelola server secara langsung. AWS (Amazon Web Services) menyediakan layanan serverless yang sangat populer seperti AWS Lambda, API Gateway, dan DynamoDB.
Dengan serverless, Anda fokus pada kode dan logika bisnis, sementara AWS mengurus infrastruktur, skalabilitas, dan ketersediaan.
Pada masterclass ini, kita akan belajar bagaimana mengembangkan aplikasi serverless menggunakan TypeScript dan AWS Lambda secara step-by-step.
2. Setup Lingkungan Pengembangan
Sebelum mulai coding, kita perlu menyiapkan beberapa tools:
-
Node.js (versi 16 atau lebih baru)
-
npm atau yarn sebagai package manager
-
TypeScript (global atau lokal di project)
-
AWS CLI untuk konfigurasi kredensial AWS
-
Serverless Framework untuk memudahkan deploy
Langkah instalasi singkat:
# Install Node.js dari https://nodejs.org
# Install Serverless Framework secara global
npm install -g serverless
# Install AWS CLI
# Ikuti panduan resmi: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
# Konfigurasi AWS CLI dengan kredensial Anda
aws configure
Setelah setup selesai, kita siap membuat project serverless dengan TypeScript.
3. Dasar-Dasar TypeScript
TypeScript adalah superset JavaScript yang menambahkan tipe statis dan fitur modern. Ini membantu mengurangi bug dan meningkatkan produktivitas.
Contoh kode TypeScript sederhana:
function greet(name: string): string {
return `Halo, ${name}! Selamat belajar serverless.`;
}
console.log(greet("Developer"));
Kita akan menggunakan TypeScript untuk menulis fungsi AWS Lambda agar kode lebih terstruktur dan mudah dipelihara.
4. Mengenal AWS Lambda
AWS Lambda adalah layanan komputasi serverless yang menjalankan kode Anda sebagai respons terhadap event. Anda hanya membayar waktu eksekusi kode.
Lambda mendukung berbagai bahasa pemrograman, termasuk Node.js yang kita gunakan bersama TypeScript.
Contoh event yang bisa memicu Lambda:
-
HTTP request via API Gateway
-
Upload file ke S3
-
Update data di DynamoDB
-
Jadwal cron menggunakan EventBridge
5. Menggunakan Serverless Framework
Serverless Framework adalah tool open-source yang memudahkan deploy aplikasi serverless ke AWS dan provider lain.
Langkah membuat project baru:
serverless create --template aws-nodejs-typescript --path my-serverless-app
cd my-serverless-app
npm install
File utama yang perlu diperhatikan:
-
serverless.yml
- konfigurasi fungsi dan resource AWS
-
handler.ts
- kode fungsi Lambda
-
tsconfig.json
- konfigurasi TypeScript
6. Membangun Fungsi Serverless dengan TypeScript
Berikut contoh fungsi Lambda sederhana yang merespon HTTP request dan mengembalikan pesan:
import { APIGatewayProxyHandler } from 'aws-lambda';
export const hello: APIGatewayProxyHandler = async (event) => {
const name = event.queryStringParameters?.name || 'Dunia';
return {
statusCode: 200,
body: JSON.stringify({
message: `Halo, ${name}! Selamat belajar AWS Lambda dengan TypeScript.`,
}),
};
};
Pada
serverless.yml
, kita definisikan fungsi ini dan endpoint HTTP-nya:
functions:
hello:
handler: handler.hello
events:
- http:
path: hello
method: get
Fungsi ini akan bisa diakses melalui URL API Gateway yang di-generate setelah deploy.
7. Deploy dan Testing di AWS
Setelah kode siap, deploy aplikasi serverless dengan perintah:
serverless deploy
Output akan menampilkan endpoint URL API Gateway. Contoh:
endpoints:
GET - https://xyz123.execute-api.region.amazonaws.com/dev/hello
Tes endpoint dengan browser atau tools seperti Postman:
https://xyz123.execute-api.region.amazonaws.com/dev/hello?name=Andi
Anda akan menerima response JSON:
{
"message": "Halo, Andi! Selamat belajar AWS Lambda dengan TypeScript."
}
8. Best Practices dan Tips
-
Gunakan environment variables:
Simpan konfigurasi sensitif di environment variables, jangan hardcode.
-
Modularisasi kode:
Pisahkan logika bisnis dan handler agar mudah diuji dan dikembangkan.
-
Gunakan TypeScript strict mode:
Aktifkan strict mode untuk menghindari bug tipe data.
-
Monitoring dan logging:
Gunakan CloudWatch untuk memantau performa dan error.
-
Optimalkan ukuran package:
Hanya sertakan dependensi yang diperlukan agar cold start lebih cepat.
-
Gunakan IAM Role dengan prinsip least privilege:
Berikan izin minimum yang diperlukan fungsi Lambda.
9. Sumber Belajar dan Source Code
Berikut beberapa sumber belajar dan channel yang sangat membantu untuk menguasai AWS dan TypeScript serverless:
Source code lengkap masterclass ini dapat diakses di:
GitHub Repository