Facebook Twitter
gPlus 

แนวทางประยุกต์ใช้การพัฒนาแอปพลิเคชั่นแบบ Agile และ DevOps


ข่าวไอที “การ์ทเนอร์, ไอดีซี และฟอร์เรสเตอร์ คาดการณ์ว่าการแปรรูปการทำงานองค์กรให้เป็นดิจิทัล หรือ Digital Transformation จะเป็นสิ่งที่บรรดา CEO ให้ความสำคัญเป็นอย่างยิ่งในปี 2016 เพราะต้องปรับตัวให้แข่งขันกับผู้ที่สร้างปรากฏการณ์ใหม่ด้วยเทคโนโลยีดิจิทัล (Digital Disruptor) อย่าง Amazon, Ali Baba, FinTech, Airbnb เป็นต้น และเพื่อให้สามารถทัดเทียมกับคู่แข่งเหล่านี้ องค์กรจำเป็นต้องมีกระบวนการในการพัฒนาและส่งมอบผลิตภัณฑ์หรือบริการที่มีความคล่องตัวสูง ด้วยความคาดหวังกับฝ่ายสารสนเทศ หรือ CIO ที่สามารถทำสิ่งนี้ให้บรรลุผลด้วยการแปรรูปวัฒนธรรมไอที ซึ่งสอดคล้องอย่างที่คาดการณ์ไว้ว่าแนวโน้มในปี 2016 เราจะได้เห็นการให้ความสำคัญกับการพัฒนาแอปพลิเคชั่นและการวิเคราะห์เพื่อผลักดันให้ธุรกิจมีมูลค่าเพิ่มมากขึ้น”


แนวทางประยุกต์ใช้การพัฒนาแอปพลิเคชั่นแบบ Agile และ DevOps
จากการที่ได้พบปะกับลูกค้าในช่วงปี 2016 ทำให้พบว่า CIO หลายๆแห่งกำลังวางแผนที่จะนำเอาหลักการในการพัฒนาแอปพลิเคชั่น แบบ Agile หรือ DevOps (Development Operation) เข้ามาช่วยในการทำงานเพื่อให้เกิดการพัฒนาที่รวดเร็ว โดย Agile คือวิธีการพัฒนาซอฟต์แวร์ โดยผ่านการทำงานร่วมกันระหว่างทีมงานจากส่วนต่างๆขององค์กรและผู้พัฒนาในการกำหนดความต้องการเพื่อสร้างแนวทางสำหรับการพัฒนาผ่านกระบวนการทำงานแบบซ้ำๆ ซึ่งแต่ละฝ่ายขององค์กรสามารถได้เห็นความคืบหน้าที่ชัดเจน และสามารถได้เปลี่ยนข้อกำหนดความต้องการในการใช้งานได้บ่อยๆอย่างที่ต้องการ ทำให้มีความยืดหยุ่น สามารถตอบสนองต่อการเปลี่ยนแปลงให้ธุรกิจได้รวดเร็ว ซึ่งตรงข้ามกับแนวคิดแบบ "Waterfall" ซึ่งเป็นหลักการดั้งเดิม โดยมาจากการพัฒนาฮาร์ดแวร์ที่มีขั้นตอนการทำงานตามลำดับ เริ่มจากการกำหนดความต้องการส่งต่อลงไปยังขั้นตอนการออกแบบ การพัฒนา การทดสอบ การใช้งานระดับ Production และการดูแลรักษา แนวคิดนี้ขาดความยืดหยุ่นอย่างมาก เพราะเมื่อเกิดการเปลี่ยนแปลงจะทำให้การทำงานมีความยุ่งยากมากยิ่งขึ้น เนื่องจากทุกกระบวนการทำงานต้องเป็นไปตามลำดับเคลื่อนลงล่างตามหลักการของน้ำตก นับตั้งแต่ต้นทศวรรษ 2000 กระแสการทำงานด้านการพัฒนาซอฟต์แวร์ Agile เช่น Scrum จึงได้รับการพัฒนาเพื่ออำนวยความสะดวกให้กับการพัฒนาซอฟต์แวร์ โดยมีสมาคมและมหาวิทยาลัยจำนวนมากได้ส่งเสริม ให้การรับรองหรือมอบปริญญาบัตรให้กับศาสตร์แขนงนี้ด้วย


แนวทางประยุกต์ใช้การพัฒนาแอปพลิเคชั่นแบบ Agile และ DevOps
DevOps ต่อยอดมาจาก Agile ซึ่งรวมแนวทางการดำเนินงานของหน่วยปฏิบัติการ(ไอที), การประกันคุณภาพ และวิศวกรด้านการพัฒนาทำงานร่วมกัน ผ่านการออกแบบ พัฒนา ทดสอบ และนำเสนอซอฟต์แวร์แอปพลิเคชั่น DevOps นั้น เป็นการเปลี่ยนแปลงทางวัฒนธรรม ซึ่งจำเป็นต้องเปลี่ยนแปลงในด้านบุคคลากรและกระบวนการทำงานโดยเฉพาะ จะเห็นได้ว่าในการดำเนินงานทั่วไปนั้น หน่วยปฏิบัติการ (ไอที) ต้องการเสถียรภาพและความสามารถในการทำซ้ำได้ ขณะที่นักพัฒนาจะมองหาการเปลี่ยนแปลง และนักทดสอบจะมองหาแนวทางที่สามารถลดความเสี่ยงได้ ในแนวคิด Waterfall นั้นนักพัฒนาจะส่งโค้ดโปรแกรมไปให้นักทดสอบ จากนั้นนักทดสอบจะร้องขอทรัพยากรจากฝ่ายปฏิบัติการ ซึ่งไม่ได้มีการจัดเตรียมไว้สำหรับคำขอที่ “ไม่ได้มีการวางแผน” เหล่านี้ DevOps จึงเป็นการรวมกันของเทคโนโลยีที่เหมาะสม และทัศนคติของกลุ่มคนทำงานที่เกี่ยวข้อง เพื่อช่วยทำให้การพัฒนาและส่งมอบซอฟแวร์มีวิวัฒนาการที่ดีขึ้นกว่าเดิม แต่ก็ไม่ได้มีเครื่องมือ DevOps เพียงชิ้นเดียวที่เข้ามาช่วย แนวคิดนี้ยังมีห่วงโซ่เครื่องมืออื่นๆ ที่มาช่วย อาทิเช่น เครื่องมืออย่าง Docker สำหรับการทำคอนเทนเนอร์หรือบริการระดับไมโคร, Jenkins สำหรับการผสานรวมการทำงานแบบต่อเนื่อง และ Hitachi Content Platform (HCP) สำหรับการจัดเก็บและการแจกจ่าย รวมถึงจัดเก็บผลการทดสอบและบันทึกข้อมูล logs ต่างๆ ด้วย

Hitachi Content Platform หรือ HCP นั้นได้รับการยอมรับจากอุตสาหกรรม Cloud Computing และเป็นหนึ่งในเครื่องมือของ DevOps ที่บริษัท ฮิตาชิ ดาต้า ซิสเต็มส์ เองได้ใช้ในการพัฒนาซอฟแวร์ HCP, HCP-Anywhere, HCI, และ HCP-S ของเราที่แล็บในเมือง Waltham สหรัฐอเมริกาอีกด้วย โดยเราได้นำ DevOps เข้ามาใช้ในทีม HCP เมื่อปี 2012 เพื่อเพิ่มประสิทธิภาพการทำงานของทีมงานด้านวิศวกรรมในกลุ่มผลิตภัณฑ์ HCP โดยเฉพาะ ด้วยการระบุจุดขั้นตอนที่ไร้ประสิทธิภาพและสร้างระบบการทำงานที่เป็นอัตโนมัติขึ้นมา เช่น การพัฒนาระบบที่ช่วยให้วิศวกรสามารถติดตั้ง OS ลงในเซิร์ฟเวอร์ของแล็บได้โดยอัตโนมัติ บันทึกข้อมูลที่เก็บรวบรวมได้ของทุกคนโดยอัตโนมัติจากเดิมที่ต้องทำด้วยตนเองซ้ำแล้วซ้ำเล่า นอกจากนี้ยังได้พัฒนาระบบควบคุมการทดสอบแบบอัตโนมัติ ซึ่งทีม QA/Automation สามารถนำไปใช้เพื่อดำเนินการทดสอบในรูปแบบอัตโนมัติได้เป็นจำนวนมากเท่าที่ต้องการ ทำให้พวกเขาสามารถเพิ่มคิวงานทดสอบจากการเรียกใช้เพียงครั้งเดียวได้อย่างง่ายดาย นอกจากนี้ยังมีเครื่องมืออื่นๆ อีกมากมาย แต่หลักการพื้นฐานที่มีร่วมกันก็คือ การพัฒนาเครื่องมือสำหรับการใช้งานภายใน ซึ่งทำให้การทำงานของบรรดาวิศวกรซอฟแวร์เป็นเรื่องที่ง่ายขึ้น ผลลัพธ์ที่ได้คือคุณภาพและความเร็วในการนำเสนอคุณสมบัติที่ดีขึ้นให้กับผลิตภัณฑ์ HCP ของเรา ทำให้เราสามารถทิ้งห่างคู่แข่งได้อย่างมาก

คุณประโยชน์หลักของ HCP สำหรับ DevOps คือความสามารถด้าน High Availability (HA) ที่ทำให้ระบบพร้อมใช้งานตลอดเวลา ช่วยป้องกันเครื่องมือปลายทางในการทดสอบอัตโนมัติ ไม่ว่าจะเป็นจากการอัพเกรดซอฟต์แวร์ การซ่อมบำรุงฮาร์ดแวร์/ความผิดพลาดของฮาร์ดแวร์ เป็นต้น รวมทั้งช่วยป้องกันไม่ให้เกิดปัญหาด้านความพร้อมใช้งานของเครื่องมือต้นทางด้วยเช่นกัน อาทิเช่น เมื่อใช้ Jenkins สำหรับการผสานการทำงานแบบต่อเนื่องและหากเกิดความล้มเหลวหรือมีการอัพเกรดระบบ เครื่องมือทดสอบปลายทางไม่จำเป็นต้องสังเกตเห็นหรือสนใจ เนื่องจากเครื่องมือเหล่านี้จะเรียกข้อมูลจาก HCP ที่พร้อมทำงานอยู่เสมอ อีกทั้ง HCP มีคุณสมบัติในการเรียกค้นข้อมูลเพื่อวิเคราะห์ในระบบบรรณารักษ์ข้อมูลขนาดใหญ่ที่ซับซ้อน โดย Metadata Query Engine (MQE) ของ HCP ช่วยดึง artifacts ที่มีอยู่และที่มีชื่ออยู่ใน namespace ออกมาด้วย ตราบใดที่ออบเจ็คต์ถูกทำดัชนีไว้ MQE จะตรวจพบออบเจ็คต์เหล่านั้น และแสดงให้ได้เห็น โดยไม่คำนึงถึงชื่อหรือเส้นทางของออบเจ็กต์นั้นๆ สำหรับในส่วนปลายทาง หลังจากที่มีการรันการทดสอบอัตโนมัติแล้ว เราจะได้รับประโยชน์จาก HCP เพิ่มเติมอีกจากการจัดเก็บผลการทดสอบและบันทึกข้อมูล logs ต่างๆ บน HCP (ใน namespace แยกต่างหากแทนที่จะเป็น build artifacts)

นอกจากนี้ คุณสมบัติด้านความปลอดภัยและการเข้ารหัสของ HCP ทำให้แน่ใจได้ว่าระบบขององค์กรจะปลอดภัย ซึ่งคุณสมบัตินี้จะไม่มีในเครื่องมือ DevOps ทั้งนี้ การใช้ HCP ใน DevOps จะสามารถทำให้การบริหารจัดการด้านการใช้พื้นที่เป็นรูปแบบอัตโนมัติโดยใช้ประโยชน์จากการเก็บรักษาและการจัดการ "ข้อมูลที่หมดอายุ" และลบบันทึก logs หรือ builds เก่าๆ ออก หรือจัดแบ่งระดับชั้นสำหรับการจัดเก็บระยะยาว (เช่นใน S10, Amazon, Glacier เป็นต้น) นอกจากนี้ HCP ยังให้โซลูชั่นสำรองข้อมูลแบบอัตโนมัติโดยใช้คุณสมบัติการทำสำเนา (replication) ซึ่งเรียกใช้สำเนาสำหรับ Disaster Recovery แบบ off-site

หากคุณกำลังริเริ่มการจัดตั้งกระบวนการ DevOps อยู่ และต้องการทราบถึงการใช้ HCP สำหรับระบบ Continuous Integration Build Artifact storage system ทางเราแนะนำให้อ่าน whitepaper ซึ่งเขียนโดยทีม HCP developers ของเราโดยดาวน์โหลดได้ที่ https://www.hds.com/en-us/pdf/white-paper/hcp-as-continuous-integration-build-artifact-storage-system.pdf

ข้อดีของการนำ DevOps มาใช้ในการแปรรูประบบไอทีจะได้รับการจัดทำเป็นเอกสารอ้างอิงด้วยเช่นกัน อาทิ Puppet Labs ซึ่งเป็นบริษัทด้านซอฟต์แวร์การทำระบบไอทีให้เป็นอัตโนมัติ ได้ทำการสำรวจสถานะของ DevOps ทุกปี และในรายงาน 2015 State of DevOps Report ซึ่งสำรวจจากผู้เชี่ยวชาญด้านเทคโนโลยีมากกว่า 20,000 คนทั่วโลกได้ข้อมูลสรุปพ้องกันว่า:

“เราพิสูจน์แล้วว่าองค์กรไอทีที่มีประสิทธิภาพสูงได้ปรับใช้โค้ดโปรแกรมบ่อยกว่าบริษัทอื่นๆ มากถึง 30 เท่า โดยที่มีความล้มเหลวไม่ถึง 50% และนี่เป็นครั้งแรกที่แสดงให้เห็นว่าไอทีเป็นสิ่งที่มีความสำคัญอย่างแท้จริงต่อธุรกิจ: บริษัทที่มีประสิทธิภาพด้านไอทีระดับสูงสามารถทำผลกำไร ได้รับส่วนแบ่งตลาด และบรรลุเป้าหมายด้านการผลิตได้มากกว่าเดิมถึงสองเท่า”

ในการทำ Digital Transformation เพื่อตอบโจทย์ความต้องการของธุรกิจ CIO จำเป็นต้องแปรรูประบบไอทีให้เป็นวัฒนธรรมของความร่วมมือภายในองค์กรที่สร้างขึ้นภายใต้หลักการของ Agile และ DevOps ซึ่งขณะนี้เทคโนโลยี เครื่องมือ ความรู้ต่างๆ มีพร้อมแล้ว ความท้าทายที่สำคัญที่สุดคือการเปลี่ยนแปลงบุคลากรและกระบวนการทำงาน ซึ่งส่วนประกอบที่สำคัญยิ่งสำหรับการเปลี่ยนแปลงในครั้งนี้คือความสามารถในการเป็นผู้นำ

กลับขึ้นด้านบน