REL05-BP06 Membuat sistem menjadi stateless jika memungkinkan
Sistem seharusnya tidak memerlukan state, atau seharusnya mengalihkan state sedemikian rupa sehingga di antara permintaan klien yang berbeda, tidak ada dependensi di penyimpanan data lokal di disk dan memori. Hal ini membuat server dapat diganti sesuai keinginan tanpa menimbulkan dampak ketersediaan.
Ketika pengguna atau layanan berinteraksi dengan aplikasi, mereka sering melakukan serangkaian interaksi yang membentuk sesi. Sesi adalah data unik bagi pengguna yang lama berada di antara permintaan ketika mereka menggunakan aplikasi. Aplikasi stateless adalah aplikasi yang tidak memerlukan pengetahuan tentang interaksi sebelumnya dan tidak menyimpan informasi sesi.
Setelah dirancang menjadi stateless, Anda dapat menggunakan layanan komputasi nirserver, seperti AWS Lambda atau AWS Fargate.
Selain penggantian server, manfaat lain aplikasi stateless adalah kemampuannya untuk menyesuaikan skala secara horizontal karena sumber daya komputasi yang tersedia (seperti instans EC2 dan fungsi AWS Lambda) dapat melayani permintaan apa pun.
Manfaat menjalankan praktik terbaik ini: Sistem yang dirancang untuk menjadi stateless lebih mudah beradaptasi dengan penskalaan horizontal, sehingga memungkinkan penambahan atau penghapusan kapasitas berdasarkan lalu lintas dan permintaan yang berfluktuasi. Sistem ini juga memiliki sifat yang tahan terhadap kegagalan dan memberikan fleksibilitas serta ketangkasan dalam pengembangan aplikasi.
Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan: Sedang
Panduan implementasi
Menjadikan aplikasi Anda stateless. Aplikasi stateless memungkinkan penskalaan horizontal dan toleran terhadap kegagalan simpul individual. Analisis dan pahami komponen aplikasi Anda yang mempertahankan state di dalam arsitektur. Hal ini membantu Anda menilai dampak potensial dari transisi ke desain stateless. Arsitektur stateless memisahkan data pengguna dan memindahkan data sesi. Hal ini memberikan fleksibilitas untuk menskalakan setiap komponen secara independen untuk memenuhi permintaan beban kerja yang beragam dan mengoptimalkan pemanfaatan sumber daya.
Langkah implementasi
-
Identifikasi dan pahami komponen stateful dalam aplikasi Anda.
-
Pisahkan data dengan memisahkan dan mengelola data pengguna dari logika aplikasi inti.
-
Amazon Cognito
dapat memisahkan data pengguna dari kode aplikasi dengan menggunakan fitur, seperti kolam identitas, kumpulan pengguna, dan Amazon Cognito Sync. -
Anda dapat menggunakan AWS Secrets Manager
untuk memisahkan data pengguna dengan menyimpan rahasia di lokasi terpusat yang aman. Ini berarti kode aplikasi tidak perlu menyimpan rahasia, sehingga membuatnya lebih aman. -
Pertimbangkan menggunakan Amazon S3
untuk menyimpan data besar yang tidak terstruktur, seperti gambar dan dokumen. Aplikasi Anda dapat mengambil data tersebut apabila diperlukan, sehingga menghilangkan kebutuhan untuk menyimpannya di dalam memori. -
Gunakan Amazon DynamoDB
untuk menyimpan informasi seperti profil pengguna. Aplikasi Anda dapat mengueri data tersebut hampir dalam waktu nyata.
-
-
Pindahkan data sesi ke basis data, cache, atau file eksternal.
-
Amazon ElastiCache
, Amazon DynamoDB, Amazon Elastic File System (Amazon EFS), dan Amazon MemoryDB adalah contoh layanan AWS yang dapat Anda gunakan untuk memindahkan data sesi.
-
-
Rancang arsitektur stateless setelah Anda mengidentifikasi state dan data pengguna mana yang perlu dipertahankan dengan solusi penyimpanan pilihan Anda.
Sumber daya
Praktik terbaik terkait:
Dokumen terkait: