Martin Fowler menunjukkan dengan jelas:
Layering adalah salah satu teknik paling umum yang digunakan perancang perangkat lunak untuk memecah sistem perangkat lunak yang rumit. Anda melihatnya di arsitektur mesin, di mana lapisan turun dari bahasa pemrograman dengan panggilan sistem operasi ke driver perangkat dan set instruksi CPU, dan ke gerbang logika di dalam chip. Jaringan memiliki FTP berlapis di atas TCP, yang di atas IP, yang di atas ethernet.
Ketika memikirkan suatu sistem dalam hal lapisan, Anda membayangkan subsistem utama dalam perangkat lunak yang diatur dalam beberapa bentuk lapisan kue, di mana setiap lapisan bersandar pada lapisan bawah. Dalam skema ini, lapisan yang lebih tinggi menggunakan berbagai layanan yang ditentukan oleh lapisan bawah, tetapi lapisan bawah tidak menyadari lapisan yang lebih tinggi. Selain itu, setiap lapisan biasanya menyembunyikan lapisan bawahnya dari lapisan di atas, jadi lapisan 4 menggunakan layanan lapisan 3, yang menggunakan layanan lapisan 2, tetapi lapisan 4 tidak mengetahui lapisan 2. (Tidak semua arsitektur pelapis opak seperti ini , tetapi sebagian besar — atau lebih tepatnya sebagian besar sebagian besar buram.)
Memecah sistem menjadi beberapa lapisan memiliki sejumlah manfaat penting.
• Anda dapat memahami satu lapisan sebagai satu kesatuan yang koheren tanpa mengetahui banyak tentang lapisan lainnya. Anda dapat memahami cara membangun layanan FTP di atas TCP tanpa mengetahui detail cara kerja ethernet.
• Anda dapat mengganti lapisan dengan implementasi alternatif dari layanan dasar yang sama. Layanan FTP dapat berjalan tanpa perubahan ethernet, PPP, atau apa pun yang digunakan perusahaan kabel.
• Anda meminimalkan ketergantungan antar lapisan. Jika perusahaan kabel mengubah sistem transmisi fisiknya, asalkan mereka membuat IP berfungsi, kita tidak perlu mengubah layanan FTP kami.
• Lapisan membuat tempat yang baik untuk standardisasi. TCP dan IP adalah standar karena mereka menentukan bagaimana lapisan mereka harus beroperasi.
• Setelah Anda membangun sebuah lapisan, Anda dapat menggunakannya untuk banyak layanan tingkat yang lebih tinggi. Dengan demikian, TCP / IP digunakan oleh FTP, telnet, SSH, dan HTTP. Kalau tidak, semua protokol tingkat tinggi ini harus menulis protokol tingkat rendah mereka sendiri. Dari Perpustakaan Kyle Geoffrey Passarelli
Layering adalah teknik yang penting, tetapi ada kelemahannya.
• Lapisan merangkum beberapa, tetapi tidak semua, hal-hal baik. Akibatnya, Anda terkadang mendapatkan perubahan berjenjang. Contoh klasik dari ini dalam aplikasi perusahaan berlapis adalah menambahkan bidang yang perlu ditampilkan pada UI, harus ada dalam database, dan dengan demikian harus ditambahkan ke setiap lapisan di antaranya.
• Lapisan ekstra dapat merusak kinerja. Di setiap lapisan, hal-hal yang biasanya perlu diubah dari satu representasi ke yang lain. Namun, enkapsulasi fungsi yang mendasarinya sering memberi Anda keuntungan efisiensi yang lebih dari kompensasi. Lapisan yang mengontrol transaksi dapat dioptimalkan dan kemudian akan membuat semuanya lebih cepat. Tetapi bagian tersulit dari arsitektur berlapis adalah memutuskan lapisan mana yang harus dimiliki dan apa tanggung jawab setiap lapisan.