รู้จักกับ Azure Spring Cloud: โซลูชั่นคลาวด์แบบครบวงจร

รู้จักกับ Azure Spring Cloud: โซลูชั่นคลาวด์แบบครบวงจร

คำนำ

Cloud Computing ไม่ใช่เรื่องใหม่และกำลังจะมาถึง แต่มันเกิดขึ้นมาตั้งแต่ปี 2006 แล้วซึ่งเป็นตอนที่บริษัทยักษ์ใหญ่อย่าง Google เริ่มใช้คำนี้เพื่ออธิบายแนวคิดเกี่ยวกับการเปลี่ยนแปลงของเซอร์วิสและแอปพลิเคชั่นต่างๆ ที่โฮสต์บนเซิร์ฟเวอร์บนคลาวด์ การเปลี่ยนแปลงเช่นนี้ทำให้องค์กรสามารถเพิ่มศักยภาพการประมวลผลหรือ scale ได้ทันทีตามที่ต้องการแบบ on-demand รวมทั้งสามารถใช้ประโยชน์จากเทคโนโลยี virtualisation และยังช่วยลดค่าใช้จ่ายในการทำนุบำรุงรักษาหรือดูแลเครื่องเวิร์ฟเวอร์ที่ต้องเช่าห้องเพื่อเก็บเครื่องไว้ด้วย แต่มากกว่าทศวรรษนับจากนั้นมาเราก็ยังไม่สามารถใช้ความสามารถของมันได้อย่างเต็มสมรรถนะของเทคโนโลยีที่น่าทึ่งนี้ได้

หนึ่งในอุปสรรคที่ซ่อนอยู่ในการจัดตั้ง Cloud setup นั้นคือการที่จะต้องฝึกทักษะเชี่ยวชาญเฉพาะทางบางประการ เหตุผลก็คือเรื่องของ layer ในลำดับชั้นของความซับซ้อนในโครงการสร้างก่อนที่จะมาถึงชั้นที่คุณจะใช้ทำงานได้อย่างราบรื่น นับว่ามีหลายทางเลือกและพารามิเตอร์ที่ทำงานร่วมกันได้ เพื่อให้สามารถ sync กันได้และทำให้คุณได้รับประสบการณ์การใช้งานที่เป็นประโยชน์ที่สุด และนี่คือสิ่งที่ทำให้คนรู้สึกกังวลว่าจะนำเอาเทคโนโลยีแห่งการเปลี่ยนแปลงนี้มาใช้งานจริงได้อย่างไร ไม่มีใครต้องการที่่จะใส่เงินเข้าไปในระบบเพื่ออะไรบางอย่างที่ตนเองไม่มีความรู้ความเชี่ยวชาญจะจัดการมันได้อย่างเต็มที่ และก็มักจะมีความเสี่ยงในทางเทคนิคอยู่จำนวนหนึ่งที่จะต้องพิจารณาควบคู่ไปด้วยกัน

และนี่คือส่วนของความคิดเห็นของผมเรื่อง Azure Spring Cloud ที่จะบอกเล่าให้คุณฟัง ดูแล้วมันคือ one-stop solution แบบครบวงจรที่เดียวสำหรับทุกคนเลย เพราะมีการทำรวบรวม packanging ไว้ให้พร้อมแบบ pre-compiled ในเรื่องของการตั้งค่า setting ต่างๆ ที่จะช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็วฉับพลันแบบทันทีทันใด โซลูชั่นนี้ช่วยรวบรวมทุกสิ่งที่คุณจำเป็นต้องมีในการ setup ตัวแอปพลิเคชั่นของคุณ นอกจากนั้น ยังช่วยให้คุณมีอิสรภาพในการปรับแต่งเพิ่มเติมต่อจากค่า settings ที่ตั้งไว้แล้วได้ตามที่คุณต้องการด้วย แต่ทั้งนี้ก็ขึ้นอยู่กับว่าความต้องการของผลิตภัณฑ์ที่คุณจะสร้างนั้นต้องการอะไรบ้างด้วย ตามคำกล่าวที่นิยมกัน อำนาจที่ยิ่งใหญ่มาพร้อมความรับผิดชอบอันใหญ่ยิ่งนั้น หากคุณยังไม่รู้สึกว่าเป็๋นความรับผิดชอบที่คุณต้องรับมาทำมันเสียทั้งหมด ผมคิดว่า Azure cloud ก็ช่วยให้คุณได้เริ่มต้นไปข้างหน้าได้อย่างรวดเร็วในระดับที่ดีเลยทีเดียว

อะไรที่ทำให้สิ่งต่างๆ มันซับซ้อน …

แล้ว Spring Cloud คืออะไร? มันก็คือ framework ที่นิยมใช้กันสำหรับการเชื่อม Java microservices ต่างๆ และช่วยให้นักพัฒนามีเครื่องมือต่างๆ สำหรับการสร้าง pre-defined patterns แบบซับซ้อนได้เลยแล้วนำไปใช้ในระบบต่างๆ ที่ปล่อยออกไปแล้วได้ทันที ด้วยวิธีการนี้ ผู้ใช้สามารถเริ่มต้นสร้างเซอร์วิสและแอปพลิเคชั่นได้อย่างรวดเร็ว โดยในขณะเดียวกันก็สามารถติดตั้งใช้งาน patterns ต่างๆ เช่น Service Discovery, Routing, Service to Service calls และอื่นๆ อีกมากมายไปด้วยได้ ดังนั้นโซลูชั่นนี้จึงทำงานได้อย่างยอดเยี่ยมใน use case ของการสร้างโซลูชั่นทางธุรกิจทั่วไปที่นิยมใช้กัน

ฟังดูแล้วน่าทึ่งมากเลยทีเดียว แต่ความเป็นจริงนั้นก็คือว่า เมื่อคุณเข้าไปในหน้า Documentation Page ของ Spring Cloud แล้วคุณจะสังเกตว่าหากต้องการนำเสนอ services หลายๆ อย่างแล้วล่ะก็ มีหลายสิ่งที่ให้เลือกได้มากมาย และมีเอกสารที่ต้องอ่านอีกมากมายด้วยเช่นกัน และด้วยระยะเวลาที่คุณคุ้นเคยกับเทคโนโลยีอย่างใดอย่างหนึ่งมาพอสมควร คุณอาจจะชอบหรือหงุดหงิดก็เป็นไปได้กับการที่ต้องเรียนรู้ประเด็นทางเทคนิคในทุกรายละเอียดเช่นนี้ แม้โซลูชั่นนี้เป็น services แบบที่ plug and play ก็จริงๆ แต่ความซับซ้อนที่เกี่ยวข้องนั้นก็ไม่ได้ถูกสรุปรวมมาให้อย่างครบถ้วน บ่อยครั้งคุณอาจจะต้องใช้เทคนิคพลิกแพลงเพื่อแก้ไขปัญหาบางประการแทนที่จะต้องสร้างเทคนิคที่ซับซ้อนมากจนเกินไป ในกรณีต่างๆ เหล่านี้ ความพยายามที่จะต้องมา onboard เพื่อทำงานร่วมกับ Spring Cloud นั้นอาจจะไม่ได้ก่อให้เกิดประโยชน์ที่เห็นได้ชัดเจนในทันทีทันใด

ดังนั้น เราอาจจะพบกับปัญหาอยู่บ่อยๆ เกี่ยวกับเรื่องต่อไปนี้ได้

1. วงจรชีวิตของแอป (application lifecycle) ที่ซับซ้อน
2. ความท้ายของการบริหารจัดการ Cloud infrastructure
3. การแจ้งปัญหาเพื่อความช่วยเหลือในประเด็นติดขัดต่างๆ 
และนี่คือส่วนที่ Azure Spring Cloud เข้ามามีบทบาทช่วยเหลือได้ดียิ่ง และจากร่วมมือกันกับ VMware และ Microsoft แพล็ตฟอร์มในรูปแบบ Cloud-as-a-Service นี้ช่วยให้เราใช้ชีวิตได้ง่ายมากยิ่งขึ้นกว่าเดิม

คุณค่าผลิตภัณฑ์ของ Azure Spring Cloud

ถือว่าไม่ใช่ข่าวใหญ่อะไรที่ Spring Framework และ Java ได้รับความนิยมในการใช้งานอย่างหนักในอุตสาหกรรมเทคโนโลยี และอัตราการบริโภคก็เติบโตอย่างต่อเนื่อง Framework ต่างๆ อย่างเช่น Spring Cloud, Spring MVC, Spring Boot นั้นมีประโยชน์อย่างมากในการจัดตั้งแอปพลิเคชั่นของคุณอย่างง่ายดายและรวดเร็ว แต่กระบวนการนี้ยิ่งทำให้ขั้นตอนง่ายลงกว่าเดิมเยอะด้วยการนำเอา Azure Spring Cloud เข้ามาร่วมทำงานด้วย

ประโยชน์ทางตรงบางประการของ Azure Spring Cloud ได้แก่

1. เร่งสปีดกระบวนการการพัฒนา - มีหลากหลายวิธีสำหรับการจัดการแบบ one-click method เพื่อการสลับสับเปลี่ยน services ต่างๆ หรือ images ที่มีหลากหลายใน service เดียวกัน ข้อนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องดำเนินโครงการแบบคู่ขนานกันบนระบบที่ซับซ้อนต่างๆ ที่ต้องแชร์ microservices หลายๆ ตัวร่วมกัน สำหรับท่านที่เคยได้ประสบการณ์เช่นนี้มาก่อนแล้ว การทำ regression testing หรือการรักษา versions ที่มีหลากหลายไว้นั้นคือความท้าทายในสภาพแวดล้อมที่ซับซ้อนเช่นนี้นั่นเอง ดังนั้น เราสามารถใช้ประโยชน์จาก Azure Spring Cloud เพื่อใช้งานแบบ plug and play ร่วมกับ versions ต่างๆ ของ service เดียวกันเองได้อีกด้วย นอกจากนี้ ฟีเจอร์ด้าน API Gateway ยิ่งทำให้การสื่อสารระหว่าง microservices ระหว่างกันนั้นทำได้ง่าย ทำให้การ setup มีความเป็น dynamic สูงขึ้น จึงเป็นการกำจัดความซับซ้อนบางประการที่เกิดจากการใช้งาน microservices ต่างๆ และช่วยให้คุณได้ประโยชน์จาก design pattern ที่น่าทึ่งด้วย

2. ลดความเสี่ยงระหว่างการติดตั้งใช้งาน - Azure Spring Cloud มอบ UI Tool ให้คุณเพื่อสลับไปมาในการใช้ image ต่างๆ ที่คุณต้องใช้ ด้วยการคลิกที่ปุ่มเพียงแค่ปุ่มเดียว นอกจากนี้ยังสนับสนุนกลยุทธ์การติดตั้งแบบ Blue-Green Deployment strategy ที่ซึ่งสามารถนำไปใช้เป็นกลยุทธ์การบริหารจัดการสำรองได้ด้วยเช่นกัน โดยทั้งสองกลยุทธ์สามารถสลับสับเปลี่ยนไปมาระหว่าง environments ต่างๆ ได้โดยง่าย โดยทั้งที่อยู่ใน production และอีกหนึ่งที่อยู่ใน contingency นั่นเอง ซึ่งการทำเช่นนี้ได้ทำให้ช่วยลด downtime ไปได้ด้วยเช่นกัน Azure Spring Cloud ช่วยทำให้อะไรๆ ง่ายขึ้นมากกว่าเดิมจรืงๆ สำหรับการติดตั้งใช้งาน และผมมั่นใจว่าเราทุกคนจะดีใจกับความคุ้มค่าของโซลูชั่นนี้เมื่อต้องทำการ deploy โซลูชั่นของเรา ความเสถียรในการติดตั้งนั้นปูทางไปสู่การทำ Continuous Deployment ต่อไปได้

3. การจัดการการตั้งค่าที่เป็นไปได้ง่ายขึ้น - หนึ่งในสิ่งที่น่าตื่นเต้นที่สุดที่ผมรู้สึกได้เกี่ยวกับ Azure Spring Cloud คือเรื่องของ Spring Cloud Config Server ซึ่งทำหน้าที่เหมือนเป็น configuration files ที่คุณจำเป็นต้องใช้เพื่อดูแลบำรุงรักษาแอปพลิเคชั่นหรือเซิร์ฟเวอร์ Spring Boot ของคุณ และยังใช้เป็นการอ้างอิงในส่วนของตัวโค้ดด้วยเช่นกัน แต่ปัจจัยที่สร้างความแตกต่างนั้นก็คือมันสามารถบริหารจัดการผ่านระบบออนไลน์ได้โดยไม่ต้องเดินทางเพื่อไปดูแลเซิร์ฟเวอร์จริงๆ โดยจัดการผ่าน Azure Spring Cloud Dashboard ซึ่งแดชบอร์ดนี้เป็นจุดรวมศูนย์สำหรับทุกการทำ configurations แทนที่จะแยกส่วนกันทำในแต่ละ server box สำหรับแต่ละ microservice ที่ต้องใช้ ในทางกลับกันช่วยให้ทำการ rollback ได้ง่ายหรือเปลี่ยนแปลงอะไรเพิ่มเติมก็ได้ตามต้องการ ในแง่ของความปลอดภัย คุณสามารถที่จะย้าย sensitive parameters ของแอปพลิเคชั่นของคุณจากโค้ดไปยังจุดรวมศูนย์การทำ configurations ได้ในที่เดียวกันด้วย ความสามารถนี้ช่วยให้การทำ configuration แบบ external เป็นไปได้ และมีประโยชน์ต่อระบบต่างๆ ที่ได้กระจายการใช้งานออกไปแล้ว ดังนั้น ผู้ใช้เพียงแแค่เชื่อมต่อ configuration file โดยใช้ code repository url ของคุณเอง ควบคู่ไปกับการยืนยันตัวตนที่เหมาะสมเพื่อเข้าถึงไฟล์ได้อย่างเหมาะสมและปลอดภัย

4. ระบบการจัดเก็บ Log และรายงานที่ประสานการทำงานร่วมกัน - ปกติแล้วเมื่อเรากำลังทำงานกับ services ต่างๆ ที่กระจายกันไป การเก็บ log และการจัดทำรายงานเป็นฟีเจอร์ที่เราจะต้องพิจารณา เนื่องจากความเป็นไปได้ที่จะมาจากจุด failure points หลายจุด หนึ่งในฟีเจอร์ของ Azure Spring Cloud ก็คือความสามารถในการเรียกดู service logs และ system report บนหน้าจอแดชบอร์ดเดียวกันบนหน้าต่างวินโดวส์ที่จัดไว้เพื่อการเก็บและรายงาน คุณสมบัตินี้ช่วยให้เราจับตาดูค่า matrix ต่างๆ เกี่ยวกับแอปพลิเคชั่นของเรารวมทั้งได้พบลู่ทางในการปรับแต่งสมรรถนะให้มีประสิทธิภาพสูงขึ้นได้เต็มที่อีกด้วย

5. การใช้งานง่าย - ไม่ใช่เรื่องที่เข้าใจยากหากเราได้รับรู้ถึงประโยชน์ต่างๆ นานาที่เล่ามาก่อนหน้านี้ทั้งหมดแล้ว แต่ขอย้ำกันอีกทีกับฟีเจอร์ต่างๆ ที่ช่วยให้การทำ provisioning หรือ sacling แอปของคุณเป็นเรื่องง่ายแบบสุดๆ ผ่าน UI dashboard ที่เข้าใจง่ายเพื่อให้คุณอัปเดตสิ่งต่างๆ จากแดชบอร์ดนี้ได้ อันที่จริงฟีเจอร์นี้ไม่ได้แปลกตาอะไร แต่ก็เป็นฟีเจอร์ที่ทำให้หลายอย่างเกิดขึ้นได้บน Azure Spring Cloud หนึ่งในนั้นคือการควบคุมสิ่งต่างๆ เช่น Java vesion ในการใช้งาน จากเดิมในรูปแบบของ drop-down list ซึ่งผมคิดว่ามันทำให้ชีวิตง่ายขึ้นมาเลยทีเดียว โดยเฉพาะอย่างยิ่งในการทำ regression testing ในช่วงการดำเนินการ version upgrade ในแต่ละขั้นตอน

ดังนั้น จึงเห็นได้ชัดว่า ประโยชน์นานัปการที่ได้กล่าวมานั้น สิ่งสำคัญที่สุดที่ผมได้มาจาก Azure Spring Cloud ก็คือเรื่องที่ว่ามันมีความสามารถที่ใช้คุณสมบัติของคลาวด์และระบบที่กระจายอยู่ทั่วไปในสภาพแวดล้อมได้อย่างเต็มที่จริงๆ และนั่นทำให้ประสบการณ์การทำงานมีความเรียบง่ายและเชื่อมต่อกันได้อย่างไร้รอยต่อมากที่สุดแล้ว มันช่วยให้เราดูแลกิจกรรมทั้งหมดที่เราจำเป็นต้องทำบนแพล็ตฟอร์มนี้ได้ โดยทำผ่านโซลูชั่นที่เชื่อมต่อกันอย่างลงตัวและเหมาะกับ Use case ของคุณที่สุดแล้ว

ความคิดสุดท้าย

เหนืออื่นใด ผมคิดว่านี่เป็นก้าวแรกที่นำหน้าไปไกลก่อนใครแล้วจากความร่วมกันกับ Microsoft และ VMware ในการเชื่อมต่อกระบวนการพัฒนาแอปพลิเคชั่นให้ต่อประสานกันอย่างต่อเนื่อง และควบรวมโมดุลต่างๆ ให้อยู่รวมกันในโปรเจคเดียวกันได้ ดังนั้นนี่จึงเป็นศักยภาพสำคัญ โดยเฉพาะอย่างยิ่งเมื่อต้องทำงานกับระบบต่างๆ ที่มีความซับซ้อนยุ่งยาก หากคุณมีคอมโพเน้นต์ของแอปพลิเคชั่นของคุณอยู่บน Azure และ Microsoft นี่อาจจะเป็นส่วนเพิ่มเติมที่คุณสามารถนำมาพิจารณาต่อยอดได้ เพราะว่าเป็นการจัดการจากจุดเดียวที่รวมศูนย์ไว้เพื่อการลดความซับซ้อนให้เหลือน้อยลงนั่นเอง

ในปัจจุบัน ยังมีเพียงแค่ Java Spring ที่รองรับการใช้งาน แต่ก็ยังมีแผนงานในอนาคตที่จะรองรับเทคโนโลยีอื่นๆ มากขึ้นอีกในอนาคต และ C# จะกลายมาเป็นรายการถัดไปที่จะพัฒนาให้รองรับได้ ดังนั้นจึงมั่นใจได้เลยว่านี่จะเป็นเส้นทางใหม่ที่ต้องลองใช้งานหากเรื่องของการวิเคราะห์เทคโนโลยีเป็นสิ่งหนึ่งที่คุณสนใจ

เหนืออื่นใด นี่ดูเป็นสิ่งที่น่าตื่นเต้นทีเดียวเมื่อทุกอย่างมีพร้อมในมือให้ใช้ได้ทันที และหากคุณยังไม่ได้เจาะลึกลงไปในเรื่องของ Cloud Computing แล้วล่ะก็ นี่น่าจะเป็นเวลาที่ควรจะต้องเริ่มกันได้เล้ว

Related articles

รู้จักกับ Azure Spring Cloud: โซลูชั่นคลาวด์แบบครบวงจร
2 mins
ทิศทางเกี่ยวกับเทคโนโลยี
รู้จักกับ Azure Spring Cloud: โซลูชั่นคลาวด์แบบครบวงจร
Golang สำหรับผู้เริ่มต้น : แนวทางสำหรับการทำความเข้าใจเกี่ยวกับ Golang
2 mins
ทิศทางเกี่ยวกับเทคโนโลยี
Golang สำหรับผู้เริ่มต้น : แนวทางสำหรับการทำความเข้าใจเกี่ยวกับ Golang

Button / CloseCreated with Sketch.