Desain aplikasi beban kerja berkelanjutan di Azure
Saat membangun aplikasi baru atau memperbarui yang ada, sangat penting untuk mempertimbangkan bagaimana solusi akan berdampak pada iklim dan jika ada cara untuk meningkatkan dan mengoptimalkan. Pelajari tentang pertimbangan dan rekomendasi untuk mengoptimalkan kode dan aplikasi Anda untuk desain aplikasi yang lebih berkelanjutan.
Penting
Artikel ini adalah bagian dari seri beban kerja azure Well-Architected berkelanjutan . Jika Anda tidak terbiasa dengan seri ini, kami sarankan Anda memulai dengan apa itu beban kerja berkelanjutan?
Efisiensi kode
Tuntutan pada aplikasi dapat bervariasi, dan penting untuk mempertimbangkan cara untuk menstabilkan pemanfaatan untuk mencegah over-atau underutilization sumber daya, yang dapat menyebabkan tumpahan energi yang tidak perlu.
Mengevaluasi memindahkan monolit ke arsitektur layanan mikro
Aplikasi monolitik biasanya menskalakan sebagai unit, meninggalkan sedikit ruang untuk menskalakan hanya komponen individu yang mungkin membutuhkannya.
Keselarasan Green Software Foundation: Efisiensi energi, Efisiensi perangkat keras
Rekomendasi:
- Mengevaluasi panduan arsitektur layanan mikro .
- Arsitektur layanan mikro hanya memungkinkan penskalaan komponen yang diperlukan selama beban puncak; memastikan komponen diam dipersingkat atau dipersingkat. Selain itu, ini dapat mengurangi overhead dan sumber daya yang diperlukan untuk menyebarkan aplikasi monolitik.
- Pertimbangkan tradeoff ini: Saat mengurangi sumber daya komputasi yang diperlukan, Anda dapat meningkatkan jumlah lalu lintas di jaringan, dan kompleksitas aplikasi dapat meningkat secara signifikan.
- Pertimbangkan tradeoff lainnya ini: Pindah ke layanan mikro dapat mengakibatkan overhead penyebaran ekstra dengan banyak kesamaan dalam alur penyebaran. Pertimbangkan dengan cermat sumber daya penyebaran yang diperlukan untuk arsitektur monolitik versus layanan mikro.
- Selain itu, baca tentang kontainerisasi aplikasi monolitik.
Meningkatkan efisiensi API
Banyak aplikasi cloud modern dirancang untuk bertransaksi banyak pesan antara layanan dan komponen secara asinkron. Pertimbangkan format yang digunakan untuk mengodekan data payload. Berapa banyak informasi yang perlu dikomunikasikan oleh aplikasi Anda, dan apakah ada ruang untuk mengurangi obrolan?
Keselarasan Green Software Foundation: Efisiensi energi
Rekomendasi:
- Pelajari tentang antipattern I/O yang cerewet untuk lebih memahami bagaimana sejumlah besar permintaan dapat memengaruhi performa dan responsivitas.
- Tingkatkan keandalan dan kurangi beban yang tidak perlu ke sistem Anda. Terapkan pembatasan permintaan tingkat lanjut dengan API Management.
- Minimalkan jumlah data yang dikembalikan aplikasi dari permintaan dengan menjadi selektif dan mengodekan pesan. Lihat pertimbangan pengodean pesan.
- Respons cache untuk menghindari pemrosesan ulang jenis informasi yang sama dari sistem backend kecuali diperlukan. Lihat penembolokan di Azure API Management.
Pastikan kompatibilitas perangkat lunak mundur untuk memastikan perangkat keras warisan berfungsi
Pertimbangkan bagaimana aplikasi merender informasi. Apakah aplikasi perlu secara kritis melayani segala sesuatu dalam kualitas tertinggi, menghasilkan bandwidth dan pemrosesan yang lebih tinggi? Apakah ada ruang untuk mengurangi kualitas komponen di UI untuk melayani tujuan keberlanjutan dengan lebih baik?
Keselarasan Green Software Foundation: Efisiensi perangkat keras
Rekomendasi:
- Mendukung lebih banyak perangkat konsumen pengguna akhir, seperti browser dan sistem operasi yang lebih lama. Kompatibilitas mundur ini meningkatkan efisiensi perangkat keras dengan menggunakan kembali perangkat keras yang ada alih-alih memerlukan peningkatan perangkat keras agar solusi berfungsi.
- Pertimbangkan tradeoff ini: Jika pembaruan perangkat lunak terbaru memiliki peningkatan performa yang signifikan, menggunakan versi perangkat lunak yang lebih lama mungkin tidak lebih efisien.
Memanfaatkan pola desain asli cloud
Mempelajari tentang pola desain cloud-native sangat membantu untuk membangun aplikasi, baik yang dihosting di Azure atau berjalan di tempat lain. Mengoptimalkan performa dan biaya aplikasi cloud Anda juga akan mengurangi pemanfaatan sumber dayanya, sehingga emisi karbonnya.
Keselarasan Green Software Foundation: Efisiensi energi, Efisiensi perangkat keras
Rekomendasi:
- Manfaatkan pola desain cloud-native saat menulis atau memperbarui aplikasi.
Pertimbangkan untuk menggunakan pola pemutus sirkuit
Pertimbangkan untuk mengevaluasi dan mencegah aplikasi melakukan operasi yang kemungkinan gagal. Kegagalan berulang dapat menyebabkan overhead dan pemrosesan yang tidak perlu yang dapat Anda hindari dengan pola desain yang tepat.
Keselarasan Green Software Foundation: Efisiensi energi
Rekomendasi:
- Pemutus arus dapat bertindak sebagai proksi untuk operasi yang mungkin gagal dan harus memantau jumlah kegagalan terbaru yang telah terjadi dan menggunakan informasi tersebut untuk memutuskan apakah akan melanjutkan.
- Pelajari pola Circuit Breaker, lalu pertimbangkan bagaimana Anda dapat menerapkan pola Circuit Breaker ke aplikasi Anda.
- Pertimbangkan untuk menggunakan Azure Monitor untuk memantau kegagalan dan menyiapkan pemberitahuan.
Optimalkan kode untuk penggunaan sumber daya yang efisien
Aplikasi yang disebarkan menggunakan kode yang tidak efisien dapat mengakibatkan dampak yang melekat pada keberlanjutan.
Keselarasan Green Software Foundation: Efisiensi energi, Efisiensi perangkat keras
Rekomendasi:
- Kurangi siklus CPU dan jumlah sumber daya yang Anda butuhkan untuk aplikasi Anda.
- Gunakan algoritma dan pola desain yang dioptimalkan dan efisien.
- Pertimbangkan prinsip Jangan ulangi sendiri (DRY).
Optimalkan untuk pola akses asinkron
Tuntutan pada aplikasi dapat bervariasi, dan penting untuk mempertimbangkan cara untuk menstabilkan pemanfaatan untuk mencegah over-atau underutilization sumber daya, yang dapat menyebabkan tumpahan energi yang tidak perlu.
Keselarasan Green Software Foundation: Efisiensi energi
Rekomendasi:
- Permintaan antrean dan buffer yang tidak memerlukan pemrosesan segera, lalu proses dalam batch. Merancang aplikasi Anda dengan cara ini membantu mencapai pemanfaatan yang stabil dan membantu meratakan konsumsi untuk menghindari permintaan lonjakan.
- Baca tentang mengoptimalkan pola akses asinkron.
Mengevaluasi penyajian sisi server vs. sisi klien
Tentukan apakah akan merender di sisi server atau sisi klien saat membangun aplikasi dengan UI.
Keselarasan Green Software Foundation: Efisiensi energi, Efisiensi perangkat keras
Rekomendasi:
Pertimbangkan manfaat penyajian sisi server ini:
- Ketika daya server berasal dari alternatif yang kurang berpolusi daripada lokal klien.
- Ketika perangkat keras di server memiliki rasio pemrosesan-energi yang lebih baik.
- Dapat menggunakan penembolokan terpusat untuk mengurangi beberapa render yang tidak perlu.
- Mengurangi jumlah perjalanan pulang-pergi browser-ke-server bisa sangat penting ketika perangkat klien memiliki tautan lossy.
- Ketika perangkat klien lebih tua dan memiliki CPU yang lebih lambat. Pengguna tidak perlu meningkatkan perangkat mereka untuk mendukung browser modern.
Pertimbangkan manfaat penyajian sisi klien ini:
- Ketika perangkat pengguna akhir lebih cocok, mendorong tanggung jawab penyajian kepada klien.
- Lebih efisien hanya untuk merender apa yang diperlukan dan seperti yang diminta, dibandingkan dengan merender semuanya setidaknya sekali.
- Tidak perlu server, karena Anda dapat mengandalkan penyimpanan statis.
- Penembolokan browser digunakan pada klien.
Waspadai desain UX untuk keberlanjutan
Pertimbangkan bagaimana desain UX beban kerja memengaruhi keberlanjutan dan menentukan opsi apa yang ada untuk meningkatkan efisiensi energi dan mengurangi beban jaringan, pemrosesan data, dan sumber daya komputasi yang tidak perlu.
Keselarasan Green Software Foundation: Efisiensi energi
Rekomendasi:
- Pertimbangkan untuk mengurangi jumlah komponen yang akan dimuat dan dirender di halaman.
- Tentukan apakah aplikasi dapat merender gambar dan video beresolusi lebih rendah.
- Jangan merender gambar ukuran penuh sebagai gambar mini tempat browser melakukan pengubahan ukuran.
- Menggunakan gambar ukuran penuh sebagai gambar mini atau gambar yang diubah ukurannya akan mentransfer lebih banyak data, lalu lintas jaringan yang tidak perlu, dan penggunaan CPU sisi klien tambahan karena pengubahan ukuran gambar dan pra-penyajian.
- Memastikan tidak ada halaman yang tidak digunakan akan membantu meminimalkan desain UX.
- Pertimbangkan pencarian dan ketercarian. Memudahkan pengguna untuk menemukan apa yang mereka cari membantu menurunkan jumlah data yang disimpan dan diambil.
- Pertimbangkan untuk menyediakan UI yang lebih ringan, menggunakan lebih sedikit sumber daya dan dengan dampak yang lebih rendah pada keberlanjutan, dan memberi pengguna pilihan berdasarkan informasi.
- Hemat energi dengan menawarkan aplikasi dan situs web Anda dalam mode gelap, dengan latar belakang gelap.
- Pilih untuk menggunakan font sistem jika memungkinkan untuk menghindari memaksa klien mengunduh font tambahan, yang menyebabkan lebih banyak beban jaringan.
Memperbarui kode warisan
Pertimbangkan untuk meningkatkan atau menghentikan kode warisan jika tidak berjalan pada infrastruktur cloud modern atau dengan pembaruan terbaru.
Keselarasan Green Software Foundation: Efisiensi perangkat keras
Rekomendasi:
- Identifikasi kode warisan yang tidak efisien yang cocok untuk modernisasi.
- Tinjau apakah ada opsi untuk berpindah ke tanpa server atau opsi PaaS yang dioptimalkan.
- Pertimbangkan tradeoff ini: Memperbarui kode lama yang mungkin tidak digunakan lagi dapat menghabiskan waktu yang berharga.
Langkah selanjutnya
Tinjau pertimbangan desain untuk platform aplikasi.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk