Amazon Elastic Compute Cloud (Amazon EC2) เป็นเครื่อง Server เสมือน (Virtual Server) ที่สามารถสร้างผ่านหน้าเว็บ AWS ได้อย่างง่าย ๆ ภายในไม่กี่คลิก รองรับ 24 regions และ 77 availability zones ทั่วโลก
สามารถเลือกสเปคของเครื่องทั้ง CPU, Memory, Network Performance, ระบบปฏิบัติการ และซอฟต์แวร์บางอย่างได้ตามที่เราต้องการ
สามารถกำหนด Security Group ได้เองอย่างง่าย ๆ สามารถเพิ่มจำนวน Storage ซึ่งเป็น EBS volumes พร้อมทั้งกำหนดขนาดของ Storage แต่ละตัวได้ด้วย
นอกจากนี้ยังสามารถซื้อ software จาก AWS Marketplace มาติดตั้งบน EC2 ได้โดยตรงอีกด้วย
สำหรับผู้ที่ต้องการเทรน Machine learning แต่ไม่อยากลงทุนกับการ์ดจอแพง ๆ ก็สามารถสร้าง GPU-based instances เพื่อมาเทรนได้
(ถึงแม้เราจะจ่ายเท่าที่เราใช้งานเท่านั้น แต่ก็ต้องตรวจสอบเงื่อนไขและระวังเรื่องค่าใช้จ่ายดี ๆ นะครับ)
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/ec2/
Amazon Lightsail เป็น Virtual private server หรือก็คือเครื่อง Server เสมือนที่คล้าย ๆ กับ Amazon EC2
ซึ่งเราสามารถเลือกสเปคของเครื่อง ระบบปฏิบัติการ และซอฟต์แวร์บางอย่างได้ตามที่เราต้องการ
แต่มีข้อจำกัดมากกว่า EC2 เพราะสามารถเลือกได้ตาม package ที่มีอยู่เท่านั้น แต่ข้อจำกัดนั้นถูกกลบไปด้วยจุดเด่นคือราคาที่ถูกกว่า EC2 มาก ๆ
เริ่มต้นเพียง $3.50 ต่อเดือนก็สามารถสร้าง Server ส่วนตัวของเราแบบสมบูรณ์เพื่อใช้สร้างเว็บแอปพลิเคชันหรือเว็บไซต์ได้แล้ว
เหมาะอย่างยิ่งสำหรับมือใหม่ที่ไม่ได้มีความต้องการเฉพาะเจาะจงเพราะสามารถสร้าง Server ได้ง่ายมาก ๆ
และหากในอนาคตเว็บแอปพลิเคชันของเรามีขนาดใหญ่ขึ้นหรือมีความต้องการที่เฉพาะเจาะจงมากขึ้นก็สามารถอัปเกรดไปยัง EC2 โดยทำตามขั้นตอนในหน้าเว็บเพียงไม่กี่ขั้นตอน
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/lightsail/
Amazon Virtual Private Cloud (Amazon VPC) เป็น Networking layer ของ Amazon EC2 ที่ช่วยให้เราสามารถ launch AWS resource ต่าง ๆ ภายใน virtual network ที่เรากำหนดได้
โดยเราสามารถควบคุมและตั้งค่า environment ของ virtual network นี้ได้อย่างสมบูรณ์ ทั้งเลือก range ของ IP address,
สร้าง subnet, ตั้งค่า route table และ network gateway นอกจากนี้ VPC ยังรองรับ IPv4 และ IPv6
ซึ่งทำให้สามารถเข้าแอปพลิเคชันหรือ resource ต่าง ๆ ได้อย่างง่ายดายและมั่นใจได้ในเรื่องความปลอดภัย
ตัวอย่างเช่น เราสามารถตั้งค่า subnet ให้เว็บไซต์ของเราสามารถเชื่อมต่อกับอินเตอร์เน็ตภายนอก (หมายความว่าคนทั่วไปทุกคนสามารถเข้าถึงเว็บไซต์นี้ได้)
ในขณะที่ตั้งค่าให้ฐานข้อมูลหรือระบบหลังบ้านอื่น ๆ รันใน private subnet เท่านั้น
ดังนั้นทั้งฐานข้อมูลหรือระบบหลังบ้านอื่น ๆ นี้จะไม่สามารถเข้าถึงผ่านทางอินเตอร์เน็ตจากภายนอกได้โดยตรง
ช่วยให้ระบบของเรามีความปลอดภัยมากยิ่งขึ้น
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/vpc/
Amazon Elastic Block Store (Amazon EBS) เป็นพื้นที่จัดเก็บข้อมูลที่ออกแบบมาให้ใช้กับ Amazon EC2 ถ้างงให้คิดว่าเหมือนฮาร์ดดิสก์หรือ SSD สำหรับเก็บข้อมูลในคอมพิวเตอร์ครับ
และเช่นเดียวกับคอมพิวเตอร์ทั่วไปที่เราสามารถใส่ฮาร์ดดิสก์หลาย ๆ อันในคอมพิวเตอร์เครื่องเดียวกันได้ (ถ้ามีช่องต่อพอ)
เราก็สามารถ mount EBS หลายตัวใน EC2 instance เครื่องเดียวได้เช่นกัน
(อย่าสับสนนะครับ EC2 instance 1 เครื่องสามารถต่อกับ EBS หลายตัวได้ แต่ EBS 1 ตัวไม่สามารถต่อกับ EC2 instance หลายเครื่องได้นะครับ)
EBS มีชนิดของตัวเก็บข้อมูลให้เราเลือกได้ถึง 6 ชนิด แบ่งออกเป็นสองประเภทหลัก ๆ คือ SSD และ HDD ซึ่งจะต่างกันที่ราคาและประสิทธิภาพขึ้นอยู่กับว่า
Server ของเราต้องการแค่ไหน โดย AWS เคลมว่าเราสามารถเปลี่ยนชนิดของตัวเก็บข้อมูลนี้หรือขยายขนาดตัวเก็บข้อมูลได้ตลอดเวลาโดยไม่รบกวนการทำงานของแอปพลิเคชัน
นอกจากนี้เรายังสามารถสำรองข้อมูลใน EBS เผื่อเกิดเหตุการณ์ไม่คาดฝันโดยทำ Snapshot แล้วเก็บใน S3 ได้แบบอัตโนมัติอีกด้วย
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/ebs/
Amazon Simple Storage Service (Amazon S3) เป็นพื้นที่จัดเก็บข้อมูลที่ออกแบบมาให้ใช้ได้กับทุกสิ่ง (Object) สามารถเรียกจากที่ไหนก็ได้ผ่าน Internet API
หากเปรียบ EBS เป็นเหมือน Harddisk หรือ SSD ที่เชื่อมต่อกับเครื่องคอมพิวเตอร์
S3 ก็จะเปรียบเหมือน Cloud ที่เราสามารถอัปโหลดและเรียกดูข้อมูลจากที่ไหนก็ได้โดยไม่เกี่ยวกับเครื่องคอมพิวเตอร์นั่นเอง
โดยทาง Amazon เคลมว่า S3 นี้ถูกออกแบบมาให้มีความทนทานถึง 99.999999999% (เลข 9 จำนวน 11 ตัว)
ดังนั้นจึงสามารถไว้ใจได้ทั้งเรื่องประสิทธิภาพและความปลอดภัย (ถ้าเราตั้งค่าถูกต้องนะครับ)
นอกจากนี้ยังมีฟีเจอร์เกี่ยวกับการเก็บไฟล์และใช้ไฟล์ต่าง ๆ ซึ่งถ้าเราเลือกได้เหมาะสมกับการใช้งานแล้วจะช่วยให้ประหยัดค่าใช้จ่ายได้อีก
ทั้ง S3 Standard สำหรับข้อมูลทั่วไปที่มีการเข้าถึงบ่อย ๆ S3 Standard-Infrequent Access (S3 Standard-IA) สำหรับข้อมูลที่ไม่ค่อยมีการเข้าถึง
และอื่น ๆ อีกหลายประเภทยิบย่อย ลองอ่านแล้วเลือกใช้ตามความเหมาะสมนะครับ
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/s3/
Amazon Elastic File System (Amazon EFS) เป็นพื้นที่จัดเก็บไฟล์บนระบบ Cloud มีระบบ NFS ที่เราสามารถจัดการได้อย่างเต็มรูปแบบ
ออกแบบมาสำหรับใช้ร่วมกับ Cloud service หรือ Resource ต่าง ๆ เช่น Amazon EC2
โดยสามารถแชร์ไฟล์ระหว่าง EC2 instance ได้ พูดง่าย ๆ คือสามารถ mount ได้หลายเครื่องพร้อมกัน
ดังนั้นจึงเหมาะสำหรับกรณีที่มีการใช้งาน EC2 instance หลายเครื่องแต่มีไฟล์บางอย่างที่ต้องใช้ร่วมกัน หรือต้องการเช่า EFS เพียงอันเดียว
จุดเด่นของผลิตภัณฑ์นี้นอกจากความสะดวกที่กล่าวไปแล้วอีกอย่างก็คือเรื่องของราคาครับ เพราะคิดราคาตามที่ใช้งานจริงเลย ไม่ใช่ว่าเราต้องจองพื้นที่เหมือนเวลาซื้อ Harddisk
นอกจากนี้หากคิดข้อมูลในองค์กรทั้งหมดเป็น 100% โดยทั่วไปแทบทุกองค์กรนั้นจะมีข้อมูลเพียง 20% เท่านั้นที่ถูกใช้งานเป็นประจำ ส่วนอีก 80% มักจะไม่ค่อยถูกเรียกใช้นัก
ซึ่ง EFS ก็มีฟีเจอร์เพื่อช่วยให้เราสามารถประหยัดค่าใช้จ่ายได้อีกโดยการเอาข้อมูล 80% นี้ไปเก็บใน storage class ที่เรียกว่า
Amazon EFS Infrequent Access (EFS IA) ซึ่งจะคิดราคาถูกกว่า Amazon EFS Standard ทำให้ประหยัดค่าใช้จ่ายสูงสุดถึง 92% เลยทีเดียว (ขึ้นกับ Region และเงื่อนไขอื่น ๆ)
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/efs/
AWS Lambda เป็น Serverless compute service หรือก็คือบริการที่รันโค้ดหรือประมวลผลโดยไม่ต้องมี Server แต่จะรันเมื่อมี event ที่กำหนดไว้เข้ามา (trigger)
แล้วทำการคำนวณหรือจัดการ AWS resource ต่าง ๆ เช่น Amazon S3 bucket หรือ Amazon DynamoDB table ให้ตามโค้ดที่เราเขียนแบบอัตโนมัติ
โดย Amazon จะเรียกโค้ดที่เราเขียนนี้ว่า “Lambda function” ซึ่งรองรับภาษาเขียนโปรแกรมหลัก ๆ แทบทุกภาษา และรองรับการทำงานร่วมกับ 3rd party library
และ AWS SDK ด้วย นอกจากนี้ยังสามารถใช้ร่วมกับ Service อื่น เช่น API Gateway เพื่อสร้างเว็บไซต์แบบไร้ Server ได้อีกด้วย
โดยปกติการจะประมวลผลหรือแสดงผลต่าง ๆ ให้ผู้ใช้งาน เช่น ลดขนาดรูปที่ผู้ใช้งานอัปโหลดขึ้นมาเพื่อแสดงในหน้าเว็บ หรือจัดการข้อมูลที่เข้ามาก่อนส่งต่อให้ Machine Learning ฯลฯ
เราจำเป็นต้องตั้ง Server ขึ้นมาก่อน แล้วเขียนโค้ดเพื่อรองรับ event นั้น ๆ ซึ่งบางครั้งอาจจะมีปัญหาเรื่องสเปคของเครื่อง server หรือ workload
ดังนั้นการใช้ AWS Lambda จึงช่วยตัดปัญหาเรื่องนี้ไปได้เลยเพราะผู้ให้บริการจะเป็นผู้จัดการสิ่งที่อยู่เบื้องหลังเหล่านั้นให้เราทั้งหมด
โดยที่ค่าใช้จ่ายจะคิดตามจริงจากจำนวน request ที่เรียกฟังก์ชันที่เราเขียนและ duration ซึ่งเป็นระยะเวลาที่โค้ด execute เท่านั้น
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/lambda/
AWS Elastic Beanstalk เป็น Service ที่ช่วยให้เราสามารถ deploy web application ขึ้นไป โดยที่ไม่ต้องกังวลกับเรื่องการ setup server แบบ Amazon EC2
เพราะ Elastic Beanstalk จะช่วยสร้าง Server และจัดการเรื่องต่าง ๆ เช่น deployment, from capacity provisioning, load balancing,
auto-scaling to application health monitoring ให้เรา ในขณะที่เราสามารถเข้าถึง resource ที่ใช้ เช่น EC2 instance ได้อย่างเต็มที่
Elastic Beanstalk รองรับภาษาเขียนโปรแกรมหลัก ๆ แทบทุกภาษา และรองรับ Web Server หลัก ๆ เช่น Apache, Nginx, Passenger และ IIS
โดยคิดค่าใช้จ่ายเฉพาะ Resource ที่เราใช้ (ไม่มีค่าบริการอื่นเพิ่มเติม)
หลายคนอาจจะคิดว่าคล้าย ๆ AWS Lambda แต่จริง ๆ แล้วต่างกันค่อนข้างมากครับ โดยเฉพาะอย่างยิ่งคือ Elastic Beanstalk ไม่ใช่ Serverless
ดังนั้นจึงเหมาะกับการทำเว็บแอปพลิเคชันที่มีขนาดใหญ่มากกว่าโดยเฉพาะในแง่ของความปลอดภัย
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/elasticbeanstalk/
Amazon API Gateway เป็น Service ที่ช่วยให้เราสามารถสร้างและจัดการเรื่องต่าง ๆ เกี่ยวกับ HTTP APIs, REST APIs และ WEBSOCKET APIs ได้ง่ายขึ้น
APIs นี้เปรียบเหมือนประตูเพื่อเข้าถึงข้อมูลหรือฟังก์ชันต่าง ๆ ในฝั่ง backend ครับ ซึ่ง Amazon API Gateway นี้สามารถใช้งานร่วมกับ
AWS Lambda, Amazon EC2, Amazon Kinesis, Amazon DynamoDB ฯลฯ เช่น ใช้งานร่วมกับ AWS Lambda และ Amazon S3 เพื่อทำเว็บไซต์แบบ serverless ได้
โดย API Gateway จะคิดค่าใช้จ่ายจากจำนวน API Call ที่เราได้รับและปริมาณข้อมูลที่ถูกส่งออกเท่านั้น
ทั้งนี้ API Gateway จะช่วยจัดการ task ทั้งหมดที่เกี่ยวข้องกับรับและประมวลผล API Call ที่เกิดขึ้นพร้อม ๆ กัน (Amazon เคลมว่ารองรับถึงหลักแสนรายการ) รวมทั้ง
traffic management, CORS support, authorization and access control, throttling, monitoring และ API version management ด้วย
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/api-gateway/
Amazon DynamoDB เป็นฐานข้อมูลแบบ key-value (NoSQL) ที่สามารถเข้าถึงข้อมูลได้อย่างรวดเร็วในระดับหลักหน่วยของ millisecond
ไม่ว่าฐานข้อมูลจะมี scale ระดับใดก็ตาม จึงเหมาะกับแอปพลิเคชันแทบทุกอย่างทั้ง mobile, web, gaming, ad tech, IoT ฯลฯ
Amazon เคลมว่า DynamoDB นี้รองรับ request ถึง 10 ล้านล้าน request ต่อวัน และ 20 ล้าน request ต่อวินาทีเลยทีเดียว
จุดเด่นอีกข้อคือเป็น serverless ดังนั้นเราจึงไม่ต้องมาวุ่นวายจัดการกับ server หรือ software ต่าง ๆ
โดยตัว DynamoDB จะจัดการทุกอย่างให้แบบอัตโนมัติตามความเหมาะสมของขนาดข้อมูล
สามารถสำรองข้อมูลได้ถึง 100 terabytes ได้ทันทีโดยไม่กระทบการใช้งาน และ recover ไปยังช่วงเวลาใดก็ได้ใน 35 วันก่อนหน้า
นอกจากนี้ยังมีฟีเจอร์ DynamoDB Accelerator (DAX) สำหรับผู้ที่ต้องการความเร็วในระดับ microsecond ด้วย
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/dynamodb/
Amazon Lex เป็นบริการสำหรับสร้าง interface ในการสนทนาโต้ตอบโดยใช้เสียงหรือข้อความ ซึ่งจะช่วยให้เราสามารถสร้าง chatbot
ให้แอปพลิเคชันของเราได้อย่างรวดเร็ว โดยเบื้องหลังของ Amazon Lex นั้นใช้ Deep Learning เช่น
Automatic speech recognition (ASR) สำหรับเปลี่ยนเสียงให้เป็นข้อความ และ
Natural language understanding (NLU) สำหรับ recognize จุดประสงค์ของข้อความนั้น ๆ เพื่อให้สามารถโต้ตอบกับผู้ใช้งานได้อย่างถูกต้อง
ทั้งนี้ Amazon เคลมว่าเทคโนโลยี Deep Learning เบื้องหลังของ Amazon Lex นั้นใช้เทคโนโลยีเดียวกับ Amazon Alexa เลยทีเดียว
สำหรับค่าใช้จ่ายนั้นจะคิดตาม speech requests และ text requests โดยมีให้ใช้ฟรีปริมาณหนึ่งในแต่ละเดือนด้วย
จุดด้อยข้อเดียวคือ Amazon Lex ยังไม่ support ภาษาไทยครับ
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/lex/
Elastic Load Balancing เป็นตัวรับ incoming traffic แล้วจัดการกระจายไปยัง target ต่าง ๆ เช่น
Amazon EC2 instances, containers, IP addresses, Lambda functions และ virtual appliances Virtual Server
สำหรับในหัวข้อนี้นอกจากจะสอนและทดลองทำ Load Balancing แล้ว เราจะใช้
Amazon EC2 Auto Scaling ซึ่งเป็นส่วนหนึ่งของ AWS Auto Scaling มาร่วมด้วย
โดย Amazon EC2 Auto Scaling จะช่วย monitor แอปพลิเคชันของเราแล้วปรับจำนวน EC2 instance ให้เหมาะสมกับโหลดในขณะนั้น
เราสามารถสร้าง collection ของ EC2 instance ซึ่งจะเรียกว่า Auto Scaling groups แล้วกำหนดจำนวน instance ต่ำสุดและสูงสุดได้
ช่วยให้ค่าใช้จ่ายที่ต้องใช้ต่ำที่สุดในขณะที่ประสิทธิภาพเท่าเดิม
อ่านเพิ่มเติมได้ที่
https://aws.amazon.com/elasticloadbalancing และ
https://aws.amazon.com/ec2/autoscaling/