Infrastructure as Code (IaC): แนวคิดที่ช่วยจัดการระบบของธุรกิจบนคลาวด์

ภาพแสดง IaC pipeline

Credit: https://www.sourcefuse.com

ทักทายผู้อ่าน

สวัสดีครับผู้อ่านทุกท่าน ในบทความนี้ผมจะพาผู้อ่านทุกท่านไปทำความรู้จักกับ Infrastructure as Code (IaC) กันซึ่งเป็นหนึ่งในแนวคิดหรือเทคโนโลยีที่มีประโยชน์มาก ๆ ในการสร้างแอปพลิเคชั่นและเชื่อมต่อการทำงานของแอปหลาย ๆ ตัวเข้าด้วยกันทำให้ระบบของเรานั้นมีประสิทธิภาพและรับมือได้หลายสถานการณ์ และช่วยลดอุปสรรคสำหรับนักพัฒนาโดยใช้ประโยชน์ทั้งหมดของ AWS 

จริง ๆ แล้วทาง Cloud HM ก็ได้มีบทความอธิบาย IaC มาแล้ว โดยอ่านได้ที่ https://blog.cloudhm.co.th/infrastructure-as-code/ 

สำหรับในบทความนี้ผมจะมาช่วยขยายความเพิ่มเติมให้ในส่วนที่เกี่ยวข้องกับผู้ให้บริการ AWS ถ้าผู้อ่านพร้อมแล้วก็ไปลุยกันเลยครับ!!

ทำความรู้จัก Infrastructure as Code แบบเร็ว ๆ

Infrastructure as Code หรือเรียกสั้น ๆ ว่า IaC คือแนวคิดและเทคนิคหนึ่งในการจัดการงาน Infrastructure ซึ่งแน่นอนว่าสำคัญกับยุคนี้มาก นั่นคือ Cloud Solution นั่นเอง

แนวคิดของการทำ Infrastructure as Code นั้น ก็คือการเปลี่ยนขั้นตอนการ Deploy ระบบทั้งหมดให้เป็นแบบ Automation ซึ่งก็คือทำให้กระบวนการต่าง ๆ นั้นเป็นระบบและทำงานได้เองอย่างอัตโนมัติและไม่ต้องการการเข้าไปดูแลหรือตรวจสอบบ่อยมาก ซึ่งนี่จึงเป็นการลดการเสียเวลาในการตรวจสอบ Application ของเรา 

โดยเราจะมี Code ที่เป็นตัวกำหนดทุกสิ่งอย่างในการ Deploy นั่นเอง ทำให้งานการติดตั้ง Infrastructure และตั้งค่าทั้งหมดถูกแปลงให้อยู่ในรูปของ Script เพื่อทำคำสั่งต่าง ๆ ตามที่เรากำหนดเอาไว้แทน แต่แทนที่จะเป็นภาษา Script เหมือนการเขียนโปรแกรมทั่ว ๆ ไปนั้น เราจะมีตัว service ที่ใช้ทำ IaC ซึ่งจะใช้ภาษาคอมพิวเตอร์แบบ High-level แทนซึ่งทำให้เขียนง่ายเยอะกว่ามาก

ตัวอย่างเช่นการติดตั้ง Linux Package ด้วยระบบ IaC นั้น ผู้ดูแลระบบก็สามารถทำการติดตั้ง, กำหนดค่าเบื้องต้น, สร้าง User, กำหนดสิทธิ์ และ Start Service เหล่านั้นขึ้นมาให้พร้อมใช้งานได้เลยจากการกำหนดค่าต่าง ๆ ใน IaC

ประโยชน์ของ Infrastructure as Code

  1. หน้าที่ของ IaC คือช่วยเพิ่มความเร็วในการสร้างระบบ Infra ของเรา

ซึ่งเป็นการรองรับกับการเขียนโค้ดหรือพัฒนา, การทดสอบหรือการทำ Test และ Production และยังรวมไปถึงการ Scale up/down ตามความต้องการ เพราะว่าการที่ IaC เป็นการใช้ Code และเก็บเป็น Script ทำให้สามารถ Automate Provisioning ได้ตลอดเวลา

  1. แก้ปัญหาการ Configure ซ้ำซ้อน เพิ่มการต่อเนื่องในการดำเนินงาน

ถ้ามีการ Configure ที่ซ้ำซ้อนจะทำให้เกิดปัญหาในเรื่องของการ Dev, Test และ Deploy ได้ ไม่ว่าจะเป็นปัญหาขณะ Deploy, ปัญหาเรื่อง Security Vulnerabilities และความเสี่ยงอื่น ๆ ในช่วงเวลาที่พัฒนา Application ควรจะต้องทำตามมาตรฐานของ Compliance ด้วยเช่นกัน IaC จะมาช่วยลดปัญหาการ Configure ซ้ำซ้อน โดยการ Provisioning Infra ให้เหมือนเดิมทุกครั้ง

  1. สามารถทำให้การพัฒนาระบบนั้นมีประสิทธิภาพและเร็วกว่าแบบเดิม

IaC ช่วยให้คุณมั่นใจได้ว่าในทุก ๆ Phase ของการพัฒนา Application มีความรวดเร็วยิ่งขึ้นโดย Developer สามารถสร้าง Sandboxes เพื่อทดสอบหรือจะเป็น CI/CD ได้เช่นกัน รวมไปถึงทีม QA เองก็สามารถ Provisioning Test Environment ขึ้นมาเพื่อทดสอบได้อย่างรวดเร็ว สามารถ Deploy ได้ใน Step เดียว

  1. ช่วยป้องกันปัญหาในการพัฒนาระบบของเรา

การพัฒนาประสิทธิภาพขององค์กรโดยที่ไม่ได้ใช้ IaC  จะต้องใช้พนักงานที่มีความเชี่ยวชาญในการ Provisioning เป็นผู้ดำเนินการให้ ถ้าเกิดพนักงานเหล่านั้นลาออกไป อาจจะทำให้ต้องมาปรับโครงสร้างและระบบกันใหม่ ซึ่ง IaC จะช่วยอุดช่องโหว่ตรงนี้ได้เพราะว่าเรายังสามารถ Provisioning ได้เพราะยังมี Configure files อยู่กับองค์กร

  1. ช่วยลดค่าใช้จ่ายและเพิ่มกำไร

เนื่องจากระยะเวลาที่ลดลง และไม่จำเป็นใช้ Skills ในการ Provisioning และ Scale Infra แล้ว IaC ยังช่วยให้องค์กรของคุณลดค่าใช้จ่ายในส่วนของ Cloud Computing ได้ เพราะ Model ของ Cloud Computing ส่วนใหญ่เป็นแบบ Pay as you go จ่ายเงินเท่าที่ใช้ และก็ยังช่วยให้ Developer ใช้เวลาน้อยลงในการจัดเตรียม Infra ทำให้สามารถ Focus กับการพัฒนา Application ได้มากขึ้น

ตัวอย่างของลูกค้าหลักของ AWS ที่ใช้บริการ IaC

เรื่องราวของลูกค้า GoDaddy

GoDaddy ลดความซับซ้อนของการหมุนเวียนการประมวลผลรายวันมากกว่า 100 รายการ

เรื่องราวของลูกค้า FCB

Futbol Club Barcelona ติดตั้งใช้โครงสร้างพื้นฐานแบบ “คลิกเดียว”

เรื่องราวของลูกค้า Expedia

Expedia พัฒนาแอปที่มีความพร้อมใช้งานสูงอย่างรวดเร็ว

อยากลองทำ IaC สามารถทำได้ยังไง?

จริง ๆ บนบล็อกของ AWS นั้นมี tutorial น่าสนใจที่สอนทำ Infrastructure as Code ที่รวดเร็วและยืดหยุ่นด้วยการใช้ AWS CDK กับ AWS Solutions Constructs

อธิบายคร่าว ๆ คือในขณะที่ปริมาณงานของเราที่ต้องการจะย้ายไปยังระบบ Cloud และโครงสร้างพื้นฐานทั้งหมดกลายเป็นแบบเสมือนจริง Infrastructure as Code (IaC) นั้นมีเยอะมาก ๆ และเราต้องการจะย้ายมันแบบคล่องตัวเราสามารถใช้ Solutions Constructs เพื่อเร่งความเร็วในการพัฒนา IaC ได้ โดยในบทความนี้ https://aws.amazon.com/th/blogs/devops/rapid-flexible-infrastructure-with-solutions-constructs-cdk/ อธิบายการสร้างสถาปัตยกรรมซึ่งนำเข้าและจัดเก็บค่าที่อ่านได้จากเซ็นเซอร์โดยใช้ Amazon Kinesis Data Streams, AWS Lambda และ Amazon DynamoDB

นอกจากนี้ยังมีบริการต่าง ๆ ของ AWS ที่สามารถถูกรวมนำเข้ากับ IaC ได้ ดังนี้

  • Amazon EC2 (Elastic Compute Cloud) กับ Auto Scaling เพื่อทำการรักษา application availability 
  • AWS RDS (Relational Database Service) เพื่อทำการ launch และจัดการ Relational Databases
  • Amazon ElastiCache เพื่อทำการ deploy, operate และ scale ตัว in-memory data store/cache ในระบบของ Cloud Environment ได้
  • AWS Elastic Beanstalk เพื่อทำการ deploy และจัดการ applications ได้อย่างรวดเร็ว
  • AWS CloudWatch เพื่อทำการสอดส่องและติดตาม health of the infrastructure ในขั้นตอน production
  • Elastic Load Balancing (ELB) เพื่อทำการกระจายหรือ distribute incoming traffic across multiple targets ในโซนแบบ multiple Availability Zones
  • Amazon Virtual Private Cloud (VPC) เพื่อทำการ launch AWS resources เข้าไปใน virtual interconnected network.
  • Amazon Elastic Container Service (ECS) สำหรับตัวจัดการ container management
  • Amazon S3 (Simple Storage Service) เพื่อเก็บข้อมูลแบบ static
  • Amazon CloudFront เพื่อใช้เป็น Content Delivery Network (CDN)
  • AWS Lambda เพื่อทำการรันโค้ดโดยไม่ต้องทำ provisioning หรือจัดการ servers
  • Amazon Web Services Partner Badge Public Sector และ DevOps Partner

ทิ้งท้าย (How to Start)

อ่านมาจนถึงตรงนี้ถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับการให้บริการ AWS การสร้างแอปพลิเคชั่นของบริษัทโดยใช้เทคโนโลยีหรือแนวคิดของ Infrastructure as Code (IaC) นั้นสามารถติดต่อ Cloud HM เพื่อให้คำปรึกษาได้โดยตรงเลยครับ เพราะเรามีผู้เชี่ยวชาญที่สามารถให้คำแนะนำได้สอดคล้องกับรูปแบบของบริษัทและเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ

อ้างอิง

  1. https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html
  2. https://aws.amazon.com/th/blogs/devops/rapid-flexible-infrastructure-with-solutions-constructs-cdk/
  3. https://aws.amazon.com/marketplace/solutions/devops/infrastructure-as-code?aws-marketplace-cards.sort-by=item.additionalFields.headline&aws-marketplace-cards.sort-order=desc&awsf.aws-marketplace-devops-store-use-cases=*all
  4. https://www.sourcefuse.com/portfolio/infrastructure-as-code-aws/

เรียบเรียงบทความโดย รังสิมันต์ เกษแก้ว

— Cloud HM