สถาปัตยกรรมของ Multitier Client Server

ความรู้เบื้องต้น

เมื่อกล่าวถึงระบบของไคร์เอนท์/เซิร์ฟเวอร์เรามักรู้จักระบบไคร์เอนท์/เซิร์ฟเวอร์ในด้านการเป็นผู้ที่คอยจัดการกับข้อมูลต่างๆทั้งทางตรงและทางอ้อมผ่านตัวเซิร์ฟเวอร์ ในสมัยก่อนไคร์เอนท์/เซิร์ฟเวอร์ทำได้เฉพาะในระบบเล็กๆเท่านั้น  ไม่สามารถใช้ผ่านระบบเครือข่ายขนาดใหญ่ได้เนื่องจากข้อจำกัดในด้านเครื่องมือและเทคโนโลยี
เมื่อมีการตื่นตัวในการใช้ระบบเครือข่ายมากขึ้นแต่ความสามารถในระบบไคร์แอนท์/เซิร์ฟเวอร์ยังไม่เพียงพอทางองค์กรต่างๆ จึงเริ่มมีการปรับปรุงให้ระบบไคร์เอนท์/เซิร์ฟเวอร์มีประสิทธิภาพมากขึ้นทั้งความสะดวกในการใช้และขนาดของระบบที่เหมาะสมแต่ปัญหาที่ตามมาก็คือ ลักษณะโครงสร้างแบบใดจึงจะเหมาะสมกับระบบที่ใช้กันอยู่?  :-Two Tier หรือ Three Tier???
จากสถิติของหน่วยสำรวจตลาดของ Standish Group International, Inc. พบว่าอัตราการใช้ไคร์เอนท์/เซิร์ฟเวอร์แบบ Three Tier มีอัตราเท่ากับ17% ในปี 1996  และคาดว่าจะเติบโตขึ้นไปเรื่อยๆในอนาคต
 โครงสร้างของระบบมีผลต่อการจัดการและรูปร่างหน้าตาของการออกแบบซอฟต์แวร์ การเลือกลักษณะโครงสร้างของระบบจะขึ้นอยู่กับความซับซ้อนของโปรแกรมประยุกต์ ระดับของข้อมูล ความต้องการในส่วนที่ติดต่อกับผู้ใช้ ประเภทของเครือข่าย และภาพโดยรวมของโปรแกรมประยุกต์ก่อนที่จะตัดสินใจเลือกชนิดของโครงสร้าง
การออกแบบโครงสร้างที่ไม่เหมาะสมหรือความบกพร่องของการใช้งานมีผลต่อการตอบสนองของไคร์เอนท์/เซิร์ฟเวอร์การเลือกโครงสร้างจะมีผลมากต่อการพั?นาและการดูแลรักษาโปรแกรมประยุกต์ เอกสารฉบับนี้จะระบุถึงความคิดพื้นฐานของโครงสร้างไคร์เอนท์/เซิร์ฟเวอร์ คำจำกัดความของโครงสร้างTwo Tier และ Three Tier และวิเคราะห์ถึงประโยชน์ ข้อจำกัดของโครงสร้างทั้งสองประเภทรวมทั้งเปรียบเทียบความแตกต่างในการพัฒนาความยืดหยุ่นและง่ายในการนำมาใช้ใหม่

คำจำกัดความ

 เอกสารที่เกี่ยวกับไคร์เอนท์/เซิร์ฟเวอร์มักระบุความหมายของไคร์เอนท์/เซิร์ฟเวอร์อย่างสับสนความหมายที่แท้จริงของไคร์เอนท์/เซิร์ฟเวอร์นั้นคืออะไร   ที่จริงแล้วไคร์เอนท์และเซิร์ฟเวอร์เป็นตัวซอฟท์แวร์ ไม่มีอุปกรณ์?าร์ดแวร์มาเกี่ยวข้องรูปแบบขั้นพื้นฐานของไคร์เอนท์/เซิร์ฟเวอร์จะเกี่ยวข้องกับโปรแกรมการร้องขอ(request)ซึ่งตัวไคร์เอนท์จะส่งออกไปเมื่อตัวเซิร์ฟเวอร์ได้รับคำร้องขอ?ั้นตัวเซิร์ฟเวอร์จะพยายามตอบรับการร้องขอนั้นและจะส่งโปรแกรมการตอบรับ(response) ซึ่งจากรูปที่1 จะบอกถึงกระบวนการแลกเปลี่ยนโปรแกรมระหว่างตัวไคร์เอนท์กับตัวเซิร์ฟเวอร์ กระบวนการของตัวไคร์เอนท์ จะส่งคำร้องขอไปยังตัวเซิร์ฟเวอร์ตัวเซิร์ฟเวอร์จะทำการแปลข้อความและพยายามทำตามคำร้องขอนั้นซึ่งอาจจะเกี่ยวข้องกับฐานข้อมูล การประมวลผลข้อมูลการควบคุมอุปกรณ์ภายนอก หรือการส่งคำร้องขอเพิ่มเติมไปยังเซิร์ฟเวอร์ตัวอื่น ตามลักษณะโครงสร้างแล้วไคร์เอนท์หนึ่งตัวสามารถส่งคำร้องขอไปยังเซิรฟ์เวอร์ได้หลายตัวและเซิร์ฟเวอร์หนึ่งตัวก็สามารถให้บริการแก่ไคร์เอนท์ได้หลายตัวเช่นกัน  


รูปที่ 1 Client/ServerTransactions

การทำงานของตัวไคร์เอนท์และเซิร์ฟเวอร์นั้นตัวไคร์เอนท์จะต้องเป็นตัวเริ่มในการติดต่อกัน และตัวเซิร์ฟเวอร์จะเป็นตัวตอบรับตัวเซิร์ฟเวอร์ไม่สามารถเป็นตัวเริ่มการติดต่อได้ ไคร์เอนท์ และเซิร์ฟเวอร์เป็นซอฟท์แวร์ซึ่งติดตั้งอยู่บนฮาร์ดแวร์ที่เหมาะสมกระบวนการของไคร์เอนท์จะอยู่บนฮาร์ดแวร์และขอข้อมูลจากกระบวนการของเซิร์ฟเวอร์ซึ่งทำงานอยู่บนฮาร์ดแวร์อีกตัวหนึ่งหรือ อยู่บนฮาร์ดแวร์ตัวเดียวกันความจริงแล้วในขั้นตอนของการทำตัวต้นแบบ ผู้พัฒนาอาจจะเลือกที่จะมีทั้งตัวไคร์เอนท์ที่ใช้แสดงผลและตัวเซิร์ฟเวอร์ฐานข้อมูลอยู่บนเครื่องฮาร์ดแวร์ PC เดียวกันก่อนเพราะตัวเซิร์ฟเวอร์สามารถที่จะแยกอิสระไปเป็นระบบที่ใหญ่ขึ้นสำหรับทดสอบก่อนที่จะสร้างเป็นผลิตภัณฑ์หลังจากการพัฒนาโครงสร้างข้อมูลและโปรแกรมประยุกต์ขนาดใหญ่ได้เสร็จสมบูรณ์แล้ว
แม้ว่าไคร์เอนท์และเซิร์ฟเวอร์จะสามารถติดตั้งอยู่บนเครื่องเดียวกันได้แต่เอกสารฉบับนี้จะกล่าวถึงเฉพาะโครงสร้างที่ใช้สร้างdistributed application เช่น ตัวไคร์เอนท์และเซิร์ฟเวอร์ที่อยู่บนอุปกรณ์ที่แยกออกจากกัน
ตามที่ Bever (et al.) กล่าวว่าdistributed application ประกอบด้วยส่วนที่แยกออกจากกัน ซึ่งทำงานบนเครื่องบนเครือข่ายต่างเครื่องกันแต่ทำงานร่วมกันเพื่อทำงานให้เสร็จดังเป้าหมายที่ตั้งไว้
ตัวไคร์เอนท์บนโครงสร้างไคร์เอนท์/เซิร์ฟเวอร์ไม่จำเป็นต้องมีGUI (Graphic User Interface)  แต่ในโปรแกรมเชิงธุรกิจส่วนใหญ่จะมีส่วนของ GUI อยู่ด้วย เพื่อความสะดวกของผู้ใช้  ในบางระบบตัวไคร์เอนท์จำเป็นจะต้องส่วนเพิ่มเติมขึ้นมาเช่น print spooling (เช่นnetwork print queues) หรือส่วนที่ใช้ในการแสดงผล (เช่น  X-Window)

ชนิดของโครงสร้าง

 ส่วนที่ใหญ่ที่สุดของโปรแกรมประยุกต์ที่end user ใช้ จะประกอบด้วย3 ส่วนใหญ่ๆ คือส่วนที่แสดงผลส่วนประมวลผลและส่วนของข้อมูลโครงสร้างไคร์เอนท์/เซิร์ฟเวอร์สามารถอธิบายได้โดยดูว่าส่วนประกอบที่แบ่งออกมาแล้วแยกไปตามเครือข่าย

Two-tier Architecture

ส่วนประกอบ 3 ส่วน ของโปรแกรมอันได้แก่ ส่วนแสดงผลส่วนประมวลผลและส่วนของข้อมูล ซึ่งสามารถแบ่งได้ออกเป็น2 จำพวก คือ ส่วนของรหัสของไคร์เอนท์และส่วนของฐานข้อมูลของเซิร์ฟเวอร์
โปรแกรมของไคร์เอนท์ที่ได้รับการพัฒนาแล้วนั้น จะต้องเป็นตัวหลักที่ทำงานได้อย่างคล่องแคล่วในการการส่งการร้องขอของไคร์เอนท์ ไปยังเครื่องเซิร์ฟเวอร์ซึ่งเป็นสิ่งสำคัญมากสำหรับการวางโครงสร้างแบบtwo tier
ส่วนของการแสดงผลถูกควบคุมโดยไคร์เอนท์   ส่วนการประมวลผลนั้นจะแบ่งระหว่างตัวไคร์เอนท์และตัวเซิร์ฟเวอร์และส่วนของข้อมูลนั้นจะถูกเก็บ และจัดการผ่านตัวเซิร์ฟเวอร์
ในการร้องขอข้อมูลจะอยู่ในรูปฟอร์มของSQL โดยการส่ง SQLจากไคร์เอนท์ถึงเซิร์ฟเวอร์ต้องการการเชื่อมต่อที่ค่อนข้างแน่นอนระหว่างทั้งสองชั้นไคร์เอนท์จะต้องรู้ถึงวากยสัมพันธ์ของเซิร์ฟเวอร์หรือมีการแปลงรูปแบบผ่าน API (Application Program Interface) และมันจะต้องรู้ว่าเซิร์ฟเวอร์ว่าตั้งอยู่ที่ใดและข้อมูลจะถูกจัดการอย่างไรและข้อมูลถูกกำหนดอย่างไรการร้องขอจะถูกเก็บและประมวลผลบนเครื่องเซิร์ฟเวอร์ซึ่งเป็นศูนย์รวมของงานทั้งหมดเช่นการเช็คความถูกต้องของข้อมูลการรวบรวมข้อมูลและการรักษาความปลอดภัยของข้อมูลข้อมูลจะถูกส่งคืนไปยังตัวไคร์เอนท์ และถูกจัดการในระดับของไคร์เอนท์ แล้วแสดงผลออกมาเป็นต้น



รูปที่ 2 DataAccess Topology for two-tier architecture
Majority of functional logic exists at the client level

ข้อดีของ two tier คือโปรแกรมที่พัฒนาขึ้นมานั้นเร็วมาก เพราะระบบ two tier สามารถพัฒนาเป็นส่วนย่อยเล็กๆ ได้ หลักจากนั้นมันจะนำรหัสมาเปรียบเทียบกัน แต่มันเป็นระบบที่ค่อนข้างจะยืดหยุ่นน้อย
เครื่องมือของ two tier สามารถใช้ลักษณะโครงสร้างข้อมูล รวมทั้งการสร้างในโพรซิเยอร์ และฟังก์ชั่นได้หลายรูปแบบ อีกทั้งยังป้องกัน สิ่งที่เกิดขึ้นจากการโปรแกรม เช่นการจัดการหน่วยความจำ เครื่องมือเหล่านี้จะใช้เทคนิคการเรียกซ้ำ และใช้เทคนิค rapid application develpment(RAD) ซึ่งทำให้แน่ใจได้ว่า ความต้องการของผู้ใช้จะสามารถทำได้อย่างรวดเร็ว และสมบูรณ์
IS organizations สามารถติดต่อส่วนที่เหลืออยู่ โดยใช้คำสั่งของผู้ใช้ ผ่านเครื่องมือสำหรับการพัฒนาระบบ two tier ไคร์เอนท์/เซิร์ฟเวอร์ ซึ่งพัฒนาได้อย่างรวดเร็ว และแปลงรูปแบบได้มาก
โครงสร้างแบบ two tier สามารถทำงานได้ดีในสภาวะแวดล้อมที่ไม่มีการเปลี่ยนแปลง โครงสร้างนี้ จะไม่เหมาะสมกับ สภาวะแวดล้อมแบบกระจาย หรือแตกต่างกับกฎที่เปลี่ยนแปลงไปอย่างรวดเร็ว เพราะว่าโปรแกรมขนาดใหญ่ที่มีอยู่บนเครื่องไคร์เอนท์PC  ทำให้โครงสร้างแบบ two tier จึงเจอกับปัญหาของการควบคุม และ ปัญหาของการ re-distribution  การเปลี่ยนกฎเกณฑ์ จะต้องเปลี่ยนที่ตัวไคร์เอนท์ แต่ละตัว แต่ละโปรแกรมประยุกต์ การเปลี่ยนแปลงไคร์เอนท์ผ่านเครือข่ายเป็นงานที่ยาก เนื่องจากขาดการควบคุมการปรับปรุงรุ่นของโปรแกรมในเครื่อง ดังนั้น การปรับเปลี่ยน หรือปรับปรุงโปรแกรมจึงต้องทำกับไคร์เอนท์ทุกเครื่อง
ระบบรักษาความปลอดภัยในระบบ two tier มีความซับซ้อนมาก เพราะว่า ผู้ใช้แต่ละคนต้องใช้รหัสผ่านที่แตกต่างกัน สำหรับการประมวล SQL แต่ละครั้ง โปรแกรมไคร์เอนท์/เซิร์ฟเวอร์ที่ได้รับการพัฒนา ส่วนมากจะออกแบบโดยปราศจากการตบตา ซึ่งทำให้เพิ่มประสิทธิภาพความปลอดภัยมากขึ้น แต่โอกาสที่รหัสผ่านจะซ้ำกัน ซึ่งทำให้ผู้ใช้ที่ไม่มีในการประมวลข้อมูล หรือตารางที่ซ่อนไว้  เข้าไปใช้ข้อมูล  ทำให้ข้อมูลอาจเปลี่ยนแปลง หรือสูญหายไปได้

Three-tier Architecture

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

รูปที่ 3      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 นั้นยังยืดหยุ่นในด้านที่เก็บทรัพยากร ซึ่งเมื่อมีการเปลี่ยนแปลงของโปรแกรม เราสามารถแก้ไขที่ตัว เซิร์ฟเวอร์กลางเพียงแค่ครั้งเดียว นอกจากนี้ยังทำให้ความแออัดของข้อมูลในเครือข่ายลดลงด้วย

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

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


รูปที่4            Initial Development Effort

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


รูปที่ 5            Subsequent Development Efforts

 

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


รูปที่ 6            Client Tool Migration

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


เอกสารอ้างอิง            The Critical Choice of Client Server Architecture: A comparison of Two and Three Tier Systems