Docker แพลตฟอร์มสำหรับรัน Container Technology น้องใหม่ ที่ไม่ใหม่ เกิดขึ้นมาเพื่อแก้ปัญหาของระบบ Container และมาพูดคุยถึงการออกแบบ Storage ให้เหมาะสมกับระบบ Cloud Container ให้สามารถทำงานร่วมกันได้ดียิ่งขึ้น
Docker Container Platform :::
Docker เป็นตัวช่วยในการขับเคลื่อน Container Technology และเป็นพื้นฐาน โครงสร้างให้กับระบบ Microservices ให้สามารถใช้งาน Development หรือ Operation ได้อย่างรวดเร็ว ง่ายต่อการเตรียมและแชร์ทรัพยากร เชื่อมต่อไปได้ทุกแพลตฟอร์ม ไม่ยึดติด มีความยืดหยุ่นสามารถรองรับการขยายตัว การเปลี่ยนแปลง โยกย้าย ของระบบที่เกิดขึ้นอย่างรวดเร็ว ให้ใช้งานได้อย่างมีประสิทธิภาพ และตอบสนองงานที่ต้องการพัฒนาตลอดเวลา
Concepts of Microservice Architecture :::
คีย์หลักของ Microservices คือ การที่ Services ต่าง ๆ เป็นอิสระแยกจากกัน และไม่ขึ้นต่อกัน ทำให้เกิดการพัฒนาระบบที่รวดเร็วขึ้น โดยมีข้อดีหลายอย่างคร่าวๆ ดังนี้
- โครงสร้างระบบจะสามารถปรับเปลี่ยนได้ตามที่เราต้องการ Development สามารถพัฒนา ทดสอบความถูกต้องของ application ได้ง่ายและเร็ว คือถ้าแก้จุดนี้แล้วจะไม่กระทบกับ application หรือโครงสร้างของระบบอื่น ๆ ทำให้มีการพัฒนาระบบต่างๆได้อย่างต่อเนื่อง
- ลดผลกระทบของระบบ ที่ต้องทำงานหลายฝ่ายทั้งภายในทีมและนอกทีม โลกของ Microservices ที่จะทำให้เราสามารถปล่อยของได้ทีละเล็กๆ ไม่กระทบกับระบบใหญ่แบบเดิม ถ้าเป็นระบบเดิมที่ทุกอย่างเกี่ยวข้องกันหมด การแก้ไขแม้แต่เพียงเล็กน้อยถ้าผิดพลาดก็เกิดผลกระทบในวงกว้าง การพัฒนาระบบจึงช้ากว่า
- เมื่อ Service แยกออกจากกัน ทำให้ต้องเตรียมการในเรื่อง การสร้างเครื่อง โครงสร้างของ Infrastructure ต้องเตรียมพร้อม โดยใช้ container technology เข้ามารองรับการทำงานดังกล่าว
- เราจะทราบได้อย่างไรว่าที่ทำขึ้นไปเกิดปัญหา หรือ มีจุดไหนที่สามารถพัฒนาให้ดีขึ้นได้ไหม สิ่งที่ตามมาคือการเตรียมการในเรื่อง Monitoring เพื่อเก็บข้อมูล จัดการและแจ้งสิ่งที่เป็นประโยชน์แก่ทีมไอทีและทีมพัฒนา หรือมี Management เพื่อเป็นตัวกลางในการจัดการระบบ ทั้งในส่วนของ Infrastructure และ Deployment
Kubernetes เป็นซอฟต์แวร์สำหรับ Container Orchestration คือซอฟต์แวร์ที่ใช้จัดการและควบคุมระบบ Cloud Container ที่ได้รับความนิยมสูงในปัจจุบัน โดย Container Orchestration คือ Container (Application)+ Cluster (Infrastructure architecture) มีหน้าที่บริหารจัดการระบบโครงสร้างโดยรวม และ Kubernetes ยังมีฟีเจอร์อื่นๆ อีกมาก เช่น การอัพเดตข้อมูลใน container (เปลี่ยนเวอร์ชั่นของไลบรารีหรือโค้ด), การ rollback กลับไปเวอร์ชั่นเดิมได้เมื่อเกิดปัญหา และการทำ Continuous Integration and Continuous Delivery (CI/CD)
แนวโน้มของการใช้งาน Container นั้นเติบโตขึ้นเรื่อย ๆ ทำให้ Kubernetes ได้รับความนิยมสูง และในเวลาที่ผ่านมา Docker และKubernetes นั้น มักจะต้องถูกใช้งานร่วมกับระบบ External Storage ที่มีการออกแบบมาให้ใช้งานและดูแลป้องกันข้อมูลที่ถูกต้อง โดยทางไอบีเอ็ม มี IBM Software Defined Storage และ IBM Hardware Storage ที่รองรับการให้บริการได้ทั้งในระดับ File, Block และ Object ได้ตามความต้องการ รองรับได้ทั้งการนำไปสร้าง Cluster บน Public Cloud และ Private Cloud ได้ด้วย
ส่วนของ Storage Infrastructure จะมีการออกแบบระบบ storage แบบแยกส่วน (External Storage) จาก Container สำหรับจัดการข้อมูลที่เข้าหรือออกจาก Container ได้สะดวก ส่วนการออกแบบใช้งานผ่าน external storage นั้น เกิดขึ้นเพื่อแก้ปัญหาของระบบ Container โดยปัญหานั้นคือ ข้อมูลที่สร้างจาก Container จะหายไปเมื่อ Container ปิดการทำงาน หรือครบกำหนดตาม life cycle ของ container นั้น การใช้งานผ่าน external storage จึงเข้ามาช่วยเรื่องนี้ ส่วนของ Volume ที่จัดการผ่าน external storage นั้น สามารถนำข้อมูลดังกล่าวกลับมาใช้งานได้อีก ข้อมูลไม่สูญหายไป และสามารถเชื่อมต่อกับระบบสำรองข้อมูล (Backup solution) ได้ง่ายขึ้น ซึ่งในปัจจุบัน Data Volume มีรูปแบบการใช้งานอยู่ 4 รูปแบบให้เลือก คือ
- Docker Data Volume ทำการสร้าง volume ให้กับ Container ที่ต้องการ เพื่อนำไปจัดเก็บและใช้ดึงข้อมูลภายใน container นั้นได้และช่วยให้ง่ายต่อการจัดการข้อมูลมากขึ้น เมื่อ container เกิดเสียหาย ข้อมูลจะยังคงอยู่
- Data Volume Container คือการใช้ container แยกขึ้นมาอีกตัว เพื่อจัดเก็บข้อมูลสำหรับ container ตัวอื่นๆ แทน ซึ่งรูปแบบนี้ทำให้สามารถแชร์ข้อมูลระหว่างแต่ละ container ร่วมกันได้ด้วย
- Directory Mounts เป็นการเชื่อมต่อแบบ Shared Volume หรือ mount directories/volume ให้อยู่บนเครื่อง worker node นั้น เข้ากับ Container ที่ต้องการ ซึ่งนอกจากจะสามารถใช้แชร์ข้อมูลระหว่างแต่ละ Container พร้อมกันได้แล้ว ยังสามารถ Unmount volume และ Mount volume นั้นกลับเข้ามาใช้ใหม่ได้ เพื่อให้กับ Container ที่จะเปิดขึ้นมาใหม่ มาทำงานแทนในอนาคต
- Storage Plugin คือการให้ Docker เชื่อมกับแพลตฟอร์มสตอเรจภายนอก (External Storage) ผ่านปลั๊กอินต่างๆ ซึ่งแต่ละปลั๊กอินจะมีอินเทอร์เฟซหรือ API ให้คุณสร้างและเป็นตัวกลางคอยจัดการระดับ Storage ที่มาจากภายนอก ให้เข้าไปใช้งานกับระบบของ Docker และ Container ที่อยู่ภายในระบบได้อย่างสะดวก
โดยในส่วนของ IBM Block Storage มีความสามารถในการปกป้องข้อมูลเช่นการทำ Snapshot, Replication, Cloning, Provisioning, Compression, Deduplication , Multitenancy และสามารถทำ Encryption FIPS 140-2 ได้ด้วย IBM Storage มีทุกอย่างครบถ้วนในตัวเอง สามารถทำได้ในระดับ Storage ไม่กระทำกับระบบเซิร์ฟเวอร์ที่ใช้รันงาน Application / Production อยู่
IBM Software Defined Storage มี certified storage plug-in สำหรับเป็นตัวเชื่อมต่อระหว่าง Block Storage กับ Container Infrastructure มีชื่อว่า IBM Spectrum Connect เป็น storage container plug-in ที่เป็นตัวกลางในการเชื่อมต่อ Block storage กับระบบของ container มาช่วยให้จัดการเรื่อง provisioning persistent storage แบบ unlimited capacities อีกด้วย สามารถ Download ได้ฟรี Free
- Download >>> https://www.ibm.com/us-en/marketplace/spectrum-connect
- ข้อมูลเพิ่มเติม >>> https://www.ibm.com/support/knowledgecenter/en/SS6JWS_3.4.0/UG/sc_ug_concept_containers.html
เพื่อรองรับการขยายตัวในปริมาณมากต้องการประสิทธิภาพสูง สามารถให้บริการได้ในระดับ File และ Object ร่วมภายใต้ระบบเดียวกันได้ด้วย รองรับได้ทั้งการนำไปสร้าง Cluster บน Public, Private หรือ Hybrid Cloud สำหรับเก็บ metadata ทั้งรูปภาพ VDO หรืองาน Object ต่าง ๆ เพื่อนำข้อมูลที่ได้ไปแชร์และใช้งานร่วมกันได้ โดยทาง IBM System Storage มี Software Defined Storage อย่าง Spectrum Scale และ IBM Cloud Object Storage (ICOS) รองรับการใช้งานดังกล่าวในระบบ container ได้เป็นอย่างดี
- ข้อมูลเพิ่มเติม “7 traits to use Spectrum Scale to run container workload”: https://developer.ibm.com/storage/2019/02/26/7-traits-to-use-spectrum-scale-to-run-container-workload/
Docker Containers and Microservices case study :::
Modern DevOps processes : Began shifting applications to a microservices.
ตามเทรนด์ของตลาด ตามความต้องการของมนุษย์ ที่มีเปลี่ยนแปลงไปอย่างรวดเร็ว จึงต้องการล้มเหลวที่รวดเร็ว ไม่ต้องกลัวที่จะทดสอบความคิดใหม่ ๆ และพัฒนาบริการใหม่ ๆ ให้กับผู้ใช้งานได้ทันท่วงที
เกริ่นเรื่อง Cloud-Native Application กันก่อน Cloud-Native คือแนวทางในการสร้างและใช้งาน Application โดยการนําข้อดีของระบบ Cloud Computing มาปรับใช้งาน เช่นการเพิ่ม ความเร็ว, ความยืดหยุ่น และคุณภาพให้สูงขึ้น ลดความเสี่ยงในการติดต้ังระบบให้ลดน้อยลงซึ่งอยู่บนพื้นฐานของหลัก 4 ประการ ได้แก่สถาปัตยกรรมแบบ Service-based, การสื่อสารแบบ API-based, ระบบโครงสร้างพื้นฐานแบบ Container-based และนำกระบวนการ DevOps มาใช้งาน
DevOps ก็สามารถมีได้ในทุกองค์กร กระบวนการ DevOps ทำให้สร้าง new users experience ให้มี application ใหม่ๆ ให้ลูกค้าได้ใช้งานได้มากขึ้น สร้างความน่าสนใจให้กับธนาคารหรือองค์กรนั้นๆมากขึ้น เช่นเดียวกับลักษณะของ Mobile Application, E-Commerce and Mobile Banking ที่จะต้องเน้นการพัฒนาตลอดเวลา และรวดเร็ว โดยไม่กระทบกับระบบโดยรวม ลักษณะของกระบวนการ DevOps จึงเหมาะสมกับระบบ แบบ Microservices และ Container Technology เป็นอย่างมาก
Mobile Application, E-Commerce and Mobile Banking :
ความท้าทายสำหรับระบบ payment processing ที่มี transaction จำนวนมากในแต่ละวัน โดยแต่ละ service จะมีทั้ง คนจ่ายเงิน โอนเงิน ดูยอดเงิน ซื้อ-ขายหุ้น และอีกหลายๆ สิ่ง ในเวลาเดียวกัน ระบบสมัยก่อน service มีโครงสร้างที่ต้องพึ่งพากันของทุก service จะพัฒนาหรือแก้ไขสักระบบ จึงเป็นเรื่องยาก ส่วนใหญ่มักจะเป็นแบบ Waterfall และ Sequential ที่กินเวลายาวนาน Application เหล่านี้ถูกสร้างขึ้นมาใหม่เป็นระบบขนาดใหญ่, มีความสามารถหลากหลาย, ทํางานร่วมกันอย่างใกล้ชิด โดยมี User Interface, บริการอันหลากหลาย, โค๊ดที่ใช้ในการเข้าถึงข้อมูล และส่วนประกอบอื่นๆ ถูกผสานรวมเข้าเป็น Application เดียว พอทุกสิ่งเกี่ยวเนื่องกันหมด จึงต้องให้ความสำคัญอย่างมาก เมื่อเกิดการปรับปรุงระบบจุดเดียว แล้วจะเกิดปัญหาขึ้นมา อาจจะเกิดผลกระทบกับทุกระบบได้ ส่งผลกระทบวงกว้าง
เช่น ระบบสมัยก่อน ของ E-Commerce Application ที่ถูกสร้างขึ้นมาให้ระบบทํางานร่วมกันอย่างใกล้ชิด โดยมากก็มักจะรวมเอาทุกความสามารถทาง ด้าน Web User Interface, Product Catalog, Shopping Cart, Product Recommendation, Product Rating & Review, Payment System และส่วนประกอบอื่นๆ ที่จําเป็นต้องการสั่งซื้อสินค้าบนระบบ E-Commerce นี้เข้าไว้ด้วยกัน เป็น Application เพียงชุดเดียว ถ้าเกิดเหตุการณ์ไม่คาดฝันกับสักระบบหนึ่งก็จะไม่สามารถใช้งานระบบอื่นได้เลย จึงมีการพัฒนาต่อมาเพื่อแก้ปัญหาดังกล่าว โดยมีเป้าหมายคือการแยก Service ต่างๆ ออกจากกันแต่ยังทำงานร่วมกันได้อยู่ เพื่อลดผลกระทบต่อระบบโดยรวม จึงมีการพัฒนาโครงสร้างมาใช้แบบ Microservices แทนระบบแบบเดิม
Cloud Service Provider (CSP) :
ความท้าทายของระบบ Cloud Service Provider คือ ต้องให้ทั้งความปลอดภัยข้อมูลของลูกค้าที่มาเช่าใช้งาน สามารถจัดการทรัพยากรได้ง่าย ยืดหยุ่น มีการจัดการการเข้าถึงข้อมูลทีเป็นระเบียบ ตามสิทธิ์การใช้งาน รองรับได้หลากหลายแพลตฟอร์ม การออกแบบระบบเพื่อรองรับ application ที่ลูกค้าจะเข้ามาเช่าใช้งาน รองรับการขยายตัวของข้อมูลปริมาณมาก ในเวลาอันสั้น และที่สำคัญมากคือ ระบบการป้องกันข้อมูลสูญหายเป็นเรื่องสำคัญมาก และต้องไม่มี downtime เกิดขึ้น จึงมีการนำเอา ระบบแบบ Microservices และ Container Technology มาใช้เป็นโครงสร้างพื้นฐาน infrastructure ในการทำระบบของ Cloud Service Provider เพื่อให้ระบบมีความยืดหยุ่นสูง รองรับ application ที่หลากหลายของลูกค้าที่เช่าใช้งาน ลดข้อจำกัดเรื่องแพลตฟอร์มลง เพิ่มความปลอดภัยและความเร็วของระบบในการ Deploy และรองรับ transactions ในปริมาณมาก ที่เป็นเรื่องพื้นฐานที่ระบบ Cloud Service Provider ควรมี
IBM Storage solution integrated with Container Technology and Microservices :
- IBM FlashSystem family : 2D dimensional raid technology ช่วยปกป้องข้อมูล 2 ระดับ ทั้ง ป้องกัน chip ภายใน disk module และการทำ Raid protection ในระดับ enclosures ได้ และมีฟังก์ชั่นต่างระดับ Storage layer มาช่วยให้การทำงานดีขึ้น
- IBM Storage Storwize family : มีฟังก์ชั่น Snapshot, Replication, Cloning, Provisioning, Compression, Deduplication , Multitenancy และสามารถทำ Encryption FIPS 140-2 ได้ด้วย
- IBM Spectrum Connect : Storage enabler container plug-in certified (Free download)
- IBM Spectrum Scale and ICOS : สำหรับงาน metadata รองรับการขยายตัวปริมาณมาก เชื่อมต่อ Storage ได้หลายประเภทภายใต้ระบบเดียวกัน สามารถกำหนดค่าการเคลื่อนย้ายข้อมูลไปยังดิสก์ประเภทต่างๆ ได้ตามต้องการ และยังมีฟังก์ชั่นอื่นๆ อีกมากมาย
- IBM Spectrum Protect/ Protect Plus : สำหรับงานสำรองข้อมูล ทั้ง agent-based และ agent-less technology
หากต้องการที่ปรึกษาทางด้านเทคโนโลยีหรือสนใจด้านการทำระบบ สามารถติดต่อทาง Computer Union หรือ IBM Thailand มีทีมงาน ที่พร้อมให้คำปรึกษาสำหรับทุกท่านอย่างครบถ้วน
Computer Union Distributor Tel : 02-311-6881 Ext. 7151, e-mail : cu_mkt@cu.co.th
Inbox เข้ามาได้ที่ Facebook IBM Thailand: https://www.facebook.com/IBMThailand/
เขียนโดย
ปรียานุช เปล่งวาจา
IBM IT/Specialist
IBM Thailand Co.,Ltd
สัญญา พรขจรกิจกุล
HW Sales Specialist
Computer Union
ธนกฤต โลเกศกระวี
System Engineer
Computer Union