Oke Lanjut..
What ?
Apa Itu Software Arsitektur? Software architecture adalah konsep dan prinsip-prinsip yang digunakan dalam merancang struktur organisasi perangkat lunak. Ini melibatkan pengambilan keputusan tentang elemen-elemen penting dalam perangkat lunak, termasuk komponen, pola desain, antarmuka, dan hubungan antara mereka.
Arsitektur perangkat lunak menggambarkan struktur dan interaksi antara komponen-komponen perangkat lunak, serta aturan dan keputusan desain yang membentuk sistem secara keseluruhan. Tujuan dari arsitektur perangkat lunak adalah untuk menciptakan sistem yang dapat dipahami, dapat dipelihara, dan dapat diperluas dengan baik.
Arsitektur perangkat lunak memainkan peran penting dalam pengembangan perangkat lunak yang sukses. Hal ini membantu dalam mengatur kompleksitas sistem, mengoptimalkan kinerja, meningkatkan keandalan, meningkatkan skalabilitas, dan memfasilitasi perubahan dan evolusi sistem.
Dalam praktiknya, arsitektur perangkat lunak biasanya diwujudkan dalam bentuk diagram seperti diagram blok, diagram komponen, diagram aliran data, atau diagram lainnya yang memvisualisasikan elemen-elemen arsitektur dan hubungan antara mereka.
Berikut adalah beberapa istilah yang umum digunakan dalam arsitektur perangkat lunak:
Arsitektur Perangkat Lunak (Software Architecture): Merujuk pada desain tingkat tinggi yang menentukan struktur organisasi dan komponen perangkat lunak. Ini melibatkan pengambilan keputusan tentang elemen-elemen penting seperti pola desain, komponen, antarmuka, dan hubungan antara mereka.
Komponen (Component): Unit modular dalam perangkat lunak yang memiliki tanggung jawab tertentu dan dapat berinteraksi dengan komponen lain. Komponen dapat digunakan ulang dan memungkinkan pemisahan tanggung jawab dalam sistem.
Pola Desain (Design Patterns): Solusi umum yang telah terbukti untuk masalah desain perangkat lunak yang umum. Pola desain menyediakan pendekatan yang diuji waktu untuk memecahkan masalah tertentu dan membantu dalam pengembangan perangkat lunak yang lebih terstruktur dan dapat dipelihara.
Arsitektur Berorientasi Layanan (Service-Oriented Architecture, SOA): Pendekatan arsitektur yang berfokus pada pemisahan fungsionalitas perangkat lunak menjadi layanan yang independen. Layanan ini berkomunikasi melalui antarmuka terdefinisi dan dapat digunakan ulang dan diintegrasikan dengan fleksibilitas.
Arsitektur Berorientasi Mikro (Microservices Architecture): Pendekatan arsitektur yang mengorganisasi aplikasi sebagai sekumpulan layanan kecil, terisolasi, dan independen. Setiap layanan memiliki tanggung jawab spesifik dan berkomunikasi melalui protokol ringan seperti HTTP atau pesan antara proses.
Arsitektur Berbasis Model (Model-Driven Architecture, MDA): Pendekatan arsitektur yang menggunakan model perangkat lunak sebagai artefak utama dalam siklus hidup pengembangan perangkat lunak. Model ini digunakan untuk menghasilkan kode sumber dan komponen perangkat lunak.
Arsitektur Berbasis Layanan (Service-Based Architecture): Pendekatan arsitektur yang melibatkan pembagian fungsionalitas aplikasi menjadi layanan yang dapat diakses melalui antarmuka yang ditentukan. Layanan ini bisa berjalan di lingkungan yang terdistribusi dan berkomunikasi melalui protokol seperti SOAP atau REST.
Arsitektur Berorientasi Kejadian (Event-Driven Architecture, EDA): Pendekatan arsitektur yang berfokus pada aliran peristiwa dalam sistem. Komponen-komponen dalam arsitektur ini berkomunikasi melalui peristiwa dan respon terhadap perubahan status dan kejadian yang terjadi.
Arsitektur Berorientasi Domain (Domain-Driven Architecture, DDD): Pendekatan yang menempatkan fokus pada pemodelan dan desain perangkat lunak berdasarkan pemahaman yang kuat tentang domain bisnis atau masalah yang sedang diselesaikan.
Arsitektur Berbasis Layanan Web (Web Service-Based Architecture): Pendekatan yang menggunakan layanan web sebagai komponen utama dalam arsitektur. Layanan ini dapat diakses melalui protokol seperti SOAP atau REST dan memungkinkan aplikasi untuk berkomunikasi melalui jaringan.
Ini hanyalah beberapa istilah yang umum digunakan dalam arsitektur perangkat lunak, dan masih banyak lagi istilah yang terkait dengan konsep arsitektur yang lebih spesifik dan canggih.
Tradisional Vs Serverless ?
Tradisional dan serverless adalah dua pendekatan yang berbeda dalam pengembangan dan pengelolaan aplikasi. Berikut adalah perbandingan antara keduanya:
Tradisional:
Infrastruktur: Dalam pendekatan tradisional, Anda perlu mengelola dan menyediakan infrastruktur sendiri, seperti server fisik atau virtual, jaringan, basis data, dan sebagainya.
Skala: Anda harus memperkirakan dan mengatur kapasitas infrastruktur sesuai dengan permintaan yang diharapkan. Jika aplikasi menghadapi lonjakan lalu lintas, Anda mungkin harus melakukan penyesuaian manual untuk menangani beban tersebut.
Manajemen: Anda bertanggung jawab untuk mengelola semua aspek aplikasi, termasuk skalabilitas, toleransi kesalahan, pemantauan, dan keamanan.
Biaya: Anda harus membayar untuk infrastruktur yang tetap, terlepas dari seberapa banyak aplikasi digunakan. Ini dapat menjadi mahal jika aplikasi mengalami fluktuasi lalu lintas yang tinggi atau jika permintaan tidak terduga.
Serverless:
Infrastruktur: Dalam pendekatan serverless, penyedia cloud mengelola infrastruktur untuk Anda. Anda tidak perlu memikirkan tentang server fisik atau virtual, jaringan, atau basis data. Pemrosesan aplikasi terjadi pada level fungsi.
Skala: Serverless secara otomatis mengatur skala aplikasi sesuai dengan permintaan. Fungsi hanya dijalankan saat ada permintaan, dan penyedia cloud secara otomatis menangani penugasan sumber daya yang diperlukan.
Manajemen: Anda masih bertanggung jawab untuk mengelola logika aplikasi, tetapi tugas seperti skalabilitas, toleransi kesalahan, pemantauan, dan keamanan diambil alih oleh penyedia cloud.
Biaya: Anda hanya membayar untuk penggunaan yang sebenarnya. Anda tidak perlu membayar untuk infrastruktur yang tidak digunakan. Biaya serverless biasanya berdasarkan jumlah fungsi yang dijalankan dan waktu eksekusi fungsi.
Keuntungan serverless termasuk pemeliharaan infrastruktur yang lebih rendah, skalabilitas otomatis, dan model biaya yang lebih sesuai dengan penggunaan yang sebenarnya. Namun, pendekatan tradisional memberikan fleksibilitas yang lebih besar dalam hal kontrol dan konfigurasi infrastruktur.
Pilihan antara pendekatan tradisional dan serverless tergantung pada kebutuhan aplikasi Anda, tingkat kontrol yang Anda inginkan, dan sumber daya yang tersedia. Penting untuk mempertimbangkan keuntungan dan tantangan dari masing-masing pendekatan sebelum memutuskan mana yang paling sesuai dengan kebutuhan Anda.
Who ?
Software Arsitektur Engineer ?
Soon
Why ?
Soon
When ?
Kapan harus dilibatkan software arsitek dan software design?
Soon
Where ?
Dimana software arsitek dan design bekerja?
Soon
How ?
Soon