คำว่า มัลติเทียร์(multitier)เป็นศัพท์ทางวิศวกรรมซอฟแวร์ บางทีอาจเรียกว่า สถาปัตย์กรรมแบบ n-tier ความหมายก็หมายถึงรูปแบบหรือนวัฒกรรมของการพัฒนาซอฟแวร์แบบใหม่ ที่ทดแทนรูปแบบการพัฒนาแบบ ไคลเอ็นท์-เซิร์ฟเวอร์(Client-Server) หรือแบบ 2-Tiers ซึ่งเป็นแบบเดิม โดยทำการแยกส่วนแอพพลิเคชั่นโปรแกรม ออกจากดาต้าเบสเซิร์ฟเวอร์โดยสิ้นเชิง ส่วน Store Procedure ,Trigger ก็ยังฝังอยู่ในดาต้าเบสเซิร์ฟเวอร์เหมือนเดิม เพื่อลดภาระของ client application และความรวดเร็วในการประมวลผล จุดประสงค์หลักของสถาปัตยกรรมแบบมัลติเทียร์ก็เพื่อลดภาระการทำงานของดาต้าเบสเซิร์ฟเวอร์(database server)
แบบ client-Server
เมื่อผู้ใช้งานที่เครื่อง Client ต้องการข้อมูล ก็จะร้องขอข้อมูล(Reques Data)โดยส่งคำสั่ง SQL ไปดึงข้อมูลจาก database server โดยตรง หากมีจำนวน client เชื่อมต่ออยู่เป็นจำนวนมาก database server จะทำงานหนักประสิทธิภาพในการทำงานของระบบงานจะลดลง
แบบ multitier
คอนเซ็ปง่ายๆ คือ ทำการสร้าง application server ไปฝังไว้ในเครื่อง application server ต่างหากหรืออาจจะเอาไว้เครื่องเดียวกันกับ database server ก็ได้ เมื่อผู้ใช้งานที่เครื่อง client ต้องการข้อมูล แทนที่จะร้องขอข้อมูลไปยัง database server โดยตรงก็ไม่ใช่ แต่จะร้องขอผ่าน Application Server เพื่อทำการดึงข้อมูลจาก database server เพื่อส่งกลับมาให้ client ทำให้ database server ทำงานน้อยลงเป็นการลดภาระเซิร์ฟเวอร์หรือนี่แหล่ะที่เรียกกันว่า การทำ load balancing การเขียนโปรแกรมแบบมัลติเทียร์นี้มีหลักง่ายๆคือ
ข้อดี
ข้อเสีย
ซอฟแวร์ที่สนับสนุนการสร้างซอฟแวร์แบบ multitier
แต่เดิมการพัฒนาซอฟแวร์แบบมัลติเทียร์นั้นสร้างค่อนข้างยุ่งยาก และยากต่อการติดตั้งใช้งาน ในปัจจุบันมีเครื่องมือที่สนับสนุนการสร้างซอฟแวร์แบบมัลติเทียร์ได้สะดวกขึ้นได้แก่
AJAX หรือAsynchronous JavaScript And XML เป็นวิธีการพัฒนาเว็บแอพพลิคเคชัน ให้มีความสามารถโต้ตอบกับผู้ใช้งานได้ดีขึ้น
โดยนำความสามารถของเทคโนยีหลายๆ อย่างมารวมกันอันได้แก่
เป็นblog ที่ดีมากๆเลยค่ะ
ให้ความรู้ในเรื่องที่ยาก แต่สามารถใช้คำอธิบายที่ทำให้สามารถเข้าใจได้ง่าย
ขอบคุณมากค่ะ
ขอบพระคุณที่อ่านแล้วเข้าใจ
คือผมอาจจะพูดขัดแย้งซักหน่อยนะคับ เรื่อง ความเร็วในการดึงข้อมูล
การติด application ไว้ที่ client เป็นการประมวลผมฝั่ง client ซึ่งเร็วที่สุดอยู่แล้วเพราะไม่ต้องใช้ server ประมวลผลเครื่องเดียว
ยกตัวอย่างนะคับ เช่น การ do while ผม สมมุติผม do while แล้วประมวลผม 3000 reccord ให้คำนวนร้อยละออกมา ในขณะนั้นก็
มีเครื่องอื่นใช้งานพร้อมกันอีก 20 เครื่อง server คุณก็ต้องประมวลผล 3000x20 = 60000 reccord แล้วในขณะที่ถ้าคุณใช้ client
แต่ละเครื่องประมวลผล(ประมวลผมฝั่ง client) จะประมวลผล 3000x1 = 3000 reccord เพราะฉะนั้นบอกได้เลยว่า client
application เร็วสุด
ข้อเสียขอวิธีนี้คือ โปรแกรมคุณจะต้องทำตัว set up และไปติดตั้งให้ client ทุกตัว เหนื่อยหน่อย และอาจจะต้องเจอปัญหาเรื่องการ
hack และ virus ในแต่ละเครื่อง client อีก
ที่นี้ก็มันดูวิธีการประมวลผลฝั่ง serverบ้าง พวกนี้ตัวอย่าง ก็จะเป็นพวก web page, web application client คุณจะทำการส่งคำ
ร้องในการประมวลผลไปนัง server serverคุณก็จะทำการเรียก database แล้วทำการประมวลผลข้อมูล ถ้าเป็น web ก็จะเปลี่ยน
ข้อมูลของคุณให้เป็น html แล้วส่งกลับไปให้ browser
ข้อเสียของ
ยังไงวิธีนี้ก็ช้ากว่าวิธีแรกแน่นอน เพราะประมวลผลอยู่ที่เดียว หากต้องการเพิ่มความเร็ว ต้องทำ farm server คับ คือ limit
connection ไว้ ถ้า connection เต็วก็ไปประมวลผล serverอีกตัว
ส่วน load balancing ผมเข้าใจว่ามันคือการต่อสายแลนเข้า router หลายหลายเส้น เพื่อขยาย traffic ในการเชื่อมต่อ internet ไม่
ได้เกี่ยวกับ muti tier นะคับ
สองท่านมองคนละมุม อาจารย์สำราญฯ เป็นการมองเชิงซอฟต์แวร์ ส่วนคุณ poppy_lovery จะมองมุม balancing ด้าน Haradware