วันศุกร์ที่ 17 ธันวาคม พ.ศ. 2553

Three-Tier Model

Three-tier model

Architecture style



สถาปัตยกรรมแบบ 3-Tier เป็นการออกแบบสถาปัตยกรรมของระบบ (System Architecture) โดยมีแนวคิดพื้นฐาน คือ

การแบ่งแยกหน้าที่ความรับผิดชอบของแต่ละ tier ไม่ว่าจะเป็น
Presentation Tier รับผิดชอบในการแสดงผลด้าน UI
Business Logic Tier รับผิดชอบในการประมวลผลด้าน business logic
Data Tier รับผิดชอบในส่วนการจัดการฐานข้อมูล (ในกรณีของ SOA จะมี Service Tier เพิ่มเข้ามาเพื่อดูแลในส่วนการติดต่อสื่อสารกับ service อื่นๆ ซึ่งมีได้มากมายในระบบ)

Three-tier architecture แบ่งการทำงานเป็น 3 ส่วน
1. ส่วนการแสดงผล (Display)
2. ส่วนการประมวลผล (Processing)
3. ส่วนของฐานข้อมูล (Database)

โครงสร้างแบบ Three-tier architecture ประกอบด้วย 3 ส่วน
1. เครื่อง Client
2. เครื่อง Server ตัวกลาง
3. เครื่อง Server

โครงสร้างแบบ Three tier พยายามเพื่อกำจัดข้อจำกัดของโครงสร้างแบบ two tier โดยแบ่งส่วนการแสดงผลการประมวลผล และฐานข้อมูลออกจากกัน ออกจากกัน เป็น 3 ส่วน เครื่องมือที่เหมือนกันสามารถใช้แสดงผลได้เหมือนกันกับในระบบของ two tier อย่างไรก็ตามเครื่องมือเหล่านี้ถูกใช้สำหรับการควบคุมการแสดงผล เมื่อการคำนวณหรือประมวลข้อมูลถูกใช้โดยเครื่อง Server ตัวกลางมีความสามารถในการคำนวณสร้างการร้องขอเช่นเดียวกับตัว Client เพื่อส่งคำสั่งไปยังเครื่อง Server ได้ นอกจากนี้เครื่อง Server กลางยังสามารถเข้ารหัสเป็นภาษาที่ใช้กันทั่วไปได้ เช่น ภาษา C ฟังก์ชั่นที่ใช้ใน Server ชั้นกลางนี้อาจจะใช้ Multi-threaded และสามารถประมวลผลให้กับ Client หลายๆ ตัวพร้อมกัน แม้ว่าจะใช้โปรแกรมประยุกต์ต่างกัน
ระบบ Three tier จะใช้เทคโนโลยีที่หลากหลาย โดยการเรียกใช้จากเครื่อง Client ไปยังเครื่อง Server จะกระทำผ่านโปรแกรมย่อย (RPC) RPC จะถูกเรียกจากหน่วยแสดงผล (Client) ไปยัง Server ชั้นกลาง ซึ่งการใช้ RPC จะยืดหยุ่นกว่า SQL RPC จะเกิดจากการร้องขอของ Client โดยเครื่อง Client จะส่งผ่านค่าตัวแปร สำหรับการร้องขอและระบุถึงโครงสร้างข้อมูล เพื่อรับค่าที่จะส่งกลับมา ในการแสดงผลของ Three tier นั้น เครื่อง Client ไม่ต้องการที่ต้องใช้ SQL อีกต่อไป ทำให้การทำงานยืดหยุ่นมากขึ้น


รูปที่ 1 Three Tier Architecture Most of the logic processing is handled by functionality servers.
Middle-tier code can be accessed and utilized by multiple clients.

นอกจากนี้ประโยชน์อีกอย่างหนึ่ง ก็คือการแสดงผลโดยใช้โครงสร้างนี้ สามารถทำงานแบบขนานได้ โดยใช้โปรแกรมพิเศษ อีกทั้ง โครงสร้างของ Three tier นั้นยังยืดหยุ่นในด้านที่เก็บทรัพยากร ซึ่งเมื่อมีการเปลี่ยนแปลงของโปรแกรม เราสามารถแก้ไขที่ตัว เซิร์ฟเวอร์กลางเพียงแค่ครั้งเดียว นอกจากนี้ยังทำให้ความแออัดของข้อมูลในเครือข่ายลดลงด้วย

Three-Tier Architecture แบ่งออกเป็น 3 layers
1. Presentation จะเอาไปไว้ที่ Client
2. Application จะเอาไปไว้ที่ server ตัวหนึ่ง
3. Data management
จะเอาไปไว้ที่ Server อีกตัวหนึ่ง

รูปที่ 2 ตัวอย่างการแบ่ง ออกเป็น 3 layers

web application ส่วนใหญ่จะเป็นแบบ 3 - tierคือฝั่ง Client เป็น browser ที่ผู้ใช้ใช้งาน ส่วนฝั่ง server น้อยสุดก็จะมี 2 ตัวคือ ตัวหนึ่งทำหน้าที่เป็น web server ซึ่งขึ้นอยู่กับว่าเครื่องที่เป็น Hardware ที่ใช้เป็น Server มีประสิทธิภาพสูงแค่ไหน ถ้าสูงพอเขาก็จะรวมเอา web server กับ application server มาไว้ในตัวเดียวกัน ส่วนอีกตัวหนึ่งทำหน้าที่เป็น database server ซึ่งจะถูกแยกออกมาเป็นอีกหนึ่งตัวอยู่แล้ว แต่ถ้าบางระบบมี application ที่ใหญ่มาก web server รับผิดชอบงานส่วน application ไม่ไหว เขาก็จะแบ่งออกเป็นอีก server หนึ่งกลายเป็น 4 – tier
หรือในบางระบบที่มีขนาดใหญ่มากก็จะมีการทำเป็น
Clustering คือการที่ฝั่ง Browser ต่อผ่าน Internet มาถึงฝั่ง web server และตัว web server ก็จะมีการแตกออกเป็นหลาย ๆ ตัวอีก เช่น เว็บไซท์ Yahoo , Microsoft และ Web server แต่ละตัวก็จะติดต่อกับ application layer เป็นกลุ่มๆอีก แต่ละ Application Server ก็จะแบ่งหน้าที่กันไป และ Database server มักจะต่อตรงเข้ากับ Database แต่ละตัวโดยตรง ดัง
รูป

ลักษณะนี้เรียกว่า Clustering เพราะว่าในหนึ่งกระบวนการทำงานจะถูกจัดโดยกลุ่มๆหนึ่ง เรียกว่าเป็น Multi –Tier



รูปที่ 3 ระบบ ATM แต่ผ่านทาง internet โดยจะแบ่ง web server และ DB server เป็น 3-tier

สถาปัตยกรรมแบบลูกข่าย/แม่ข่าย 3 ชั้น (Three-Tier Client/Server Architecture)

มักใช้ในแอปพลิเคชันเว็บ (Web application) โดยมีการเพิ่มชั้นกึ่งกลาง (Intermediate layer) ระหว่างลูกข่าย (Client) และแม่ข่ายฐานข้อมูล (Database server) ซึ่งเรียกชั้นกึ่งกลางนี้ว่าแม่ข่ายแอปพลิเคชัน (Application server) หรือแม่ข่ายเว็บ (Web server) โดยจะเป็นส่วนที่ทำหน้าที่เก็บซอฟต์แวร์การเชื่อมต่อเว็บ (Web connectivity software) รวมถึงกฎและข้อบังคับต่างๆ (Rules and business logic: Constraint) ของแอปพลิเคชันในการเข้าถึงฐานข้อมูลในแม่ข่ายฐานข้อมูล (Database server) โดยมีบทบาทคล้ายท่อในการส่งข้อมูลที่ถูกประมวลผลบางส่วนระหว่างแม่ข่ายฐานข้อมูล (Database server) นอกจากนี้ยังมีลักษณะพิเศษเพิ่มเติมเกี่ยวกับความปลอดภัย (Security) โดยจะทำการเข้ารหัสข้อมูล (Encrypt)

ที่เครื่องแม่ข่ายก่อนจะทำการส่งต่อออกไปถอดรหัส (Decrypt) ที่เครื่องลูกข่าย
Three-Tier Architecture มองเป็น 3 Component หลัก อาจประกอบด้วย Client, Middleware, Application Server, Database Server หรืออื่นๆ ตัวอย่างดังรูปที่ 5



รูปที่ 5 สถาปัตยกรรมแบบลูกข่าย / แม่ข่าย 3 ชั้น ระดับตรรก (Logical Three-Tier Client / Server Architecture)

Three Tier Model คำสั่งจะถูกส่งไปยัง Middle-Tier ซึ่ง Middle-Tier จะส่งคำสั่ง SQL ไปยัง Data Base อีกครั้งหนึ่ง เมื่อมีการประมวลคำสั่ง SQL แล้วจะมีการสั่งผลลัพธ์กลับมายัง Middle-Tier จาก Middle-Tier จึงสั่งผลลัพธ์มายัง user อีกครั้งหนึ่ง ซึ่ง Middle Tier นี้สามารถจัดการคำสั่งควบคุมในการไป ประมวลผลข้อมูลมาเก็บไว้และแจกจ่ายไปยัง User ต่างๆ เมื่อมีการร้องขอใช้งาน อีกอย่างที่สำคัญคือ การทำงานที่ Middle-Tier นี้จะช่วยให้ง่ายต่อการใช้งานแบบ user-friendly มากที่สุด

การเปรียบเทียบความสามารถระหว่าง Two Tier และ Three Tier

รูปกราฟ ที่ 6
ถึง รูปกราฟที่ 8 แสดงถึงเวลาที่ใช้แปลง สำหรับ two tier และ three tier เวลาที่ใช้ในการแปลงคือ เวลาของระบบในการติดต่อสื่อสาร ไม่ใช่เวลาของคน มีหน่วย เป็น c/s


รูปที่ 6 Initial Development Effort

รูปที่ 6 แสดงถึง การเปรียบเทียบระบบ โปรแกรมประยุกต์แบบ Three Tier จะใช้เวลาในการพัฒนานานกว่า เพราะใช้ภาษาในระดับล่าง ของภาษาระดับที่ 3 (Third Generation Language) เช่น C และความยากในการติดต่อ ซอฟท์แวร์โมดูลที่ไม่ขึ้นต่อกัน บน platform ที่ต่างกัน ในทางตรงข้าม โครงสร้างแบบ Two tier อนุญาตให้ใช้ ภาษาในระดับสูงในเครื่องมือที่ใช้ในการสร้างส่วนที่ติดต่อกับผู้ใช้


รูปที่ 7 Subsequent Development Efforts

จากรูปจะเห็นได้ว่าเวลาที่ใช้ในส่วนของ เซิร์ฟเวอร์ชั้นกลางใช้เวลาน้อยมาก และสามารถนำข้อมูลมาใช้ได้ใหม่ ซึ่งมีประโยชน์มาก โดยเฉพาะองค์กรต่างๆ ซึ่งต้องใช้โปรแกรมประยุกต์เหมือนกัน การเรียกใช้เหมือนกันก็มีโอกาสสูง ก็ไม่ต้องเสียเวลาไปค้นหาข้อมูลอีก



รูปที่ 8 Client Tool Migration


รูปที่ 8 จะเป็นการเปรียบเทียบเมื่อมีการย้าย หรือเปลี่ยนเครื่องมือ ในระบบ Two Tier ต้องแก้ทุกเครื่องในระบบ แต่ ในระบบ Three Tier เพียงแก้ใน เซิร์ฟเวอร์ชั้นกลาง เมื่อย้ายเครื่องมือใหม่ ผู้ที่พัฒนาจะต้องสร้างตัวแสดงผลใหม่ และเพิ่ม RPC

ข้อดี

การพัฒนาในแต่ละเลยอร์ สามารถแยกกันพัฒนาได้ เมื่อพัฒนาจนเสร็จ เพียงแต่นำแต่ละ layer มาเชื่อมต่อกันเท่านั้น มีความคล้ายคลึงกับการใช้ Model-View-Controller

นอกจากการแบ่งระบบออกเป็นเลยอร์แล้ว ในแต่ละเลยอร์ จะมีการแบ่งระบบออกเป็นระบบย่อย ของแต่ละคลาส เพื่อลดความซับซ้อนของระบบลง โดยระบบย่อยระบบหนึ่งจะประกอบด้วยกลุ่มของคลาสที่มีความสัมพันธ์ใกล้ชิดกัน มีฟังก์ชันการทำงานที่เกี่ยวข้องกันมาก และต้องไม่มีคลาสที่ไม่เกี่ยวข้องกันอยู่ในระบบย่อยเดียวกัน

ขอบคุนที่มา *** จำไม่ได้ ต้องขอภัยด้วยคะ ''