หลักการไร้สถานะของบริการ
หลักการออกแบบบริการไร้สถานะ (Service statelessness ) ถูกนำมาใช้ใน กระบวนทัศน์การออกแบบเชิงบริการ ( service-orientation design paradigm ) เพื่อออกแบบบริการที่ปรับขนาดได้ โดยการแยกบริการออกจากข้อมูลสถานะ เมื่อใดก็ตามที่เป็นไปได้ [ 1 ]ซึ่งส่งผลให้ทรัพยากรที่บริการใช้ลดลง เนื่องจากการจัดการข้อมูล สถานะที่แท้จริง ถูกมอบหมายให้กับส่วนประกอบภายนอกหรือส่วนขยายทางสถาปัตยกรรม การลดการใช้ทรัพยากรทำให้บริการสามารถจัดการคำขอได้มากขึ้นอย่างน่าเชื่อถือ[ 2 ]
วัตถุประสงค์
ปฏิสัมพันธ์ระหว่างโปรแกรมซอฟต์แวร์ สองโปรแกรมใดๆ เกี่ยวข้องกับการติดตามข้อมูลเฉพาะของปฏิสัมพันธ์ เนื่องจากปฏิสัมพันธ์ที่ตามมาแต่ละครั้งอาจขึ้นอยู่กับผลลัพธ์ของปฏิสัมพันธ์ก่อนหน้า สิ่งนี้มีความสำคัญมากขึ้นในสถาปัตยกรรมแบบกระจายที่ไคลเอนต์และเซิร์ฟเวอร์ไม่ได้อยู่บนเครื่องเดียวกัน ในสถาปัตยกรรมแบบสองชั้นความรับผิดชอบในการติดตามข้อมูลเฉพาะของปฏิสัมพันธ์นี้ตกอยู่กับไคลเอนต์ที่มีฟังก์ชันการทำงานสูง ซึ่งไม่ใช่ปัญหาเนื่องจากไคลเอนต์แต่ละตัวเคยอยู่บนคอมพิวเตอร์แต่ละเครื่อง[ 3 ]อย่างไรก็ตาม ในสถาปัตยกรรมแบบหลายชั้นความรับผิดชอบในการจัดการสถานะจะเปลี่ยนจากไคลเอนต์ไปยังแอปพลิเคชันหรือเว็บเซิร์ฟเวอร์สิ่งนี้ทำให้เกิดความต้องการ ส่วนขยายการจัดการสถานะ มิดเดิลแวร์ บางอย่าง เพื่อให้เซิร์ฟเวอร์สามารถจัดการคำขอของไคลเอนต์พร้อมกันหลายรายการได้ โดยการเลื่อนข้อมูลสถานะเฉพาะกิจกรรมจริงไปยังส่วนขยายดังกล่าว เช่น การจัดเก็บข้อมูลเซสชันในฐานข้อมูลใน แอปพลิเคชัน ASP .NETซึ่งจะช่วยปลดปล่อยทรัพยากรหน่วยความจำเพื่อเพิ่มการตอบสนองของเซิร์ฟเวอร์และความสามารถในการรองรับคำขอของไคลเอนต์ได้มากขึ้น
ในการประกอบบริการ บริการอาจจำเป็นต้องจัดเก็บข้อมูลเฉพาะกิจกรรมไว้ในหน่วยความจำในขณะที่รอให้บริการอื่นประมวลผลเสร็จสิ้น ดังนั้น ในกรณีของแนวคิดการให้บริการ การจัดการข้อมูลที่เกี่ยวข้องกับกิจกรรมของบริการอย่างมีประสิทธิภาพจึงมีความสำคัญมากขึ้น เนื่องจากแนวคิดการให้บริการให้ความสำคัญกับการนำบริการกลับมาใช้ซ้ำเป็นอย่างมาก บริการไม่เพียงแต่ต้องจัดการกับข้อมูลสถานะ ซึ่งเกิดขึ้นจากการโต้ตอบกับโปรแกรมผู้บริโภค ในบริบทของกระบวนการทางธุรกิจ เฉพาะเท่านั้น แต่ยังต้องเกี่ยวข้องกับการโต้ตอบกับโปรแกรมผู้บริโภคประเภทอื่น ๆ ที่เป็นส่วนหนึ่งของกระบวนการทางธุรกิจหลายกระบวนการด้วย ยิ่งความสามารถในการนำกลับมาใช้ซ้ำสูงขึ้นเท่าใด ภาระในการจัดการข้อมูลสถานะก็จะยิ่งสูงขึ้นเท่านั้น หลักการไร้สถานะของบริการ (Service Statelessness) ให้แนวทางในการทำให้บริการไร้สถานะโดยการย้ายภาระการจัดการสถานะจากบริการไปยังส่วนประกอบทางสถาปัตยกรรมภายนอกอื่น ๆ ซึ่งจะช่วยเพิ่มความสามารถในการปรับขนาดโดยรวมของโซลูชันที่เน้นการให้บริการได้ดียิ่งขึ้น
แอปพลิเคชัน
การประยุกต์ใช้สถานะไร้ตัวตนของบริการอย่างถูกต้องนั้น จำเป็นต้องมีความเข้าใจในข้อมูลสถานะประเภทต่างๆ ที่ต้องได้รับการจัดการ
ข้อมูลบริบท
ภายในองค์ประกอบของบริการ บริการอาจจำเป็นต้องติดตามข้อมูลที่เฉพาะเจาะจงกับการดำเนินงานของกิจกรรมบริการเฉพาะ ซึ่งโดยปกติจะเชื่อมโยงกับการประสานงานของข้อความ เช่นเวิร์กโฟลว์และกฎที่เกี่ยวข้องซึ่งควบคุมวิธีการตีความกฎเหล่านั้น
ข้อมูลธุรกิจ
นี่คือข้อมูลที่เกี่ยวข้องกับกระบวนการทางธุรกิจจริงที่ดำเนินการโดยกิจกรรมบริการปัจจุบัน เช่น บันทึกข้อมูลลูกค้า เป็นต้น ในบางโอกาส ข้อมูลประเภทนี้อาจจำเป็นต้องจัดเก็บไว้ชั่วคราว โดยเฉพาะอย่างยิ่งหากใช้เป็นข้อมูลป้อนเข้าสำหรับขั้นตอนถัดไปภายในกิจกรรมบริการ
ข้อมูลเซสชัน
สิ่งนี้เกี่ยวข้องกับข้อมูลการเชื่อมต่อระหว่างบริการต่างๆ เช่น เมื่อโปรแกรมและบริการสำหรับผู้บริโภคมีการสื่อสารกันไปมา อาจจำเป็นต้องมีการเชื่อมโยงบางอย่างเพื่อส่งคำขอครั้งต่อไปไปยังอินสแตนซ์เฉพาะของบริการนั้นเท่านั้น เนื่องจากมีเพียงอินสแตนซ์นั้นเท่านั้นที่ทราบเกี่ยวกับการโต้ตอบกับบริการก่อนหน้านี้
สถานะไร้สัญชาติและประเภทบริการ
หลักการไร้สถานะของบริการสามารถนำไปประยุกต์ใช้ได้ในระดับที่แตกต่างกันไป ขึ้นอยู่กับประเภทของตรรกะการแก้ปัญหาที่อยู่ภายในบริการนั้น
บริการงาน
บริการงาน (Task services) ประกอบด้วยตรรกะการแก้ปัญหาที่เฉพาะเจาะจงกับกระบวนการทางธุรกิจเฉพาะอย่างหนึ่ง ดังนั้นระดับการนำกลับมาใช้ใหม่จึงต่ำ อย่างไรก็ตาม บริการเหล่านี้มีข้อมูลบริบท (กฎเวิร์กโฟลว์) เกี่ยวกับกิจกรรมของบริการ ซึ่งเป็นสัดส่วนโดยตรงกับขนาดขององค์ประกอบบริการที่ได้รับการจัดการโดยบริการงานนั้น ด้วยเหตุนี้ การออกแบบบริการดังกล่าวด้วยตัวเลือกการเลื่อนสถานะ (state deferral options) จะช่วยลดการใช้หน่วยความจำและทำให้ตอบสนองได้ดียิ่งขึ้น
บริการสาธารณูปโภค
บริการประเภทนี้อาจจำเป็นต้องมีสถานะเพื่อให้บริการงานและเอนทิตีไม่มีสถานะ[ 4 ]ในทางกลับกัน บริการยูทิลิตี้ที่นำกลับมาใช้ซ้ำได้สูง เช่น บริการยูทิลิตี้ที่ทำหน้าที่เป็นตัวห่อหุ้มระบบเดิมจำเป็นต้องมีสถานะค่อนข้างไม่มีสถานะเพื่อให้สามารถรองรับคำขอพร้อมกันได้หลายรายการ
บริการของหน่วยงาน
เนื่องจากบริการเหล่านี้เป็นอิสระจากกระบวนการทางธุรกิจเฉพาะใดๆ จึงถือว่าเป็นบริการที่สามารถนำกลับมาใช้ซ้ำได้มากที่สุด ปัจจัยสำคัญอีกประการหนึ่งคือ บริการเหล่านี้ประมวลผลข้อมูลที่เกี่ยวข้องกับหน่วยงานทางธุรกิจ และด้วยเหตุนี้จึงต้องการระดับการไม่เก็บสถานะที่สูงขึ้น เพื่อไม่ให้เป็นภาระในการติดตามข้อมูลทางธุรกิจที่อาจจำเป็นต้องเก็บรักษาไว้เพื่อให้ฟังก์ชันการทำงานที่ต้องการ
การไร้สถานะสามารถทำได้โดยการมอบหมายการจัดการสถานะให้กับส่วนขยายทางสถาปัตยกรรมที่ใช้ร่วมกัน เช่น ผลิตภัณฑ์มิดเดิลแวร์ที่อยู่นอกขอบเขตการใช้งานบริการ หรือกลไกเฉพาะที่อยู่ภายในขอบเขตบริการ เช่น ฐานข้อมูลเฉพาะ[ 5 ]
ข้อควรพิจารณา
อาจไม่สามารถจัดหาตัวเลือกการเลื่อนสถานะเฉพาะสำหรับแต่ละบริการได้เสมอไป เนื่องจากต้องใช้การลงทุน เพิ่มเติมอย่างชัดเจน ในทางกลับกัน การใช้ตัวเลือกการเลื่อนสถานะร่วมกันอาจสร้างการพึ่งพาสำหรับบริการ ซึ่งอาจเป็นอุปสรรคต่อการพัฒนาบริการได้
การจัดเก็บและการเรียกใช้ข้อมูลสถานะอาจส่งผลกระทบต่อเวลาตอบสนองของบริการโดยไม่ตั้งใจ เนื่องจากทั้งสองกระบวนการนี้อาจใช้ทรัพยากรการคำนวณสูง โดยต้องแปลงข้อมูลให้อยู่ในรูปแบบดั้งเดิมของส่วนขยายการจัดเก็บข้อมูลก่อน และในทางกลับกันเมื่อต้องการเรียกใช้ข้อมูลเดียวกัน
การออกแบบบริการแบบไร้สถานะ (stateless services) ต้องใช้ความพยายามและเวลาเพิ่มขึ้น เนื่องจากบริการนั้นต้องมีตรรกะที่เชื่อมต่อกับส่วนขยายการเลื่อนสถานะ (state deferral extensions) ซึ่งจะทำให้ต้องเขียนโค้ดและทดสอบเพิ่มเติม
อ่านเพิ่มเติม
- Michael Poulin. วิวัฒนาการของหลักการมุ่งเน้นการบริการ: การไร้รัฐในการบริการ ตอนที่ 6 [ออนไลน์]. เข้าถึงเมื่อ: 19 เมษายน 2553
- Mauro และคณะการบูรณาการอุปกรณ์ที่มุ่งเน้นบริการ - การวิเคราะห์รูปแบบการออกแบบ SOA [ออนไลน์], หน้า 1–10, การประชุมวิชาการนานาชาติฮาวายครั้งที่ 43 ด้านวิทยาศาสตร์ระบบ, 2010. เข้าถึงเมื่อ: 8 เมษายน 2010