เพิ่มประสิทธิภาพการทำงานของคุณด้วย Amazon Web Services
เผยแพร่แล้ว: 2022-03-11ในช่วงสองสามปีที่ผ่านมา คำพูดที่ร้อนแรงที่สุดบนริมฝีปากของทุกคนคือ "ผลิตภาพ" ในโลกอินเทอร์เน็ตที่พัฒนาอย่างรวดเร็ว การทำอะไรให้เสร็จเร็วมักจะได้รับการโหวตเสมอ แม้จะต้องใช้ตรรกะทางธุรกิจอย่างรวดเร็วและแม่นยำ ในฐานะนักพัฒนา PHP ที่มีประสบการณ์ ฉันยังคงใช้เวลาหลายร้อยชั่วโมงกับงานอื่นๆ เช่น การตั้งค่าฐานข้อมูลหรือแคช การปรับใช้โปรเจ็กต์ การตรวจสอบสถิติออนไลน์ และอื่นๆ นักพัฒนาหลายคนต้องดิ้นรนกับสิ่งที่เรียกว่างานเบ็ดเตล็ดเหล่านี้มาหลายปี โดยเสียเวลาไปกับการเพ่งความสนใจไปที่ตรรกะของโครงการแทน
ชีวิตฉันเปลี่ยนไปเมื่อเพื่อนพูดถึง Amazon Web Services (AWS) เมื่อสี่ปีก่อน เปิดประตูบานใหม่ และนำไปสู่การเพิ่มผลผลิตและคุณภาพของโครงการอย่างมาก สำหรับใครที่ไม่ได้ใช้ AWS โปรดอ่านบทความนี้ ซึ่งผมมั่นใจว่าคุณจะคุ้มค่าเวลาของคุณ
ประวัติ AWS
Amazon Web Services เปิดตัวอย่างเป็นทางการในปี 2549 หลายคนคงเคยได้ยินชื่อนี้ แต่อาจไม่รู้ว่าบริการนี้นำเสนออะไรได้บ้าง คำถามแรกคือ AWS คืออะไร?
Amazon Web Services (AWS) คือชุดของบริการคลาวด์คอมพิวติ้งหรือที่เรียกว่าบริการเว็บ ซึ่งประกอบขึ้นเป็นแพลตฟอร์มคลาวด์คอมพิวติ้งที่ Amazon.com นำเสนอ
วิกิพีเดีย
จากคำจำกัดความนี้ เราทราบสองสิ่ง: AWS อยู่ในระบบคลาวด์ และ AWS คือชุดของบริการแทนที่จะเป็นบริการเดียว เนื่องจากสิ่งนี้ไม่ได้บอกคุณมาก ในความคิดของฉัน เป็นการดีกว่าสำหรับผู้เริ่มต้นที่จะเข้าใจ AWS เป็น:
- AWS คือชุดบริการต่างๆ ในระบบคลาวด์ ตามที่นิยามไว้
- AWS มอบทรัพยากรการประมวลผลที่รวดเร็วทางออนไลน์ (เช่น คุณต้องใช้เวลา 10 นาทีในการตั้งค่าเซิร์ฟเวอร์ Linux)
- AWS เสนอค่าธรรมเนียมที่ไม่แพง
- AWS ให้บริการที่ใช้งานง่ายซึ่งแกะกล่อง ซึ่งช่วยประหยัดเวลาได้มากในการตั้งค่าฐานข้อมูล แคช พื้นที่เก็บข้อมูล เครือข่าย และบริการโครงสร้างพื้นฐานอื่นๆ
- AWS พร้อมใช้งานเสมอและสามารถปรับขนาดได้สูง
มีข้อดีอีกมากมายในการใช้ AWS ดังนั้น มาดูภาพรวมคร่าวๆ ว่า AWS สามารถเพิ่มประสิทธิภาพการทำงานของคุณได้อย่างไร
สร้างบัญชี AWS ฟรี
เพื่อเริ่มใช้บริการใด ๆ คุณต้องมีบัญชี การสร้างบัญชีสำหรับ AWS ไม่ควรเกินห้านาที ตรวจสอบให้แน่ใจว่าคุณมีข้อมูลต่อไปนี้อยู่ในมือ:
- ที่อยู่อีเมล ซึ่งใช้สำหรับรับอีเมลยืนยัน
- บัตรเครดิตซึ่งจะไม่ถูกเรียกเก็บเงินเนื่องจากขั้นตอนการตั้งค่าฟรีเสมอ
- หมายเลขโทรศัพท์ซึ่งจะได้รับการเรียกระบบอัตโนมัติเพื่อระบุผู้ใช้
แค่นั้นแหละ. เมื่อคุณมีข้อมูลตามรายการด้านบนพร้อมแล้ว ให้ไปที่หน้าเว็บของ AWS และสร้างบัญชีโดยปฏิบัติตามคำแนะนำที่ง่ายต่อการปฏิบัติตาม
สังเกตสิ่งต่อไปนี้:
- บริการของ AWS ส่วนใหญ่มีทรัพยากรระดับฟรีมากมายเป็นรายเดือน กล่าวคือ การทดสอบ AWS มักทำให้คุณเสียค่าใช้จ่ายเพียงเล็กน้อยหรือไม่มีเลย
- หมายเลขโทรศัพท์และข้อมูลส่วนบุคคลอื่น ๆ ไม่ถูกละเมิดตามประสบการณ์ของฉัน
รับการตั้งค่าเซิร์ฟเวอร์ EC2 แรกของคุณ
ข้อดีอย่างหนึ่งของบริการคลาวด์คือความสามารถในการรับทรัพยากรที่ใช้ร่วมกันได้ตามต้องการ Amazon ได้ให้บริการสี่ระดับสำหรับผู้ใช้ในการเข้าถึงบริการ เรียงตามลำดับความง่าย:
- คอนโซลการจัดการ
- Command-Line-Tool,
- เอสดีเค
- RESTful API
ในบทความนี้ เราจะใช้คอนโซลการจัดการ ดังนั้น หลังจากที่คุณล็อกอินเข้าสู่คอนโซล คุณจะเห็นหน้าจอดังนี้:
มีสองพื้นที่ที่ควรทราบ:
- ที่มุมบนขวา คุณจะพบตัวเลือกภูมิภาค AWS ให้บริการใน 11 ภูมิภาคทั่วโลก และยังคงเติบโต เลือกภูมิภาคตามที่คุณต้องการ หรือปล่อยให้เป็นสหรัฐอเมริกาฝั่งตะวันออก (เวอร์จิเนียเหนือ) เป็นค่าเริ่มต้น ภูมิภาคต่างๆ อาจมีราคาแตกต่างกันไป ซึ่งคุณควรคำนึงถึงเมื่อการใช้งานของคุณเติบโตขึ้น
- หน้าจอส่วนใหญ่เต็มไปด้วยรายการบริการ เราจะกล่าวถึง EC2 ในส่วนนี้ ดูอย่างรวดเร็วว่า AWS ให้บริการอะไรบ้าง ไม่ต้องกังวลหากไม่สมเหตุสมผล บริการทั้งหมดจะทำงานด้วยตัวเอง อย่างไรก็ตาม คุณจะได้ผลผลิตมากขึ้นโดยใช้การผสมผสานกัน
ความต้องการขั้นพื้นฐานที่สุดของทรัพยากรระบบคลาวด์คือเซิร์ฟเวอร์เสมือน EC2 หรือ Elastic Compute Cloud เป็นชื่อที่ Amazon เลือกสำหรับบริการเซิร์ฟเวอร์เสมือน มาดูกันว่าการรับเซิร์ฟเวอร์ Linux ทางออนไลน์ทำได้ง่ายเพียงใด
- ในคอนโซลการจัดการ EC2 ให้เริ่มกระบวนการเปิดตัวดังด้านล่าง:
- เลือกอิมเมจเครื่อง (AMI สั้นๆ) เพื่อเริ่มต้น นี่คือระบบปฏิบัติการที่จะเรียกใช้เครื่องของคุณ เลือกระบบใดก็ได้ที่คุณต้องการ ฉันแนะนำให้คุณเริ่มต้นด้วย Amazon Linux ซึ่งใช้
yum
เพื่อจัดการแพ็คเกจ:
- ถัดไป เลือกประเภทอินสแตนซ์ คุณสามารถเข้าใจสิ่งนี้ว่าเป็นข้อกำหนดฮาร์ดแวร์สำหรับเซิร์ฟเวอร์เสมือนของคุณ คุณสามารถเริ่มต้นด้วย t2.micro เพราะคุณจะได้รับการใช้งานฟรี 750 ชั่วโมงทุกเดือนกับอินสแตนซ์นี้ในปีแรก โปรดทราบ ว่านี่ใช้ได้ เฉพาะปีแรกนับ จากวันที่คุณสมัครใช้งาน และสำหรับอินสแตนซ์ t2.micro เท่านั้น เป็นเรื่องดีหากคุณต้องการได้ลิ้มลอง AWS เท่านั้น
- ด้วยความสามารถในการกำหนดค่าเซิร์ฟเวอร์โดยละเอียดยิ่งขึ้น คุณสามารถเปิดเซิร์ฟเวอร์ได้ ครั้งแรกที่คุณใช้ EC2 คุณจะเห็นหน้าจอคล้ายกับที่แสดงด้านล่าง คำเตือนเกี่ยวกับความปลอดภัยบอกเราว่า Amazon ให้ความสำคัญกับความปลอดภัยมากแค่ไหน อย่างไรก็ตาม เราสามารถละเว้นคำเตือนนี้ได้จนกว่าเราจะไปที่ส่วนเกี่ยวกับบริการที่มีการจัดการ
- สุดท้ายนี้ ในการเข้าถึงเซิร์ฟเวอร์ระยะไกล เราจำเป็นต้องมีข้อมูลประจำตัว AWS จะแจ้งให้เราเลือกคู่คีย์ SSH ดังในภาพด้านล่าง ดาวน์โหลดไฟล์คีย์ความเป็นส่วนตัวแล้วคลิกปุ่มเปิด และใช่ เราทำเสร็จแล้ว กำลังกำหนดค่าเซิร์ฟเวอร์เสมือนใหม่ และจะพร้อมใช้งานในอีกไม่กี่นาที
- เมื่ออินสแตนซ์พร้อมแล้ว คุณสามารถเข้าสู่ระบบในฐานะผู้ใช้เริ่มต้น
ec2-user
ด้วยคีย์ความเป็นส่วนตัวของคุณec2-user
เป็นค่าเริ่มต้นของ AWS ที่มีความสามารถ sudo ด้วย แม้ว่าจะไม่สามารถเปลี่ยนชื่อผู้ใช้เริ่มต้นได้ แต่คุณสามารถสร้างผู้ใช้รายใดก็ได้และกำหนดสิทธิ์ที่เหมาะสมตามความต้องการของคุณ ที่อยู่เซิร์ฟเวอร์ของคุณสามารถพบได้ที่นี่:
กระบวนการข้างต้นควรใช้เวลาน้อยกว่าห้านาที และนั่นคือความง่ายในการทำให้เซิร์ฟเวอร์เสมือนเริ่มทำงาน ในส่วนถัดไป เราจะเรียนรู้ว่า AWS ช่วยเราจัดการอินสแตนซ์ที่เราเพิ่งสร้างขึ้นได้อย่างไร
การเรียกเก็บเงินตามความต้องการ
ทรัพยากร AWS ส่วนใหญ่จะเรียกเก็บเงินเป็นชั่วโมง ซึ่งให้ความยืดหยุ่นที่ดี ตัวอย่างเช่น การใช้อินสแตนซ์ EC2 ที่เราเพิ่งสร้างขึ้น มีสองวิธีในการหยุดให้บริการ: หยุดและสิ้นสุด การกระทำทั้งสองจะหยุดการเรียกเก็บเงิน ความแตกต่างคือการหยุดอินสแตนซ์ เราสามารถเริ่มต้นใหม่ได้ในภายหลังโดยบันทึกงานทั้งหมดของเรา ในทางตรงกันข้าม การยุติอินสแตนซ์ เราจะคืนอินสแตนซ์ให้ AWS เพื่อการรีไซเคิลและไม่มีทางกู้คืนข้อมูลได้ ความจำเป็นในการยุติผลลัพธ์ของอินสแตนซ์จาก AWS การตั้งค่าขีดจำกัด 20 อินสแตนซ์ต่อภูมิภาคต่อบัญชีโดยค่าเริ่มต้น และอินสแตนซ์ที่หยุดจะยังคงนับจนกว่าจะสิ้นสุด
เราสามารถหยุดอินสแตนซ์ได้อย่างรวดเร็วโดย:
เมื่อคุณหยุดอินสแตนซ์ EC2 การเรียกเก็บเงินของคุณจะหยุดเพิ่มขึ้นเช่นกัน มีประโยชน์อย่างยิ่งในสถานการณ์ต่อไปนี้:
- เมื่อคุณต้องการลองสิ่งใหม่ ๆ จะคุ้มกว่าถ้าคุณต้องจ่ายเพียงสองสามชั่วโมง และคุณอาจจะไม่เกินระดับฟรีสำหรับบริการบางอย่าง
- เมื่อความต้องการด้านคอมพิวเตอร์ของคุณอยู่ในระดับสภาพแวดล้อมการผลิต ตัวอย่างเช่น ในอดีต ฉันต้องจองทรัพยากรการประมวลผลซึ่งปกติแล้วจะมากกว่าการใช้งานสูงสุด 30-50 เปอร์เซ็นต์ ด้วย AWS ฉันสามารถจัดเตรียมทรัพยากรด้วยวิธีที่ยืดหยุ่นมากขึ้น:
ข้อมูลราคาสำหรับ AWS มีให้ทางออนไลน์ หลังจากทำการคำนวณแล้ว คุณอาจตั้งคำถามว่า AWS ถูกกว่าจริงหรือ การคูณอัตรารายชั่วโมงเป็นเวลาหนึ่งเดือน ดูเหมือนว่าไม่มีการแข่งขันเลย คำตอบคือใช่และไม่ใช่
AWS ไม่ถูกกว่าหากคุณคำนวณอัตรารายชั่วโมงสำหรับทรัพยากรแบบออนดีมานด์ในหนึ่งเดือน อย่างไรก็ตาม เรายังคงมีตัวเลือกการเรียกเก็บเงินอินสแตนซ์แบบเหมาจ่ายตามที่แสดงด้านล่าง:
สำหรับความต้องการทรัพยากรขั้นต่ำ เราสามารถรับส่วนลด 30 ถึง 70 เปอร์เซ็นต์โดยใช้อินสแตนซ์ที่สงวนไว้ พร้อมกับทรัพยากรที่แตกต่างกันอื่นๆ ที่เรียกเก็บเงินเป็นอินสแตนซ์ตามความต้องการ ในทางปฏิบัติ ราคานี้จะถูกลง 30 ถึง 40 เปอร์เซ็นต์สำหรับสัญญาผูกมัดหนึ่งปี และมากขึ้นไปอีกเมื่อมีข้อผูกมัดสามปีโดยใช้อินสแตนซ์แบบเหมาจ่าย นั่นคือเหตุผลที่ฉันจะลงคะแนน "ใช่" ในคำถามข้างต้น และ AWS ก็มีราคาถูกกว่าหากคุณรวมประโยชน์ด้านความปลอดภัยและการตรวจสอบ
บริการจัดการ
เป้าหมายหนึ่งของ AWS คือการลดต้นทุนการดำเนินงานให้ได้มากที่สุด ตามเนื้อผ้า เราต้องการทีมวิศวกรระบบจำนวนมากเพื่อรักษาความปลอดภัยและสุขภาพของโครงสร้างพื้นฐานของเรา ไม่ว่าจะทางออนไลน์ที่ไซต์งาน ทีมที่มีประสบการณ์จะเขียนและปรับใช้เครื่องมืออัตโนมัติเพื่อลดความซับซ้อนของกระบวนการ อย่างไรก็ตาม การจัดการบริการก็กลายเป็นโครงการที่ซับซ้อนในทางปฏิบัติเช่นกัน AWS ทำหน้าที่เป็นเครื่องช่วยชีวิตในการช่วยเราจัดการทรัพยากรของเรา ด้านล่างนี้ ฉันได้ระบุบริการบางส่วนที่ AWS ให้บริการซึ่งมีการใช้งานมากที่สุด:
- กลุ่มความปลอดภัย AWS
- IAM, การจัดการการเข้าถึงข้อมูลประจำตัว,
- คลาวด์วอทช์
- และรายการบริการการปรับใช้อัตโนมัติ เช่น OpsWorks (ซึ่งจะไม่กล่าวถึงในบทความนี้)
AWS Security Group
วิธีที่ AWS จัดการการควบคุมการเข้าถึงบริการทำได้ในสองชั้นแยกกัน ในระดับเครือข่าย ทำได้โดยใช้แนวคิดที่เรียกว่า “กลุ่มความปลอดภัย” บริการของ AWS ทั้งหมดอยู่ในกลุ่มความปลอดภัย และกลุ่มรักษาความปลอดภัยเป็นผู้กำหนดว่าใครได้รับอนุญาตให้ผ่าน เมื่อใช้อินสแตนซ์ EC2 ของเรา AWS ได้สร้างกลุ่มความปลอดภัยให้เราโดยอัตโนมัติ:
เราสามารถตัดสินใจได้ว่าสิ่งใดเข้ามาและสิ่งใดสามารถออกไปได้โดยการกำหนดค่ากฎขาเข้า/ขาออก กฎ TCP, UDP และ ICMP ได้รับการสนับสนุนโดยบริการ EC2 กลุ่มความปลอดภัยทำหน้าที่เหมือนไฟร์วอลล์ระดับฮาร์ดแวร์ภายนอก และเราไม่จำเป็นต้องคิดเกี่ยวกับการแก้ไข
ข้อดีอีกอย่างของการใช้กลุ่มความปลอดภัยคือสามารถนำกลับมาใช้ใหม่ได้ กลุ่มความปลอดภัยหนึ่งกลุ่มสามารถใช้ร่วมกันระหว่างทรัพยากรต่างๆ ในทางปฏิบัติ จะช่วยปรับปรุงประสิทธิภาพการบำรุงรักษาได้อย่างมาก โดยขจัดความยุ่งยากในการตั้งค่านโยบายความปลอดภัยทีละรายการสำหรับแต่ละทรัพยากร นอกจากนี้ ลักษณะการแชร์ได้ของกลุ่มความปลอดภัยช่วยให้เราสามารถกำหนดค่าได้ในที่เดียว และใช้นโยบายความปลอดภัยนั้นกับทรัพยากรอื่น ๆ โดยไม่ต้องยุ่งยากกับการตั้งค่าด้วยตนเอง ทีละรายการสำหรับแต่ละทรัพยากร
เอกลักษณ์และการจัดการการเข้าถึง
AWS มีวิธีการอื่นในการจัดการการควบคุมการเข้าถึงโดยใช้ IAM นี่คือการควบคุมความปลอดภัยระดับแอปพลิเคชันเมื่อคุณต้องการเข้าถึงอินเทอร์เฟซ RESTful คำขอ REST แต่ละรายการต้องลงนามเพื่อให้ AWS รู้ว่าใครกำลังเข้าถึงบริการ นอกจากนี้ การตรวจสอบกับรายการนโยบายที่กำหนดค่าไว้ล่วงหน้า AWS จะพิจารณาว่าควรปฏิเสธหรืออนุญาตการดำเนินการดังกล่าว
เราจะไม่กล่าวถึงรายละเอียดเกี่ยวกับ IAM ในบทความนี้ อย่างไรก็ตาม โปรดทราบว่า AWS ให้ความสำคัญกับความปลอดภัยเป็นอย่างมาก คุณจึงมั่นใจได้ว่าไม่มีผู้เยี่ยมชมที่ไม่ได้รับอนุญาตสามารถเข้าถึงข้อมูลที่เป็นความลับของคุณได้

CloudWatch
CloudWatch เป็นบริการที่ AWS ให้บริการในการรวบรวมและติดตามตัววัดทุกประเภทจากทรัพยากร AWS ของคุณ มีประสิทธิภาพมากขึ้นเนื่องจากความสามารถในการตอบสนองต่อเหตุการณ์บางอย่าง (หรือสัญญาณเตือน) ด้วยความช่วยเหลือของ CloudWatch เราสามารถตรวจสอบความสมบูรณ์ของอินสแตนซ์ EC2 ที่สร้างขึ้นใหม่ของเรา
- เราสามารถเพิ่มการเตือนไปยังอินสแตนซ์ EC2 ของเราได้อย่างรวดเร็ว:
- สัญญาณเตือนอาจสร้างขึ้นโดยการระบุเกณฑ์เพื่อวัตถุประสงค์ต่างๆ มากมาย:
หมายเหตุ : SNS เป็นบริการตามหัวข้อที่ให้บริการโดย AWS เพื่อส่งการแจ้งเตือน สามารถส่งการแจ้งเตือนทางอีเมล, SMS, การแจ้งเตือนแบบพุช iOS/Android และรูปแบบอื่น ๆ อีกมากมาย
จากการตรวจสอบไปจนถึงการแจ้งเตือน CloudWatch พยายามทำให้ความต้องการการตรวจสอบเป็นไปโดยอัตโนมัติในไม่กี่คลิก มีเมตริกที่กำหนดไว้ล่วงหน้ามากมายสำหรับบริการต่างๆ ของ AWS สำหรับผู้ใช้ขั้นสูง คุณสามารถสร้างเมตริกที่กำหนดเองสำหรับแอปพลิเคชันของคุณได้
เกี่ยวกับค่าใช้จ่าย บริการ Free Tier ของ CloudWatch มักมีมากมายสำหรับโครงการเริ่มต้น อย่างไรก็ตาม แม้ว่าธุรกิจของคุณจะเติบโตขึ้น ค่าใช้จ่ายเพิ่มเติมมักจะน้อยกว่า 1 เปอร์เซ็นต์ของค่าบริการ ตรวจสอบราคาโดยละเอียดสำหรับข้อมูลเพิ่มเติม เมื่อพิจารณาถึงความง่ายในการตั้งค่าระบบการตรวจสอบโดยใช้ CloudWatch ได้กลายเป็นเครื่องมือตรวจสอบที่ใช้มากที่สุด
บริการสมัครฟรีไม่ยุ่งยาก
ในฐานะนักพัฒนา เราน่าจะประสบกับสถานการณ์ต่อไปนี้:
- แอปพลิเคชันของเราต้องการองค์ประกอบฐานข้อมูล ซึ่งหมายความว่าเราต้อง:
- รับเซิร์ฟเวอร์สำหรับฐานข้อมูล
- ติดตั้งซอฟต์แวร์ฐานข้อมูล
- กำหนดค่าการมอนิเตอร์สำหรับเซิร์ฟเวอร์และฐานข้อมูล
- วางแผนแผนสำรอง
- แก้ไขซอฟต์แวร์ตามต้องการ
- และอื่นๆ อีกมากมายที่ไม่ได้ระบุไว้ในที่นี้
- แอปพลิเคชันของเราต้องการพื้นที่จัดเก็บไฟล์แบบกระจาย ซึ่งหมายความว่าเราต้อง:
- ค้นหาโซลูชันโอเพ่นซอร์ส (หรือเชิงพาณิชย์) ที่มีอยู่สำหรับการจัดเก็บไฟล์แบบกระจาย
- เตรียมเซิร์ฟเวอร์ที่จำเป็น
- ติดตั้งและกำหนดค่าโซลูชันที่เลือก ซึ่งมักจะไม่ตรงไปตรงมา
- กำหนดค่ามอนิเตอร์สำหรับเซิร์ฟเวอร์และฐานข้อมูล
- และอื่นๆ อีกมากมายที่ไม่ได้ระบุไว้ที่นี่
- แอปพลิเคชันของเราต้องการแคช
- แอปพลิเคชันของเราต้องการคิวข้อความ
- และปัญหาอื่น ๆ อีกมากมายที่ต้องแก้ไข บวกกับ เราต้องทำการกำหนดค่าล่วงหน้าและหลังการตรวจสอบ
และอย่างที่คุณอาจเดาได้แล้วว่า นี่เป็นอีกหนึ่งประเด็นสำคัญที่ AWS ช่วยเหลือ มีบริการระดับแอปพลิเคชันมากมาย คุณจึงไม่ต้องพิจารณาสิ่งอื่นใด
มาครอบคลุมบางส่วนเพื่อให้คุณได้ภาพอย่างรวดเร็ว
RDS ฐานข้อมูลที่จัดการให้คุณ แต่ไม่ใช่โดยคุณ
ฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ได้รับการยอมรับอย่างกว้างขวางจากแอปพลิเคชันจำนวนมาก ในสภาพแวดล้อมการผลิต ต้องให้ความสนใจเป็นพิเศษเสมอเมื่อปรับใช้แอปพลิเคชันโดยใช้ RDBMS โดยเริ่มจากวิธีการตั้งค่าและกำหนดค่าฐานข้อมูล ตามด้วยเวลาและวิธีสำรองข้อมูลและกู้คืน
ในทีมของเรา ผู้ดูแลระบบฐานข้อมูล (DBA) เคยใช้เวลาอย่างน้อย 30 เปอร์เซ็นต์ของเวลาเขียนการตั้งค่าและสคริปต์การบำรุงรักษา ด้วยการเปิดตัว AWS RDS DBA ของเราจึงมีเวลามากขึ้นในการปรับแต่งประสิทธิภาพ SQL ซึ่งเป็นพื้นที่ที่คุณต้องการลงทุน DBA ของคุณ
RDS เสนออะไรให้คุณบ้าง? ในระยะสั้น:
- RDS ให้การสนับสนุนเครื่องมือฐานข้อมูลยอดนิยมส่วนใหญ่ รวมถึง MySQL, SQLServer, PostgreSQL
- ฐานข้อมูล ไม่ว่าจะเป็นโหนดหรือคลัสเตอร์ สามารถสร้างได้ในไม่กี่คลิก
- RDS เสนอการสนับสนุนในตัวสำหรับพารามิเตอร์ฐานข้อมูลที่ใช้ร่วมกัน ภายใต้บริการชื่อ “กลุ่มพารามิเตอร์”
- RDS ให้การสนับสนุนในตัวสำหรับการจัดการการเข้าถึงด้วยความช่วยเหลือของ Security Group ซึ่งค่อนข้างคล้ายกับที่เรากล่าวถึงสำหรับ EC2
- RDS ให้บริการเพิ่มเติมโดยเปิดใช้งาน Multi-AZ ในคลิกเดียว การมอนิเตอร์ การสแตนด์บาย และการเปลี่ยนการสลับเมื่อเกิดข้อผิดพลาดทั้งหมดจะทำโดยอัตโนมัติ
- การบำรุงรักษาและสำรองข้อมูล RDS เป็นไปโดยอัตโนมัติ
สรุปได้ว่า RDS ช่วยประหยัดเวลาได้มากในการตั้งค่าและบำรุงรักษาบริการฐานข้อมูล ในการแลกเปลี่ยน คุณจะต้องจ่ายมากกว่าเซิร์ฟเวอร์ EC2 ที่เกี่ยวข้องประมาณ 40 เปอร์เซ็นต์ ดังนั้นจึงเป็นการตัดสินใจทางธุรกิจว่าจะเลือกใช้ RDS หรือปรับใช้เซิร์ฟเวอร์ที่เกี่ยวข้องด้วยตัวเอง อย่างไรก็ตาม ช่วยให้คุณมีเวลามากขึ้นในการทำงานที่เกี่ยวข้องกับธุรกิจจริง มากกว่าความเสถียรของโครงสร้างพื้นฐานและความสามารถในการปรับขนาด นอกจากนี้ คุณจะสังเกตเห็นได้ในเร็วๆ นี้ว่านี่คือแนวทางการดำเนินธุรกิจของผู้สนับสนุนของ AWS
Dynamo DB ซึ่งเป็นพื้นที่จัดเก็บคีย์-ค่าที่ปรับขนาดได้เป็นพันล้านระเบียน
NoSQL กลายเป็นหัวข้อโปรดในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากโครงการในชีวิตจริงจำนวนมากไม่ต้องการการสนับสนุนจาก DBMS เชิงสัมพันธ์ต่างๆ จึงมีการแนะนำรายการฐานข้อมูล NoSQL ออกสู่ตลาด อเมซอนไม่ตกอยู่เบื้องหลังในเรื่องนี้ DynamoDB (https://aws.amazon.com/dynamodb) เป็นที่เก็บคีย์-ค่าที่ประกาศโดย Amazon ในปี 2555 และผู้สนับสนุนหลักในการให้บริการนี้คือ Werner Vogels CTO ของ Amazon ซึ่งเป็นหนึ่งในผู้เชี่ยวชาญชั้นนำของโลกด้าน ultra- ระบบที่ปรับขนาดได้
ไม่เป็นความลับที่ Amazon จะจัดการกับทราฟฟิกจำนวนมาก DynamoDB มาจาก Dynamo ซึ่งเป็นเอ็นจิ้นการจัดเก็บข้อมูลภายในสำหรับธุรกิจของ Amazon จำนวนมาก รวมถึงบริการตะกร้าสินค้าที่ให้บริการคำขอนับพันล้านรายการในวันคริสต์มาส DynamoDB ไม่มีข้อจำกัดในการขยายขนาด
นอกจากนี้ เมื่อเปรียบเทียบกับโซลูชัน NoSQL อื่นๆ เช่น Cassandra หรือ MongoDB แล้ว DynamoDB มีข้อได้เปรียบทางเศรษฐกิจอย่างมหาศาล มีการเรียกเก็บเงินในหน่วยของปริมาณงานที่สงวนไว้ (จำนวนการเขียน/อ่านต่อวินาทีที่อนุญาต) ซึ่งสามารถเพิ่มหรือลดได้แบบเรียลไทม์ ด้านล่างนี้คือตารางเปรียบเทียบราคาระหว่าง DynamoDB และโซลูชัน NoSQL แบบสแตนด์อโลนอื่นๆ:
ความต้องการทางธุรกิจ | บริการ DynamoDB | ค่าใช้จ่าย DynamoDB | ใช้บริการอื่น | ค่าใช้จ่ายเมื่อใช้บริการอื่น |
ธุรกิจขนาดเล็ก (น้อยกว่า 1,000 DAU, ข้อมูล 16GB) | 10 หน่วยการเขียน หน่วยอ่าน 10 หน่วย | $9.07/เดือน • | t1.micro •• 16GB EBS ••• | $14.64/เดือน |
ธุรกิจขนาดกลาง (น้อยกว่า 100k DAU, ข้อมูล 160GB) | 100 เขียนหน่วย หน่วยอ่าน 100 หน่วย | $101.62/เดือน | m4.xlarge 160GB EBS | $190.95/เดือน |
ธุรกิจขนาดใหญ่ (สูงสุด 1m DAU, ข้อมูล 1TB) | 1,000 หน่วยการเขียน หน่วยการอ่าน 1,000 หน่วย | $852.58/เดือน | คลัสเตอร์ c4.4xlarge • 512GB EBS • | $1329.24/เดือน |
• เพื่อความเป็นธรรม ราคาคำนวณโดยใช้ราคาตามความต้องการในภูมิภาค US-EAST
•• อินสแตนซ์ AWS EC2 ถูกเลือกเพื่อโฮสต์บริการ NoSQL อื่นๆ
••• EBS คือบริการจัดเก็บข้อมูลถาวรที่จัดหาให้โดย AWS
ตามที่เราสามารถอ่านได้จากตาราง DynamoDB ให้บริการตั้งแต่แกะกล่อง และโดยปกติแล้วจะมีราคาที่ต่ำกว่าเมื่อเทียบกับการสร้างพื้นที่จัดเก็บคีย์-ค่าของคุณเอง นั่นเป็นเพราะว่าหากคุณใช้ MongoDB/Cassandra Cluster เกินขีดจำกัด คุณจะจ่ายมากขึ้นสำหรับสิ่งที่คุณไม่เคยใช้
Amazon ให้บริการในลักษณะที่มีการจัดการเต็มรูปแบบ ซึ่งหมายความว่าคุณไม่ต้องกังวลว่าจะตั้งค่า ปรับขนาด หรือตรวจสอบ DynamoDB ของคุณอย่างไร พวกเขาทั้งหมดทำโดย AWS อันที่จริงแล้ว การอ่านและการเขียนรายการ DynamoDB จะถูกวัดในความซับซ้อนของเวลาคงที่เสมอ โดยไม่คำนึงถึงขนาดของข้อมูลที่ถูกจัดการ ดังนั้น บางแอปพลิเคชันจึงเลือกที่จะทิ้งเลเยอร์แคชหลังจากเปลี่ยนเป็น DynamoDB น่าทึ่งจริงๆ
SQS บริการคิวแบบกระจาย
เมื่อทำงานกับข้อมูลจำนวนมาก เรามักจะกระจายการคำนวณไปยังโหนดการคำนวณจำนวนมาก เมื่อทำธุรกิจทั่วโลก เรามักต้องการไปป์ไลน์ในการประมวลผลข้อมูลที่รวบรวมจากโหนดที่กระจายอยู่ในขอบเขตกว้างทางภูมิศาสตร์ เพื่อช่วยให้เป็นไปตามข้อกำหนดสำหรับกิจกรรมดังกล่าว AWS ขอแนะนำ SQS, Simple Queue Service เช่นเดียวกับบริการคิวอื่นๆ ที่ได้รับการยอมรับ SQS เสนอวิธีการส่งข้อความ/งานระหว่างส่วนประกอบทางลอจิคัลต่างๆ ในลักษณะที่คงอยู่
ตามชื่อของมัน SQS เป็นบริการพื้นฐานที่มีให้ในตอนต้นของ AWS อย่างไรก็ตาม Amazon ได้พัฒนา SQS อย่างต่อเนื่อง และขึ้นอยู่กับความต้องการ SQS อาจเรียบง่ายหรือทรงพลังเท่าที่คุณต้องการด้วยพารามิเตอร์ที่ปรับแต่งได้มากมาย คุณสมบัติขั้นสูงบางอย่างของ SQS ได้แก่:
- เก็บรักษาข้อความได้นานถึง 14 วัน
- กลไกการมองเห็นเพื่อหลีกเลี่ยงการสูญเสียข้อความในเหตุการณ์ความล้มเหลว
- การจัดส่งล่าช้าต่อข้อความ
- กำหนดนโยบายใหม่เพื่อจัดการกับข้อความที่ล้มเหลว (เรียกว่าจดหมายที่ส่งไม่ได้)
บริการคิวไม่ควรซับซ้อนเกินไป คุณอาจสงสัยว่าเหตุใดจึงควรใช้ทั้งส่วนเพื่อแนะนำ SQS บางทีคุณอาจเดาเหตุผลได้แล้ว เช่นเดียวกับบริการอื่นๆ ของ AWS SQS เป็นบริการที่มีการจัดการเต็มรูปแบบ ซึ่งหมายความว่า:
- คิวสามารถปรับขนาดได้สูง อาจเป็นข้อความหลายสิบข้อความที่คุณกำลังส่งผ่านหรือหลายล้านข้อความต่อวินาที ดังนั้น SQS จึงปรับขนาดได้ทันที
- คิวเป็นแบบต่อเนื่องและกระจาย ซึ่งหมายความว่าข้อมูลสำคัญจะไม่สูญหายเว้นแต่จะหมดอายุ
- คุณไม่จำเป็นต้องตั้งค่าเซิร์ฟเวอร์เพื่อปรับใช้ซอฟต์แวร์คิวของคุณ และแน่นอน คุณไม่จำเป็นต้องตั้งค่าการตรวจสอบบริการที่ซับซ้อนเช่นกัน
S3 ที่เก็บไฟล์ แต่ไม่ใช่แค่ที่เก็บไฟล์
S3 ย่อมาจาก Simple Storage Service และเหมือนกับ Dropbox เป็นบริการสำหรับผู้ใช้ปลายทาง แต่สำหรับแอปพลิเคชัน ตามคำจำกัดความ S3 เป็นที่เก็บข้อมูลแบบออบเจ็กต์ที่มีอินเทอร์เฟซเว็บที่เรียบง่าย
S3 นั้นเรียบง่ายสำหรับผู้ใช้ แต่ยังมาพร้อมกับคุณสมบัติขั้นสูงมากมาย I S3 ได้กลายเป็นมาตรฐานอุตสาหกรรม โดยเฉพาะอย่างยิ่งสำหรับแอปพลิเคชันที่ใช้บริการของ AWS อื่นๆ สาเหตุหลักมาจากการผสานรวม S3 ได้ง่ายจนกลายเป็นปลายทางการจัดเก็บข้อมูลภายนอกยอดนิยมสำหรับบริการของ AWS ส่วนใหญ่ นอกจากนี้ บริการมากมาย เช่น DynamoDB, SQS และอื่นๆ ใช้งาน S3 ภายในเป็นจำนวนมาก
การทำความเข้าใจ S3 ควรขยายประโยชน์ของการใช้บริการที่มีการจัดการของ AWS อื่นๆ เนื่องจากบริการส่วนใหญ่เก็บข้อมูลสำรองไว้ใน S3 นอกจากนี้ S3 ยังเป็นปลายทางการส่งออก/นำเข้าทั่วไปสำหรับบริการต่างๆ ซึ่งรวมถึงแต่ไม่จำกัดเพียง DynamoDB, RDS และ Redshift
สุดท้าย S3 ก็เหมือนกับบริการอื่นๆ ของ AWS มีการจัดการอย่างเต็มที่เพื่อให้เราสามารถเริ่มใช้บริการได้โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์หรือกลไกเฟลโอเวอร์ ในแง่เศรษฐกิจ S3 ยังจ่ายตามที่คุณใช้บริการ ดังนั้นคุณจึงสามารถทดลองใช้งานได้ตลอดเวลาโดยไม่มีค่าใช้จ่ายมาก
บริการขั้นสูงและ SDK
มีบริการอื่นๆ ของ AWS ที่น่าสังเกตเช่นกัน เนื่องจากพื้นที่มีจำกัด เราจึงขอนำเสนอสิ่งที่น่าสนใจดังนี้:
- Redshift: ฐานข้อมูลแบบคอลัมน์ซึ่งสามารถใช้ในการประมวลผลข้อมูล นับล้านล้าน ได้อย่างรวดเร็ว คุณต้องลองใช้หากคุณรับผิดชอบ ETL ของข้อมูลจำนวนมาก
- Data Pipeline: IA ช่วยให้คุณถ่ายโอนข้อมูลระหว่างบริการของ AWS ได้อย่างรวดเร็ว และเปิดใช้งานการประมวลผลข้อมูลเป็นระยะในชาร์ดที่เล็กกว่า
- ElastiCache: เซิร์ฟเวอร์ Memcache ที่มีการจัดการ เรียบง่าย แต่ทำงานได้อย่างสมบูรณ์แบบ
- แลมบ์ดา: คลาวด์คอมพิวติ้งรุ่นต่อไป แลมบ์ดารันโค้ดที่อัปโหลดในรูปแบบที่ขับเคลื่อนด้วยเหตุการณ์ซึ่งเปิดประตูใหม่ให้กับการออกแบบแอปพลิเคชันแบบกระจาย
- เส้นทาง 53: โซลูชัน DNS อันทรงพลังพร้อมการสนับสนุนการตอบสนองแบบถ่วงน้ำหนัก การตอบสนองตามตำแหน่งทางภูมิศาสตร์บนโซลูชัน DNS มาตรฐานอุตสาหกรรมอื่นๆ
- SNS: บริการแจ้งเตือนที่ใช้งานง่าย ออกแบบในรูปแบบสมาชิก/ผู้เผยแพร่
- อื่น ๆ อีกมากมาย.
ฉันคิดว่าการตรวจสอบ AWS เป็นนิสัยที่ดีทุกครั้งที่คุณแนะนำส่วนประกอบใหม่ให้กับแอปพลิเคชันของคุณ ส่วนใหญ่แล้ว AWS จะทำให้คุณประหลาดใจเพราะจะมีทางเลือก SaaS ที่พร้อมจะนำเสนอ
นอกจากนี้ เพื่อให้เข้าถึงอินเทอร์เฟซ RESTful ได้ง่ายขึ้น Amazon ได้จัดเตรียม SDK ในภาษาการเขียนโปรแกรมยอดนิยมเกือบทั้งหมด คุณไม่ควรมีปัญหาในการค้นหา SDK ที่คุณชื่นชอบ
สรุป
เราได้กล่าวถึงบริการบางส่วนที่ใช้กันอย่างแพร่หลายของ AWS ในบทความนี้ แน่นอนว่ามีบางพื้นที่ที่ AWS จะช่วยธุรกิจของคุณได้ คุณอาจเลือกที่จะย้ายส่วนประกอบบริการที่มีอยู่ไปยัง AWS ที่เทียบเท่าได้ เช่น ฐานข้อมูล MySQL ไปยัง RDS เป็นต้น คุณอาจพบว่าตัวเองถามว่ามีบริการของ AWS สำหรับส่วนประกอบนี้ในซอฟต์แวร์ของฉันหรือไม่ ดังนั้น รับบัญชี AWS วันนี้ และรับการเพิ่มประสิทธิภาพการทำงานของคุณในไม่กี่นาที
อ่านเพิ่มเติมในบล็อก Toptal Engineering:
- การพัฒนาสำหรับคลาวด์ในคลาวด์: การพัฒนา BigData ด้วย Docker ใน AWS
- ทำการบ้านของคุณ: 7 เคล็ดลับการสอบสถาปนิกโซลูชันที่ผ่านการรับรองจาก AWS
- การบันทึก SSH และการจัดการเซสชันโดยใช้ AWS SSM
- การทำงานกับ TypeScript และ Jest Support: บทช่วยสอน AWS SAM