Serverless Architecture dan Cloud Functions: Panduan Lengkap Developer Modern
Pendahuluan
Serverless architecture bukan berarti tanpa server, melainkan model komputasi di mana developer tidak perlu mengelola infrastruktur. Cloud provider seperti AWS Lambda, Google Cloud Functions, dan Azure Functions menangani scaling, patching, dan availability secara otomatis. Anda hanya menulis fungsi dan membayar sesuai eksekusi. Model ini populer karena hemat biaya, cepat deploy, dan cocok untuk event-driven workload.
Pembahasan
Cloud function dipicu oleh event: HTTP request, upload ke storage, perubahan database, atau message queue. Setiap invocation berjalan di container ephemeral yang berdiri sendiri, dengan timeout umum 15 menit di AWS Lambda. Konsep kunci: stateless, cold start, dan pay-per-invocation. Keterbatasan ini memengaruhi desain aplikasi, terutama untuk beban kerja berat atau koneksi database persisten.
Contoh Implementasi
Berikut fungsi Node.js sederhana yang membaca parameter query dan mengembalikan JSON:
exports.handler = async (event) => {
const name = event.queryStringParameters?.name || "World";
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}` })
};
};
Integrasi dengan database serverless seperti DynamoDB:
const { DynamoDBClient, PutItemCommand } = require("@aws-sdk/client-dynamodb");
const client = new DynamoDBClient({ region: "ap-southeast-1" });
exports.handler = async (event) => {
const body = JSON.parse(event.body);
await client.send(new PutItemCommand({
TableName: "Users",
Item: { id: { S: body.id }, email: { S: body.email } }
}));
return { statusCode: 201, body: "Created" };
};
Analisis Keamanan
Kesalahan paling umum adalah over-permissive IAM role. Jika fungsi memiliki izin *:*, penyerang yang menemukan celah injeksi bisa memanggil AWS API untuk menghapus data. Contoh eksploitasi: jika fungsi menerima event.headers['x-user-id'] tanpa verifikasi, penyerang cukup mengirim header palsu untuk mengakses data pengguna lain (IDOR). Celah lain adalah event injection di mana payload besar memicu memory exhaustion dan biaya tak terduga.
Cara Pencegahan
- Least privilege IAM: batasi role hanya ke resource dan action yang diperlukan.
- Validasi input: gunakan schema validation (misalnya Zod, Joi) sebelum memproses payload.
- Autentikasi: verifikasi JWT atau signature di API Gateway, bukan di dalam fungsi.
- Rate limiting: aktifkan throttling di API Gateway untuk mencegah abuse dan DDoS.
- Environment variables: simpan secret di AWS Secrets Manager, jangan hardcoded.
- Logging & monitoring: gunakan CloudWatch dan X-Ray untuk mendeteksi anomali.
Kesimpulan
Serverless architecture menawarkan efisiensi tinggi, tetapi keamanan tetap tanggung jawab developer. Pahami model shared responsibility, terapkan prinsip least privilege, validasi semua input, dan monitor setiap invocation. Dengan pendekatan ini, cloud functions menjadi fondasi aplikasi modern yang cepat, scalable, dan aman.