ปรับใช้แอปพลิเคชันบนระบบคลาวด์
หลังจากแอปพลิเคชันระบบคลาวด์ได้รับการออกแบบและพัฒนาแล้ว สามารถย้ายแอปพลิเคชันดังกล่าวไปยังขั้นตอนการปรับใช้เพื่อเผยแพร่ไปยังไคลเอ็นต์ได้ การปรับใช้สามารถเป็นกระบวนการแบบหลายขั้นตอน โดยแต่ละขั้นตอนที่เกี่ยวข้องกับชุดของการตรวจสอบเพื่อให้แน่ใจว่าได้เป็นไปตามเป้าหมายของแอปพลิเคชัน
ก่อนที่คุณปรับใช้แอปพลิเคชันระบบคลาวด์ลงในการผลิต จะเป็นประโยชน์ถ้าจะมีรายการตรวจสอบเพื่อช่วยในการประเมินแอปพลิเคชันของคุณกับรายการแนวทางปฏิบัติที่ดีที่สุดที่จําเป็นและแนะนํา ตัวอย่างเช่น รายการตรวจสอบการปรับใช้จาก AWS และ Azure ผู้ให้บริการระบบคลาวด์จํานวนมากมีรายการเครื่องมือและบริการที่ครอบคลุมที่ช่วยในการปรับใช้ เช่น เอกสารนี้ จาก Azure
กระบวนการปรับใช้
การปรับใช้ของแอปพลิเคชันระบบคลาวด์เป็นกระบวนการวนซ้ําที่เริ่มต้นจากจุดสิ้นสุดของการพัฒนาและดําเนินการต่อไปจนถึงการเปิดตัวของแอปพลิเคชันบนทรัพยากรการผลิต:
กระบวนการปรับใช้ 
รูปที่ 1: กระบวนการปรับใช้โค้ด
เป็นเรื่องปกติที่นักพัฒนาระบบคลาวด์จะรักษาเวอร์ชันของแอปพลิเคชันของตนที่เรียกใช้พร้อมกันหลายเวอร์ชันเพื่อปรับใช้แอปพลิเคชันไปป์ไลน์ไปยังขั้นตอนต่าง ๆ:
- การทดสอบ
- การจัดเตรียม
- การผลิต
แต่ละขั้นตอนทั้งสามควรมีทรัพยากรและการกําหนดค่าที่เหมือนกันซึ่งช่วยให้นักพัฒนาสามารถทดสอบและปรับใช้แอปพลิเคชันและลดโอกาสความไม่สอดคล้องกันจากการเปลี่ยนแปลงในสภาพแวดล้อมและการกําหนดค่า
การเปลี่ยนแปลงแอปพลิเคชันไปป์ไลน์
ในสถานการณ์การพัฒนาแอปพลิเคชันคล่องตัวทั่วไป (ดังที่แสดงในรูปก่อนหน้า) แอปพลิเคชันจะได้รับการดูแลรักษาโดยชุดของวิศวกรและนักพัฒนาซอฟต์แวร์ที่ทํางานเกี่ยวกับปัญหาและข้อบกพร่องโดยใช้กลไกการติดตามปัญหาบางประเภท การเปลี่ยนแปลงรหัสจะถูกเก็บไว้ผ่านระบบที่เก็บโค้ด (เช่น svn, mercurialหรือ git) ซึ่งมีการบํารุงรักษาสาขาแยกต่างหากสําหรับการเผยแพร่รหัส หลังจากส่งผ่านการเปลี่ยนแปลงโค้ด การตรวจทาน และการอนุมัติ รหัสสามารถไปป์ไลน์ในระยะการทดสอบ การจัดเตรียม และการผลิต ซึ่งสามารถทําได้หลายวิธี:
สคริปต์แบบกําหนดเอง: นักพัฒนาสามารถใช้สคริปต์แบบกําหนดเองเพื่อดึงโค้ดเวอร์ชันล่าสุด และเรียกใช้คําสั่งเฉพาะเพื่อสร้างแอปพลิเคชัน และนําเข้าสู่สถานะการผลิต
รูปภาพของเครื่องเสมือนที่เตรียมไว้ล่วงหน้า: นักพัฒนาสามารถเตรียมใช้งานและกําหนดค่าเครื่องเสมือนที่มีสภาพแวดล้อมและซอฟต์แวร์ที่จําเป็นทั้งหมดเพื่อปรับใช้แอปพลิเคชันของพวกเขา เมื่อกําหนดค่าแล้ว เครื่องเสมือนสามารถสแนปช็อตและส่งออกไปยังรูปภาพเครื่องเสมือนได้ รูปภาพนี้สามารถกําหนดให้กับระบบการประสานงานบนคลาวด์ต่าง ๆ ที่จะปรับใช้และกําหนดค่าสําหรับการปรับใช้การผลิตโดยอัตโนมัติ
ระบบการรวมแบบต่อเนื่อง: เพื่อลดความซับซ้อนของงานต่างๆ ที่เกี่ยวข้องในการปรับใช้ เครื่องมือการรวมอย่างต่อเนื่อง (CI) สามารถใช้เพื่อทํางานโดยอัตโนมัติ (เช่นการค้นคืนเวอร์ชันล่าสุดจากที่เก็บข้อมูล การสร้างไบนารีแอปพลิเคชัน และการใช้งานกรณีการทดสอบ) ที่จําเป็นต้องดําเนินการให้เสร็จสมบูรณ์ในเครื่องต่างๆ ที่ประกอบเป็นโครงสร้างพื้นฐานการผลิต ตัวอย่างของเครื่องมือ CI ที่ได้รับความนิยม ได้แก่ Jenkins, Bamboo และ Travis Azure Pipelines เป็นเครื่องมือ CI เฉพาะของ Azure ที่ออกแบบมาเพื่อทํางานกับการปรับใช้ Azure
จัดการเวลาหยุดทํางาน
การเปลี่ยนแปลงบางอย่างไปยังแอปพลิเคชันอาจจําเป็นต้องมีการสิ้นสุดบางส่วนหรือเต็มรูปแบบของบริการแอปพลิเคชันเพื่อรวมการเปลี่ยนแปลงในส่วนหลังของแอปพลิเคชัน โดยทั่วไปแล้วนักพัฒนาต้องกําหนดเวลาเฉพาะของวันเพื่อลดการหยุดชะงักของลูกค้าของแอปพลิเคชัน แอปพลิเคชันที่ถูกออกแบบมาสําหรับการรวมอย่างต่อเนื่องอาจสามารถดําเนินการเปลี่ยนแปลงเหล่านี้ได้บนระบบการผลิตโดยที่ลูกค้าของแอปพลิเคชันน้อยที่สุดหรือไม่หยุดชะงัก
ความซ้ําซ้อนและความคลาดเคลื่อนของความผิดพลาด
แนวทางปฏิบัติที่ดีที่สุดในการปรับใช้แอปพลิเคชันโดยทั่วไปถือว่าโครงสร้างพื้นฐานของระบบคลาวด์นั้นไม่สามารถใช้งานได้และอาจไม่พร้อมใช้งานหรือเปลี่ยนแปลงได้ตลอดเวลา ตัวอย่างเช่น เครื่องเสมือนที่ปรับใช้ในบริการ IaaS อาจกําหนดให้มีการสิ้นสุดการทํางานตามดุลยพินิจของผู้ให้บริการคลาวด์ โดยขึ้นอยู่กับชนิดของ SLA
แอปพลิเคชันต้องงอกจากการเข้ารหัสแบบตายตัวหรือสมมติว่าจุดสิ้นสุดแบบคงที่สําหรับคอมโพเนนต์ต่างๆ เช่น ฐานข้อมูลและจุดสิ้นสุดการจัดเก็บ แอปพลิเคชันที่ออกแบบมาอย่างดีควรใช้ API ของบริการเพื่อคิวรีและค้นหาทรัพยากรและเชื่อมต่อกับพวกมันอย่างเป็นแบบไดนามิก
ความล้มเหลวที่รุนแรงในทรัพยากรหรือการเชื่อมต่อสามารถเกิดขึ้นได้ในขณะนี้ แอปพลิเคชันที่สําคัญต้องได้รับการออกแบบมาเพื่อคาดหมายถึงความล้มเหลวดังกล่าว และต้องออกแบบมาสําหรับความซ้ําซ้อนของการเฟลโอเวอร์
ผู้ให้บริการระบบคลาวด์จํานวนมากออกแบบศูนย์ข้อมูลของตนลงในภูมิภาค และโซน ภูมิภาคเป็นไซต์ทางภูมิศาสตร์เฉพาะที่เป็นที่ตั้งของศูนย์ข้อมูลที่สมบูรณ์ ในขณะที่โซนเป็นแต่ละส่วนภายในศูนย์ข้อมูลที่ถูกแยกออกเพื่อการยอมรับข้อบกพร่อง ตัวอย่างเช่น โซนภายในศูนย์ข้อมูลตั้งแต่สองโซนขึ้นไปอาจมีกําลังไฟ การระบายความร้อน และโครงสร้างพื้นฐานการเชื่อมต่อแยกต่างหาก เพื่อให้ความผิดพลาดในโซนหนึ่งไม่ส่งผลกระทบต่อโครงสร้างพื้นฐานในโซนอื่น โดยทั่วไปข้อมูลภูมิภาคและโซนจะพร้อมใช้งานโดยผู้ให้บริการระบบคลาวด์แก่ไคลเอ็นต์และนักพัฒนาเพื่อออกแบบและพัฒนาแอปพลิเคชันที่สามารถใช้คุณสมบัติการแยกนี้ได้
ดังนั้นนักพัฒนาสามารถกําหนดค่าแอปพลิเคชันของตนเพื่อใช้ทรัพยากรในหลายภูมิภาคหรือโซนเพื่อปรับปรุงความพร้อมใช้งานของแอปพลิเคชัน และทนต่อความล้มเหลวที่อาจเกิดขึ้นทั่วทั้งโซนหรือภูมิภาค พวกเขาจะต้องกําหนดค่าระบบที่สามารถกําหนดเส้นทางและสร้างสมดุลการรับส่งข้อมูลข้ามภูมิภาคและโซนได้ เซิร์ฟเวอร์ DNS ยังสามารถกําหนดค่าให้ตอบกลับการร้องขอการค้นหาโดเมนไปยังที่อยู่ IP เฉพาะในแต่ละโซนได้ โดยขึ้นอยู่กับตําแหน่งที่มาของคําขอ ซึ่งเป็นวิธีการปรับสมดุลโหลดตามความใกล้เคียงทางภูมิศาสตร์ของไคลเอ็นต์
ความปลอดภัยและการแข็งตัวในการผลิต
การเรียกใช้แอปพลิเคชันอินเทอร์เน็ตบนระบบคลาวด์สาธารณะจะต้องทําด้วยความระมัดระวัง เนื่องจากช่วง IP บนระบบคลาวด์เป็นตําแหน่งที่ตั้งที่เป็นที่รู้จักกันดีสําหรับเป้าหมายที่มีค่าสูง จึงเป็นสิ่งสําคัญที่ต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันทั้งหมดที่ปรับใช้บนระบบคลาวด์เป็นไปตามแนวทางปฏิบัติที่ดีที่สุดเมื่อพูดถึงการรักษาความปลอดภัยและความเข้มแข็งของจุดสิ้นสุดและอินเทอร์เฟซ หลักการพื้นฐานบางอย่างที่ควรปฏิบัติตามได้แก่:
- ซอฟต์แวร์ทั้งหมดควรสลับไปยังโหมดการผลิต ซอฟต์แวร์ส่วนใหญ่สนับสนุน "โหมดดีบัก" สําหรับการทดสอบภายในเครื่องและ "โหมดการผลิต" สําหรับการปรับใช้จริง โดยทั่วไปแอปพลิเคชันโหมดดีบักจะทําให้ข้อมูลจํานวนมากรั่วไหลไปยังผู้โจมตีที่ส่งข้อมูลที่ไม่ถูกต้องและด้วยเหตุนี้จึงเป็นแหล่งความสอดคล้องที่ง่ายสําหรับแฮ็กเกอร์ ไม่ว่าคุณจะใช้เฟรมเวิร์กเว็บเช่น Django และ Rails หรือฐานข้อมูลเช่น Oracle สิ่งสําคัญคือต้องปฏิบัติตามแนวทางที่เกี่ยวข้องสําหรับการปรับใช้แอปพลิเคชันการผลิต
- การเข้าถึงบริการที่ไม่ซ้ําซ้อนควรจํากัดเฉพาะที่อยู่ IP ภายในบางที่อยู่สําหรับการเข้าถึงของผู้ดูแลระบบ ตรวจสอบให้แน่ใจว่าผู้ดูแลระบบไม่สามารถเข้าสู่ระบบทรัพยากรที่สําคัญจากอินเทอร์เน็ตโดยตรงโดยไม่ต้องไปที่ launchpad ภายใน กําหนดค่าไฟร์วอลล์ด้วยที่อยู่ IP และกฎตามพอร์ตเพื่อให้สามารถเข้าถึงชุดขั้นต่ําสุดโดยเฉพาะผ่าน SSH และเครื่องมือการเชื่อมต่อระยะไกลอื่น ๆ
- ปฏิบัติตามหลักการของสิทธิพิเศษน้อยที่สุด เรียกใช้บริการทั้งหมดเป็นผู้ใช้ที่มีสิทธิ์น้อยที่สุดที่สามารถดําเนินการตามบทบาทที่จําเป็นได้ จํากัดการใช้ข้อมูลประจําตัวของรูทเพื่อเข้าสู่ระบบด้วยตนเองเฉพาะโดยผู้ดูแลระบบที่จําเป็นต้องดีบักหรือกําหนดค่าปัญหาที่สําคัญในระบบ นอกจากนี้ยังนําไปใช้กับการเข้าถึงฐานข้อมูลและแผงการดูแลระบบ โดยทั่วไปการเข้าถึงควรได้รับการปกป้องโดยใช้การจับคู่คีย์ส่วนตัวสาธารณะแบบสุ่มและการจับคู่คีย์นี้ควรจัดเก็บอย่างปลอดภัยในตําแหน่งที่จํากัดและเข้ารหัสลับ รหัสผ่านทั้งหมดควรมีข้อกําหนดความแข็งแรงที่เข้มงวด
- ใช้เทคนิคการป้องกันและเครื่องมือที่รู้จักกันดีสําหรับระบบตรวจจับและป้องกันการบุกรุก (IDS/IPS) ข้อมูลความปลอดภัยและการจัดการเหตุการณ์ (SIEM), ไฟร์วอลล์ชั้นแอปพลิเคชันและระบบป้องกันมัลแวร์
- ตั้งค่ากําหนดการการแก้ไขที่ตรงกับการเผยแพร่โปรแกรมแก้ไข โดยผู้จัดจําหน่ายของระบบที่คุณใช้ บ่อยครั้งที่ผู้จําหน่ายเช่น Microsoft มีวงจรการเผยแพร่แบบคงที่สําหรับโปรแกรมแก้ไข