ฉันยังใหม่กับสถาปัตยกรรมคลาวด์ แต่มีประสบการณ์การพัฒนาแอปพลิเคชันที่ดี ตอนนี้ ฉันกำลังอยู่ในขั้นตอนการสร้างไปป์ไลน์การประมวลผลขนาดใหญ่ที่เข้าถึงได้มากขึ้นสำหรับผู้ใช้ 5-10 คนผ่านเว็บแอปพลิเคชัน และกำลังตั้งค่าทั้งหมดนี้ใน AWS
การใช้งานปัจจุบันของฉันคือเว็บแอป React ที่มีน้ำหนักเบาซึ่งใช้ API สองตัวและแบ็กเอนด์ MySQL ที่ช่วยให้ผู้ใช้สามารถจัดคิวงานด้วยพารามิเตอร์และเข้าถึงผลลัพธ์สุดท้ายผ่านเว็บแอปหรือจากอีเมลที่ส่งถึงผู้ใช้หลังจากการรันเสร็จสิ้น
ในช่วงกลางของไปป์ไลน์นี้ต้องอาศัยชิ้นส่วนซอฟต์แวร์ที่เป็นกรรมสิทธิ์ซึ่งต้องการเครื่องจักรที่แข็งแรงมากในการคำนวณขั้นตอนเหล่านี้ (แรม 64GB, 16 คอร์, 1TB HDD) และสามารถทำงานได้สูงสุด 1.5 วันสำหรับขั้นตอนเดียวนี้ นี่คือคอขวดที่ใหญ่ที่สุดของฉันในท่อทั้งหมด
เพื่อประหยัดค่าใช้จ่ายให้ได้มากที่สุด ฉันกำลังพยายามทำให้คอขวด/ชิ้นส่วนบริการปรับขนาดได้/คุ้มค่าโดยการเปิดใช้ "ตัวแทน" อินสแตนซ์ EC2 หลายตัว ดำเนินการตามขั้นตอน ส่งอีเมล เขียนเว็บ ฐานข้อมูลแอป แล้วหยุดอินสแตนซ์ผ่านฟังก์ชันแลมบ์ดาของ AWS ที่จะทริกเกอร์โดยการดำเนินการจากเว็บแอป
ฉันวางแผนที่จะโฮสต์อินสแตนซ์ EC2 หนึ่งรายการสำหรับเว็บแอป, 2 API และเปิดเซิร์ฟเวอร์ MySQL เนื่องจากการทำงานพร้อมกัน/ความสามารถในการปรับขนาดในส่วนนี้มีน้อยมาก ฉันจะมีอินสแตนซ์อีก 1-3 รายการสำหรับบริการคอขวดเพื่อแชร์การรันพร้อมกันจากผู้ใช้ 5-10 คน ซึ่งอนุญาตให้รันสเต็ปหนักได้สูงสุด 3 สเต็ปในเวลาเดียวกัน
เนื่องจากบริการคอขวดต้องการไฟล์ที่คล้ายคลึงกันเพื่อเรียกใช้โปรแกรม และอินพุตของขั้นตอนเหล่านี้อาจมีขนาดไฟล์ 150GB ในบางครั้ง ฉันจึงคิดที่จะใช้ที่เก็บข้อมูล EFS หรือ S3 เพื่อเก็บอินพุต ดังนั้นฉันจึงต้องกังวลเกี่ยวกับการถ่ายโอนอินพุตเท่านั้น ไฟล์ไปยังที่เดียวที่สามารถแชร์ข้ามอินสแตนซ์ EC2 และฉันไม่จำเป็นต้องตรวจสอบให้แน่ใจว่าได้เริ่มทำขั้นตอนการโอนย้ายแล้ว นี่เป็นคู่มือชิ้นเดียวที่ฉันยังไม่ได้คิดวิธีที่ดีที่จะทำให้เป็นอัตโนมัติมากขึ้นเนื่องจากขนาดไฟล์มีขนาดใหญ่มาก
คำถามของฉันคือการตั้งค่าของฉันฟังดูสมเหตุสมผลหรือไม่ และคุณเห็นช่องโหว่ในแนวคิดการใช้งานของฉันหรือไม่ ขณะนี้ฉันใช้พื้นที่จัดเก็บ EBS สำหรับอินสแตนซ์บริการ แต่ฉันต้องการลดตำแหน่งอินพุตสำหรับการถ่ายโอน/การบำรุงรักษา 150GB ฉันยังไม่แน่ใจถึงความแตกต่างระหว่าง S3 และ EFS เนื่องจากทั้งคู่ดูเหมือนจะติดตั้งได้หลายอินสแตนซ์ แต่ฉันควรใช้ตัวใด และเหมาะสมหรือไม่ที่จะเก็บเว็บแอป, API และฐานข้อมูลไว้ใน EC2 Instance เดียว หากฉันต้องการบริการที่สามารถเขียนไปยังฐานข้อมูลได้หลังจากทำเสร็จแล้ว ตัวอย่างนั้นจะเปิดตลอดเวลา
ขอบคุณสำหรับความช่วยเหลือของคุณและยกโทษให้ฉันหากฉันพูดอะไรที่ไร้เดียงสา