Blog AWS Indonesia

Praktik Terbaik Mengembangkan AWS Lambda

Pada tulisan kami sebelumnya, kami membahas berbagai cara Anda dapat menjalankan fungsi AWS Lambda. Dalam tulisan ini, kami akan memberikan beberapa tips dan praktik terbaik yang dapat Anda gunakan saat membangun AWS Lambda functions Anda.

Salah satu manfaat menggunakan Lambda, adalah Anda tidak perlu khawatir tentang manajemen server dan infrastruktur. Ini berarti AWS akan menangani heavy lifting yang diperlukan untuk menjalankan fungsi Lambda Anda. Anda dapat memanfaatkan arsitektur ini dengan tips-tips di bawah ini.

Tips #1: Kapan Harus Menggunakan VPC-Enabled pada Lambda Function

Lambda functions selalu beroperasi dari VPC yang dimiliki AWS. Secara default, fungsi Anda memiliki kemampuan penuh untuk membuat panggilan jaringan ke alamat internet publik mana pun – ini termasuk akses ke salah satu API AWS publik. Misalnya, fungsi Anda dapat berinteraksi dengan AWS DynamoDB API untuk memanggil PutItem atau Query. Anda hanya perlu mengaktifkan fungsi Anda untuk akses VPC ketika Anda perlu berinteraksi dengan sumber daya yang terletak di subnet pribadi anda, salah satunya adalah RDS.

 

Setelah fungsi Anda menggunakan VPC-enabled, semua lalu lintas jaringan dari fungsi Anda menggunakan aturan perutean VPC/Subnet Anda. Jika fungsi Anda perlu berinteraksi dengan sumber daya publik, Anda akan memerlukan rute melalui NAT Gateway di subnet publik.

Tips #2: Deploy Kode Umum ke Lambda Layer (misal AWS SDK)

Jika Anda bermaksud menggunakan kembali kode di lebih dari satu fungsi, pertimbangkan untuk membuat Layer dan menempatkannya di sana. Contoh yang bagus untuk hal ini adalah logging package yang harus distandarisasi oleh tim Anda. Contoh bagus lainnya adalah AWS SDK. AWS akan menyertakan AWS SDK untuk function NodeJS dan Python (dan memperbarui SDK secara berkala). Namun, Anda harus menggabungkan SDK Anda sendiri dan menyematkan fungsi Anda ke versi SDK yang telah Anda uji.

Tips #3: Perhatikan Ukuran dan Dependency Package Anda

Lambda function mengharuskan Anda untuk mengemas semua dependensi yang dibutuhkan (atau melampirkan Layer) – semakin besar deployment package Anda, semakin lambat fungsi Anda menjalankan cold-start. Hapus semua item yang tidak perlu, seperti dokumentasi dan library yang tidak digunakan. Jika Anda menggunakan Java function dengan AWS SDK, hanya bundel module yang benar-benar perlu Anda gunakan – bukan seluruh SDK.

Contoh bagus:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>dynamodb</artifactId>
    <version>2.6.0</version>
</dependency>

Contoh kurang bagus:

<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/aws-sdk-java -->
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>aws-sdk-java</artifactId>
    <version>2.6.0</version>
</dependency>

Tips #4: Monitor Konkurensi Anda (dan Setel Alarm)

Tulisan pertama kami di seri ini berbicara tentang bagaimana konkurensi dapat memengaruhi sistem down stream Anda. Karena Lambda function dapat menskala dengan sangat cepat, ini berarti Anda harus memiliki kontrol untuk memberi tahu Anda ketika ada lonjakan konkurensi. Ide yang bagus adalah menggunakan CloudWatch Alarm yang memberi tahu tim Anda ketika function metric seperti ConcurrentExecutions atau Invocations melebihi ambang batas. Anda harus membuat AWS Budget sehingga Anda dapat memonitor biaya setiap hari. Berikut adalah contoh yang bagus tentang cara mengatur kontrol biaya otomatis.

Tips #5: Over-Provision Memory (dalam beberapa kasus penggunaan), Bukan Function Timeout

Lambda mengalokasikan daya komputasi sebanding dengan memori yang Anda alokasikan untuk fungsi Anda. Ini berarti Anda dapat memberikan memori lebih untuk menjalankan fungsi Anda lebih cepat dan berpotensi mengurangi biaya Anda. Anda harus membandingkan kasus penggunaan Anda untuk menentukan di mana break-event point untuk menjalankan lebih cepat dan menggunakan lebih banyak memori dibanding berjalan lebih lambat dan menggunakan lebih sedikit memori.

Namun, kami sarankan Anda untuk tidak terlalu menetapkan pengaturan function time out Anda. Selalu pahami performa kode Anda dan tentukan function timeout yang sesuai. Function timeout yang terlalu sering menyebabkan Lambda function berjalan lebih lama dari yang diharapkan dan biaya yang tidak terduga.


Tulisan ini berasal dari artikel Best Practice for Developing on AWS Lambda yang ditulis oleh George Mao dan diterjemahkan oleh Teddy Aryono.

Petra Barus

Petra Barus

Petra Novandi Barus is Developer Advocate at Amazon Web Services based in Jakarta. He is passionate in helping startups and developers in Indonesia to reinvent on behalf their customers. Prior to AWS, Petra co-founded UrbanIndo.com as CTO. The startup became the largest real-estate portal in Indonesia and then was acquired by 99.co. During that time Petra had been a happy AWS customer for 8 years. Petra is also very active in local tech communities