ทำไมผู้คนถึงใช้ Heroku เมื่อมี AWS Heroku แตกต่างจาก AWS อย่างไร [ปิด]


1101

ฉันเป็นโปรแกรมเมอร์ RoR มือใหม่ที่วางแผนจะติดตั้งแอพของฉันโดยใช้ Heroku คำพูดจากเพื่อนที่ปรึกษาคนอื่นของฉันบอกว่า Heroku นั้นง่ายและใช้งานได้ดีจริงๆ ปัญหาเดียวคือฉันยังไม่รู้ว่า Heroku ทำอะไร ...

ฉันได้ดูเว็บไซต์ของพวกเขาและสรุปว่า Heroku ทำอะไรได้บ้างในการปรับขนาด แต่ ... ทำไมถึงเป็นเช่นนั้น Heroku ช่วยด้วย:

  1. ความเร็ว - งานวิจัยของฉันบอกเป็นนัยว่าการปรับใช้ AWS บนชายฝั่งตะวันออกของสหรัฐอเมริกาจะเร็วที่สุดหากฉันกำหนดเป้าหมายไปยังผู้ชมที่อยู่ในสหรัฐอเมริกา / เอเชีย

  2. ความปลอดภัย - ปลอดภัยแค่ไหน?

  3. การปรับขนาด - ใช้งานได้จริงอย่างไร

  4. ประสิทธิภาพด้านต้นทุน - มีบางสิ่งที่เหมือนไดโนซึ่งทำให้ง่ายต่อการปรับขนาด

  5. พวกเขาแข่งขันกับคู่แข่งของพวกเขาอย่างไร? ตัวอย่างเช่นEngine Yardและbluebox ?

โปรดใช้คำศัพท์ภาษาอังกฤษทั่วไปเพื่ออธิบาย ... ฉันเป็นโปรแกรมเมอร์มือใหม่


267
ฉันใช้มันเพราะแผนฟรี;)
เค้กแต่งงาน

56
คุณควรถามถึงความแตกต่างระหว่าง Heroku และ AWS beanstalk แบบยืดหยุ่น .. มิฉะนั้นคุณจะได้รับคำตอบ "PaaS vs IaaS" ตามปกติไม่ใช่สิ่งที่คุณกำลังมองหา
Jus12

38
พัฒนาใน heroku ขยายสู่ heroku คิดค้นใน heroku ... จากนั้นเมื่อความคิดคือธุรกิจที่ได้รับความนิยมจากนั้นย้ายไปยัง aws ... เช่นเมื่อคุณกำลังจ้างงาน
มูฮัมหมัดอูเมอ

10
มันอาจเป็นเรื่องยากที่จะโยกย้ายเมื่อคุณใช้บริการไม่กี่แห่งและต้องโอนย้ายกำหนดค่าทดสอบทุกอย่าง ... มันจะมีค่าใช้จ่ายแน่นอน
เปาโล

37
หนึ่งในสิ่งที่ฉันชอบเกี่ยวกับ Heroku คือการปรับใช้อัตโนมัติจาก Github ดังนั้นฉันจึงสามารถมีproductionสาขาใน repo ของฉัน เมื่อใดก็ตามที่ความมุ่งมั่นใหม่ถูกผลักไปที่ repo, Heroku จะคว้ามันโดยอัตโนมัติสร้างและนำไปใช้ ฉันไม่ต้องกังวลเรื่องเซิร์ฟเวอร์เลย!
Razi Shaban

คำตอบ:


245

AWS / Herokuนั้นฟรีสำหรับโครงการงานอดิเรกเล็ก ๆ (เริ่มต้นด้วย)

หากคุณต้องการที่จะเริ่มต้นแอปได้ทันทีโดยไม่ต้องปรับแต่งมากของสถาปัตยกรรมแล้วเลือกHeroku

หากคุณต้องการที่จะมุ่งเน้นสถาปัตยกรรมและเพื่อให้สามารถใช้เว็บเซิร์ฟเวอร์ที่แตกต่างกันแล้วเลือกAWS AWS ใช้เวลามากขึ้นโดยพิจารณาจากบริการ / ผลิตภัณฑ์ที่คุณเลือก แต่คุ้มค่า AWS ยังมาพร้อมกับบริการปลั๊กอินและผลิตภัณฑ์มากมาย


Heroku

  • แพลตฟอร์มเป็นบริการ (PAAS)
  • เอกสารที่ดี
  • มีเครื่องมือและสถาปัตยกรรมในตัว
  • การควบคุมสถาปัตยกรรมในขณะที่ออกแบบแอพมี จำกัด
  • การปรับใช้ได้รับการดูแล (อัตโนมัติผ่าน GitHub หรือคู่มือผ่านคำสั่ง git หรือ CLI)
  • ไม่เสียเวลา

AWS

  • โครงสร้างพื้นฐานเป็นบริการ (IAAS)
  • สารพัดประโยชน์ - มีผลิตภัณฑ์มากมายเช่น EC2, LAMBDA, EMR ฯลฯ
  • สามารถใช้อินสแตนซ์ Dedicated เพื่อควบคุมสถาปัตยกรรมได้มากขึ้นเช่นการเลือกระบบปฏิบัติการเวอร์ชั่นซอฟต์แวร์ ฯลฯ มีแบ็กเอนด์เลเยอร์มากกว่าหนึ่งรายการ
  • Elastic Beanstalk เป็นคุณลักษณะที่คล้ายคลึงกับ PAAS ของ Heroku
  • สามารถใช้การปรับใช้อัตโนมัติหรือม้วนของคุณเอง

7
ElasticBeanstalk นั้นคุ้มค่ากว่า Heroku มากเพราะไม่มีมาร์คอัปสำหรับบริการนอกเหนือจากเซิร์ฟเวอร์ที่คุณใช้ นอกจากนี้คุณยังสามารถใช้ ElasticBeanstalk กับชั้นฟรี AWS aws.amazon.com/elasticbeanstalk/pricing
Zags

25
@Zags "ประหยัดต้นทุน" เป็นเรื่องของความคิดเห็น ถ้าฉันสามารถสร้างและปรับใช้แอพ Heroku ในเวลาน้อยกว่าหนึ่งนาทีและใช้เวลาหลายชั่วโมงในการตั้งค่า Beanstalk - นั่นไม่ใช่ค่าใช้จ่ายที่มีประสิทธิภาพเมื่อพิจารณาจากเวลานักพัฒนาซอฟต์แวร์หลายชั่วโมง มันขึ้นอยู่กับลำดับความสำคัญ - คุณสมบัติการจัดส่งมีความสำคัญมากกว่าหรือมีการตั้งค่าและบำรุงรักษาโครงสร้างพื้นฐานที่สำคัญกว่าหรือไม่?
ไบรอันเรียน

5
@BrianDear ความง่ายในการติดตั้งขึ้นอยู่กับความคุ้นเคยกับระบบต่าง ๆ แม้ว่า ElasticBeanstalk จะใช้เวลาในการตั้งค่านานกว่าความคุ้นเคยเท่ากัน แต่โดยทั่วไป AWS จะมีต้นทุนของ Heroku 60% (เปรียบเทียบ Heruku performance-m กับ AWS m4.x ใหญ่) ด้วยการเรียกเก็บเงินจากเซิร์ฟเวอร์ต่ำเพียง $ 100 / เดือนการประหยัด 40% จะกู้คืนต้นทุนของ "engineerng หลายชั่วโมง" ภายในหนึ่งปี ยิ่งเซิร์ฟเวอร์มีการเรียกเก็บเงินสูงเท่าใด
Zags

4
ใช้เวลาประมาณ 5 นาทีในการปรับใช้บน Beanstalk เลือกแพลตฟอร์ม -> อัพโหลด zip -> ชื่นชมยินดี ต้องการนำไปใช้โดยการกดไปที่ต้นแบบหรือไม่ ใช้เวลาอีก 5 นาทีในการตั้งค่า CodePipeline เวิร์กโฟลว์ทั้งสองนี้สามารถทำได้โดยใช้คอนโซล GUI หาก CLI กำลังข่มขู่คุณ
Anthony Manning-Franklin

1
น่าเสียดายที่เอกสารไม่ได้อยู่ภายใต้ AWS AWS มีเอกสารที่ดีที่สุดสำหรับเทคโนโลยี / แพลตฟอร์มใด ๆ ฉันใช้มันก่อนที่คำตอบนี้จะโพสต์ประมาณ 2013
lupchiazoem

2055

สิ่งแรกก่อน AWS และ Heroku เป็นสิ่งที่แตกต่าง AWS เสนอโครงสร้างพื้นฐานเป็นบริการ ( IaaS ) ในขณะที่ Heroku เสนอแพลตฟอร์มเป็นบริการ ( PaaS )

ความแตกต่างคืออะไร? โดยประมาณ IaaS ให้ส่วนประกอบที่คุณต้องการเพื่อสร้างสิ่งต่างๆ PaaS ให้สภาพแวดล้อมที่คุณเพียงแค่กดรหัสและการกำหนดค่าพื้นฐานและรับแอปพลิเคชันที่ทำงานอยู่ IaaS สามารถเพิ่มพลังและความยืดหยุ่นให้กับคุณได้มากขึ้นด้วยค่าใช้จ่ายในการสร้างและบำรุงรักษาตัวเองมากขึ้น

ในการทำให้โค้ดของคุณทำงานบน AWS และดูคล้ายกับการปรับใช้ Heroku คุณจะต้องการอินสแตนซ์ EC2 บางตัว - คุณต้องการให้โหลดบาลานเซอร์ / แคชเลเยอร์ติดตั้งอยู่ (เช่นวานิช ) คุณต้องการอินสแตนซ์ที่กำลังทำงานอยู่ผู้โดยสารและNginxที่จะให้บริการรหัสของคุณคุณจะต้องการที่จะปรับใช้และกำหนดค่าเช่นฐานข้อมูลคลัสเตอร์สิ่งที่ต้องการPostgreSQL คุณจะต้องการระบบการปรับใช้ที่มีบางอย่างเช่นCapistranoและบางสิ่งที่รวมการบันทึก

นั่นไม่ใช่จำนวนงานที่ไม่สำคัญในการตั้งค่าและบำรุงรักษา ด้วย Heroku, git pushความจำเป็นที่จะได้รับการจัดเรียงของขั้นตอนที่อาจจะไม่กี่บรรทัดของรหัสใบสมัครและ

ดังนั้นคุณมาไกลขนาดนี้และคุณต้องการที่จะขยาย ยิ่งใหญ่ คุณกำลังใช้Puppetสำหรับการปรับใช้ EC2 ใช่ไหม ดังนั้นตอนนี้คุณกำหนดค่าไฟล์ Capistrano ของคุณให้หมุนอินสแตนซ์ขึ้น / ลงตามต้องการ คุณจิ๊กตั้งค่า Puppet ของคุณอีกครั้งเพื่อให้ Varnish ทราบถึงอินสแตนซ์ของผู้ปฏิบัติงานเว็บและจะรวมกลุ่มระหว่างกันโดยอัตโนมัติ หรือคุณheroku scale web:+5หรือคุณ

หวังว่าจะช่วยให้คุณมีความคิดเปรียบเทียบระหว่างคนทั้งสอง ตอนนี้เพื่อกล่าวถึงประเด็นเฉพาะของคุณ:

ความเร็ว

ปัจจุบัน Heroku ทำงานบนอินสแตนซ์ของ AWS ในus-eastและeu-westและสำหรับคุณแล้วมันก็เหมือนกับสิ่งที่คุณต้องการอยู่ดี สำหรับคนอื่น ๆ อาจเป็นเรื่องที่ต้องพิจารณาอีกมาก

ความปลอดภัย

ฉันเคยเห็นเซิร์ฟเวอร์ที่ใช้งานจริงภายในที่ได้รับการดูแลรักษาเป็นจำนวนมากซึ่งเป็นวิธีที่ล้าหลังในการปรับปรุงความปลอดภัย เมื่อใช้ Heroku คุณจะมีคนอื่นจัดการสิ่งนั้นซึ่งเป็นพรหรือคำสาปขึ้นอยู่กับว่าคุณมองมันอย่างไร!

เมื่อคุณปรับใช้คุณจะส่งรหัสของคุณไปที่ Heroku ได้อย่างมีประสิทธิภาพ นี่อาจเป็นปัญหาสำหรับคุณ บทความของพวกเขาเกี่ยวกับDyno Isolation นั้นมีรายละเอียดเกี่ยวกับเทคโนโลยีการแยกของพวกเขา เพื่อนร่วมงานหลายคนแสดงปัญหาเกี่ยวกับเทคโนโลยีเหล่านี้และความแข็งแกร่งของความโดดเดี่ยว ฉันไม่ได้อยู่ในตำแหน่งที่มีความรู้ / ประสบการณ์เพียงพอที่จะแสดงความคิดเห็น แต่การใช้งาน Heroku ในปัจจุบันของฉันพิจารณาว่า "ดีพอ" มันอาจเป็นปัญหาสำหรับคุณฉันไม่รู้

ขูดหินปูน

ฉันได้สัมผัสว่าจะใช้งานสิ่งนี้ได้อย่างไรในการเปรียบเทียบ IaaS กับ PaaS แอปพลิเคชันของคุณมีประมาณProcfileซึ่งมีเส้นของแบบฟอร์มdyno_type: command_to_runดังนั้นตัวอย่าง (เขียนจากhttp://devcenter.heroku.com/articles/process-model ):

web:    bundle exec rails server
worker: bundle exec rake jobs:work

สิ่งนี้ด้วย:

heroku scale web:2 worker:10

จะส่งผลให้คุณมี 2 webdynos และ 10 workerdynos ทำงาน ดีง่ายง่าย โปรดทราบว่าwebเป็นไดโนประเภทพิเศษที่สามารถเข้าถึงโลกภายนอกและอยู่ด้านหลังมัลติเพล็กเซอร์ปริมาณการใช้งานเว็บที่ดี คนงานของคุณอาจโต้ตอบกับคิวข้อความสำหรับการกำหนดเส้นทางที่คล้ายกันซึ่งพวกเขาจะได้รับตำแหน่งผ่าน URL ในสภาพแวดล้อม

ประสิทธิภาพต้นทุน

ผู้คนจำนวนมากมีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับเรื่องนี้ ปัจจุบันเป็น $ 0.05 / ชม. สำหรับชั่วโมง Dyno เมื่อเทียบกับ $ 0.025 / ชม. สำหรับอินสแตนซ์ AWS ขนาดเล็กหรือ $ 0.09 / ชม. สำหรับอินสแตนซ์ขนาดเล็กของ AWS

Heroku ของเอกสารไดโนกล่าวว่าคุณมีเกี่ยวกับของ RAM 512MB ดังนั้นจึงอาจจะไม่มากเกินไปไม่มีเหตุผลที่จะต้องพิจารณาไดโนเป็นบิตเช่นอินสแตนซ์ไมโคร EC2 มันคุ้มค่าเป็นสองเท่าราคาหรือไม่ คุณเห็นคุณค่าของเวลาเท่าไหร่ จำนวนเวลาและความพยายามที่จำเป็นในการสร้างข้อเสนอ IaaS เพื่อให้ได้มาตรฐานนี้ไม่ถูกแน่นอน ฉันไม่สามารถตอบคำถามนี้ให้คุณได้ แต่อย่าประมาท "ค่าใช้จ่ายแอบแฝง" ของการตั้งค่าและการบำรุงรักษา

(แยกจากกันเล็กน้อย แต่ถ้าฉันเชื่อมต่อกับไดโนจากที่นี่ ( heroku run bash) รูปลักษณ์คร่าวๆจะแสดง 4 คอร์ใน/proc/cpuinfoและ RAM 36GB - นี่ทำให้ฉันเชื่อว่าฉันอยู่ใน"High-Memory Double Extra Instance ขนาดใหญ่" " . เอกสารของ Heroku dynoกล่าวว่าแต่ละ dyno ได้รับ RAM 512MB ดังนั้นฉันจึงอาจแบ่งปันกับ dynos อื่น ๆ ได้ถึง 71 (ฉันไม่มีข้อมูลเพียงพอเกี่ยวกับ homogeny ของอินสแตนซ์ AWS ของ Heroku ดังนั้นระยะเวลาของคุณอาจแตกต่างกัน))

พวกเขาแข่งขันกับคู่แข่งของพวกเขาอย่างไร?

นี่ฉันกลัวว่าฉันจะช่วยคุณไม่ได้จริงๆ คู่แข่งรายเดียวที่ฉันเคยดูจริงๆคือGoogle App Engine - ในขณะที่ฉันกำลังมองหาการปรับใช้แอปพลิเคชัน Java และข้อ จำกัด เกี่ยวกับกรอบและเทคโนโลยีที่ใช้งานได้นั้นไม่น่าเชื่อ นี่เป็นมากกว่า "สิ่ง Java" - จำนวนของข้อ จำกัด ทั่วไปและการพิจารณาที่จำเป็น ( คำแนะนำคำถามที่พบบ่อยที่) ดูเหมือนน้อยกว่าสะดวก ในทางตรงกันข้ามการปรับใช้กับ Heroku เป็นความฝัน

ข้อสรุป

ฉันหวังว่านี้จะตอบคำถามของคุณ (โปรดแสดงความคิดเห็นหากมีช่องว่าง / พื้นที่อื่น ๆ ที่คุณต้องการแก้ไข) ฉันรู้สึกว่าฉันควรเสนอตำแหน่งส่วนตัวของฉัน ฉันรัก Heroku สำหรับ "การปรับใช้ที่รวดเร็ว" เมื่อฉันเริ่มต้นแอพพลิเคชั่นและฉันต้องการโฮสติ้งราคาถูก (ชั้น Heroku ฟรียอดเยี่ยม - ถ้าคุณต้องการ dyno เว็บเดียวและ 5MB ของ PostgreSQL มันฟรีโฮสต์แอพพลิเคชั่น) Heroku เป็นตำแหน่งสู่ตำแหน่งของฉัน . สำหรับ "การปรับใช้การผลิตที่จริงจัง" กับลูกค้าที่ชำระเงินหลายรายพร้อมข้อตกลงระดับบริการพร้อมเวลาทุ่มเทในการใช้งานและอื่น ๆ ฉันไม่สามารถพาตัวเองออกจากการควบคุม Heroku ได้แล้วจาก AWS หรือ เซิร์ฟเวอร์ของเราเป็นแพลตฟอร์มโฮสติ้งที่เลือก

ในที่สุดมันเกี่ยวกับสิ่งที่ดีที่สุดสำหรับคุณ คุณบอกว่าคุณเป็น "โปรแกรมเมอร์มือใหม่" - อาจเป็นได้ว่าการใช้ Heroku จะช่วยให้คุณจดจ่อกับการเขียน Ruby และไม่ต้องเสียเวลาในการสร้างโครงสร้างพื้นฐานอื่น ๆ ทั้งหมดรอบโค้ดของคุณ ฉันจะลองทำดู


หมายเหตุ AWS มีข้อเสนอของ PaaS คือElastic Beanstalkซึ่งรองรับ Ruby, Node.js, PHP, Python, .NET และ Java ฉันคิดว่าคนส่วนใหญ่โดยทั่วไปเมื่อพวกเขาเห็น "AWS" ข้ามไปยังสิ่งต่าง ๆ เช่น EC2 และ S3 และ EBS ซึ่งเป็นข้อเสนอของ IaaS


33
โปรดทราบว่าตอนนี้ต้นถั่วยืดหยุ่นได้รองรับแอปทับทิมด้านหลังผู้โดยสาร
เขียนใหม่

4
ตอนนี้ Heroku ยังสนับสนุนเซิร์ฟเวอร์ในสหภาพยุโรปไม่เพียง แต่ในสหรัฐอเมริกาเท่านั้น
Thomas Welton

7
รับ AWS BeanStalk ไม่ใช่การอภิปรายทั้งหมดเกี่ยวกับวิธี Heroku เป็นโซลูชั่น PaaS ในขณะที่ AWS "เพียงแค่" IaaS ที่เสนอขายไม่ถูกต้องหรือไม่
Gmu

6
@KristianGlass คงจะดีมากถ้าเราได้รับคำตอบที่ปรับปรุงแล้วซึ่งดูที่ข้อเสนอ PaaS ทั้งสอง (Beanstalk และ Heroku) จริงๆ
Alex Chumbley

3
ดีใจที่มีประโยชน์กับผู้คน :) @Gmu ในขณะตอบรับ EB มีข้อ จำกัด เพียงพอที่สมมติว่า "AWS" หมายถึง "EC2" ดูเหมือนค่อนข้างสมเหตุสมผล แต่ตามที่ Alex แนะนำฉันจะดูคำตอบใหม่ตอนนี้ EB ได้ ปรับปรุงอย่างมีนัยสำคัญ
Kristian Glass

68

ดังที่ Kristian Glass กล่าวไม่มีการเปรียบเทียบระหว่าง IaaS ( AWS ) และ PaaS ( Heroku , EngineYard )

PaaS ช่วยให้นักพัฒนาสามารถพัฒนาแอพได้อย่างรวดเร็วช่วยประหยัดเงินและที่สำคัญที่สุดคือการสร้างสรรค์แอพพลิเคชั่นและธุรกิจของพวกเขาแทนที่จะตั้งค่าการกำหนดค่าและจัดการสิ่งต่าง ๆ เช่นเซิร์ฟเวอร์และฐานข้อมูล คุณสมบัติอื่น ๆ ที่ซื้อมาเพื่อใช้ PaaS เป็นกระบวนการปรับใช้แอปพลิเคชันเช่นความคล่องตัว, ความพร้อมใช้งานสูง, การตรวจสอบ, สเกล / Descale, ความต้องการที่ จำกัด ของความเชี่ยวชาญ, การปรับใช้ง่ายและลดต้นทุนและเวลาในการพัฒนา

แต่ยังคงมีด้านมืดสำหรับ PaaS ซึ่งเป็นอุปสรรคต่อการนำไปใช้ของ PaaS:

  • ควบคุมเซิร์ฟเวอร์และฐานข้อมูลน้อยลง
  • ค่าใช้จ่ายจะสูงมากหากไม่ได้ควบคุมอย่างถูกต้อง
  • ก่อนกำหนดและน่าสงสัยในวันและอายุปัจจุบัน

นอกเหนือจากข้างต้นคุณควรมีทักษะเพียงพอที่จะจัดการกับคุณ IaaS:

  • การซื้อฮาร์ดแวร์
  • ระบบปฏิบัติการ
  • ซอฟต์แวร์เซิร์ฟเวอร์
  • สภาพแวดล้อมการเขียนสคริปต์ฝั่งเซิร์ฟเวอร์
  • เว็บเซิร์ฟเวอร์
  • ระบบการจัดการฐานข้อมูล (Mysql, Redis ฯลฯ )
  • กำหนดค่าเซิร์ฟเวอร์ที่ใช้งานจริง
  • เครื่องมือสำหรับการทดสอบและการปรับใช้
  • แอพตรวจสอบ
  • ความพร้อมใช้งานสูง
  • โหลด Blancing / Http Routing
  • นโยบายการสำรองข้อมูลบริการ
  • การทำงานร่วมกันเป็นทีม
  • สร้างการผลิตใหม่

หากคุณมีธุรกิจขนาดเล็ก PaaS จะเป็นตัวเลือกที่ดีที่สุดสำหรับคุณ:

  • ชำระเงินตามที่คุณไป
  • ต้นทุนเริ่มต้นต่ำ
  • ปล่อยให้การประปาถึงผู้เชี่ยวชาญ
  • PaaS จัดการปรับ / ลดขนาดอัตโนมัติโหลดบาลานซ์กู้คืนระบบ
  • PaaS จัดการข้อกำหนดด้านความปลอดภัยทั้งหมด
  • PaaS จัดการความน่าเชื่อถือความพร้อมใช้งานสูง
  • Paas จัดการส่วนเสริมของบุคคลที่สามมากมายสำหรับคุณ

มันจะเป็นทางเลือกของแต่ละบุคคลโดยสิ้นเชิงตามความต้องการ คุณสามารถมีรายละเอียดเกี่ยวกับ PPT ของฉันHosting Rails ปพลิเคชัน


3
ฉันเห็น EngineYard และ Heroku และแน่นอน ElasticBeanstalk ... ทุกคนทำงานบน AWS ใต้ ในความเป็นจริงมี PaaS สำคัญ ๆ ที่ไม่ทำงานบน aws ใต้หรือไม่? ความคิดใด ๆ ไชโย
Fattie

5
โจฉันรู้ว่ามันสาย แต่เพื่อตอบคำถามของคุณ IBM Bluemix ทำงานบน SoftLayer
Antonio Cangiano

PaaS จัดการข้อกำหนดด้านความปลอดภัยทั้งหมดการรักษาความปลอดภัยเซิร์ฟเวอร์อาจ แต่ทำให้เข้าใจผิดสูง (โดยเฉพาะในโลกที่นักพัฒนาดูเหมือนจะถือว่าระบบของพวกเขาปลอดภัยตามค่าเริ่มต้น) แน่นอนว่าจะไม่ปกป้องคุณจาก XSS, CSRF และอาจไม่ได้ตั้งค่าส่วนหัว HTTP ที่สำคัญสำหรับคุณ Thank you for your concerns. We assure you that we take security very seriously and run or systems on secure servers. There is no need to worry about [insert security issue here] as all that is handled by...ฉันเพียงแค่สามารถมองเห็นได้ในขณะนี้: -1 แต่ฉันจะย้อนกลับถ้าแก้ไขอย่างถูกต้อง
Nateowami

4
มีหมวดหมู่ของโซลูชัน PaaS (DIY PaaS) มากขึ้นที่ทำงานบนโครงสร้างพื้นฐานของคุณเองดังนั้นจึงสามารถจัดการกับข้อกังวลบางอย่างเกี่ยวกับ PaaS flexbility / control ตัวอย่างบางส่วน: OpenShift , cloudfoundry , Hasura ข้อจำกัดความรับผิดชอบ: ฉันทำงานที่ Hasura
iamnat

35

ที่จริงแล้วคุณสามารถใช้ทั้งคู่ได้ - คุณสามารถพัฒนาแอพด้วยเซิร์ฟเวอร์ amazon ec2 จากนั้นดัน (พร้อมคอมไพล์) ไปที่ heroku ฟรีสักครู่ (ใช้เทียร์ heroku ฟรีเพื่อให้บริการแก่สาธารณะ) และทดสอบอย่างนั้น มันคุ้มค่ามากเมื่อเทียบกับการเช่าเซิร์ฟเวอร์ แต่คุณจะต้องพูดคุยกับ heroku api ที่เข้มงวดกว่าซึ่งเป็นสิ่งที่คุณควรคิดถึง ที่มา: วิธีการนี้ถูกนำมาใช้กับหนึ่งในชั้นเรียนออนไลน์ของฉัน "วิศวกรรมการเริ่มต้นจาก Coursera / Stanford โดย Balaji S. Srinivasan และ Vijay S. Pande

เพิ่มรูปแบบเพื่อให้คำอธิบายของฉันจะเข้าใจง่ายขึ้น


15
ประโยชน์ของการใช้อินสแตนซ์ขนาดเล็กเป็นเครื่องพัฒนาแทนที่จะใช้คอมพิวเตอร์ในพื้นที่ของคุณคืออะไร ฉันไม่เห็นประโยชน์เพิ่มเติมของการเพิ่ม AWS ในกรณีนี้ ขอบคุณ!
Mateo

5
อาจจะเป็นเพราะในการตั้งค่าทางวิชาการก็จะทำให้มันเพื่อให้คำแนะนำสำหรับการตั้งค่าสภาพแวดล้อม dev สอดคล้องกันมากขึ้นและพวกเขาจะได้ไม่ต้องกังวลเกี่ยวกับการทำมันทำงานบน Windows
เจฟฟ์ผ้ากันเปื้อน

2
สถาปัตยกรรมนั้นช่วยในการหลีกเลี่ยงความเข้ากันไม่ได้กับ Windows / Linux OS และเรียนรู้ระบบปฏิบัติการ Linux โดยไม่ต้องติดตั้งลงในเครื่องท้องถิ่นของคุณ หากคุณมี Mac มันเป็นปัญหาน้อย แต่หลายคนใช้ Windows
sivi

13
มันเรียกว่าเครื่องเสมือนฉันยังไม่เห็นจุดที่จะทำเช่นนี้
Abe Petrillo

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

34

มีหลายวิธีที่แตกต่างกันในการพิจารณาการตัดสินใจจากการพัฒนาไอทีและวัตถุประสงค์ทางธุรกิจดังนั้นอย่ารู้สึกแย่ถ้ามันดูล้นหลาม แต่ก็อย่าคิดมากเกินไป

คิดเกี่ยวกับความต้องการ

ฉันได้ออกแบบเว็บไซต์ที่ให้บริการมากกว่า 8 ล้านครั้งต่อวันและส่งวิดีโอเทราไบต์ต่อสัปดาห์ซึ่งสร้างจากโครงสร้างพื้นฐานเริ่มต้นที่ 250,000 เหรียญสหรัฐในด้านฮาร์ดแวร์ทุนโดยพนักงานด้านไอที $ MM ขนาดใหญ่

แต่ฉันยังมีเว็บไซต์ขนาดเล็กที่ออกแบบมาเพื่อสร้างรายได้ $ 10 - $ 20k ต่อปีไม่ได้มีปริมาณการใช้ข้อมูลฐานข้อมูลหรือการประมวลผลที่สูงมากและฉันจัดการเว็บไซต์เหล่านี้ด้วยบัญชีโฮสติ้งทั่วไปราคา $ 10 / mo

ในอนาคตการปรับใช้จะมีลักษณะเหมือน Heroku มากกว่า AWS เพียงเพราะความคืบหน้า ไม่มีค่าในการเปลี่ยนการปรับขนาดโครงสร้างพื้นฐานอินเทอร์เน็ตที่ไม่สามารถทำงานได้อัตโนมัติมากขึ้นและไม่มีสิ่งใดที่เกี่ยวข้องกับมูลค่าของผลิตภัณฑ์หรือบริการที่คุณนำเสนอ

นอกจากนี้โปรดทราบว่าเว็บไซต์เชิงพาณิชย์ - ความสามารถในการปรับขยายคือสิ่งที่เรามักเรียกว่าเป็น 'ปัญหาที่ดี' - แม้ว่าปัญหาด้านความสามารถในการขยายตัวของเว็บไซต์เช่น Facebook และ Twitter นั้นเป็นโปรไฟล์ที่ยอดเยี่ยมมาก อาจมีส่วนร่วมในการสมัครเพิ่มขึ้น (การกดทั้งหมดเป็นการกดที่ดี)

หากคุณมีบริการที่สร้างไม่ซ้ำกัน 100k + ต่อวันและมีปัญหาการปรับขนาดฉันยินดีที่จะนำมันออกจากมือของคุณสำหรับคุณไม่ว่าภาษาฐานข้อมูลแพลตฟอร์มหรือโครงสร้างพื้นฐานที่คุณกำลังทำงานอยู่!

การขยายขีดความสามารถเป็นปัญหาการใช้งานที่แก้ไขได้ - การไม่มีลูกค้าเป็นปัญหาที่มีอยู่


28

ผู้คนมักถามคำถามนี้: Heroku หรือ AWS เมื่อเริ่มปรับใช้บางอย่าง

การทดลองใช้ Heroku & AWS ของฉันทั้งสองนี่คือการตรวจสอบและเปรียบเทียบอย่างรวดเร็วของฉัน:

Heroku

  • คำสั่งเดียวในการปรับใช้ประเภทโครงการของคุณ: Ruby on Rails, Nodejs
  • 1 คลิกมากมายเพื่อรวมปลั๊กอินและบุคคลที่สาม: มันง่ายมากที่จะเริ่มต้นด้วยบางสิ่ง
  • ไม่มีการปรับสเกลอัตโนมัติ นั่นหมายความว่าคุณต้องปรับขนาดขึ้น / ลงด้วยตนเอง
  • ค่าใช้จ่ายแพงโดยเฉพาะเมื่อระบบต้องการทรัพยากรมากขึ้น
  • ตัวอย่างฟรี
  • อินสแตนซ์ฟรีเข้าสู่โหมดสลีปหากไม่ได้ใช้งาน
  • ศูนย์ข้อมูล: สหรัฐอเมริกาและสหภาพยุโรปเท่านั้น
  • สามารถดำดิ่งสู่ / เข้าถึงระดับเครื่องโดยใช้Heroku run bash(ขอขอบคุณ MJafar Mash สำหรับคำแนะนำ) แต่มันมีข้อ จำกัด ! คุณไม่มีสิทธิ์เข้าถึงแบบเต็ม!
  • ไม่จำเป็นต้องรู้มากเกินไปเกี่ยวกับ DevOps

AWS - EC2

  • เช่นเดียวกับเครื่องที่มีระบบปฏิบัติการล่วงหน้า (หรือไม่) ดังนั้นคุณต้องติดตั้งซอฟต์แวร์ไลบรารีเพื่อให้เว็บไซต์ / บริการของคุณออนไลน์
  • ปลั๊กอินและไลบรารีจะต้องรวมเข้าด้วยกันหรือสคริปต์อัตโนมัติ (สคริปต์สาธารณะ & เขียนโดยคุณ)
  • ปรับขนาดอัตโนมัติและโหลดบาลานเซอร์เป็นบริการที่รองรับเพียงแค่เรียนรู้วิธีกำหนดค่าและผสานรวมกับระบบของคุณ
  • ราคาค่อนข้างถูกขึ้นอยู่กับบริการและจำนวนชั่วโมงที่คุณใช้
  • มีชั่วโมงฟรีหลายกรณี T2.micro มี แต่ปกติที่คุณจะจ่ายไม่กี่ดอลลาร์ทุกเดือน (ถ้ายังคงใช้ T2.micro)
  • ตัวอย่างฟรีของคุณจะไม่เข้าสู่โหมดสลีตลอด 24 ชั่วโมง (เพราะคุณอาจจ่ายให้ :))
  • ศูนย์ข้อมูล: ทั่วโลก เลือกภูมิภาคที่เหมาะสมที่สุดสำหรับคุณ
  • ดำดิ่งสู่ระดับเครื่อง ดังนั้นคุณสามารถสนุกกับมัน
  • ความรู้บางอย่างเกี่ยวกับ DevOps แต่ก็โอเคแล้ว Stackoverflow มีประโยชน์!

AWS Elastic Beanstalkทางเลือกของ Heroku แต่ราคาถูกกว่า

  • Elastic Beanstalk ได้รับการประกาศให้เป็นเบต้าสาธารณะจากปี 2010 มันช่วยให้เราทำงานกับการปรับใช้ได้ง่ายขึ้น สำหรับรายละเอียดโปรดไปที่นี่

  • ฝักถั่วฟรีค่าใช้จ่ายที่คุณจะจ่ายสำหรับบริการที่คุณใช้และจำนวนชั่วโมงการใช้งาน

  • ฉันใช้ Elastic Beanstalk เป็นเวลานานและฉันคิดว่ามันสามารถทดแทน Heroku และราคาถูกกว่า!

สรุป

  • Heroku: ง่ายในตอนเริ่มต้นตัวอย่างฟรีแต่มีราคาแพงในภายหลัง
  • AWS: ไม่ใช่เรื่องง่ายมีชั่วโมงให้บริการฟรีราคาถูกกว่า Beanstalk ควรใช้งาน

ดังนั้นในระบบปัจจุบันของฉันฉันใช้ Heroku สำหรับการแสดงละครและ Beanstalk สำหรับการผลิต!


3
ฉันชอบวิธีที่คุณตอบคำถาม ฉันลอง Heroku และ AWS แล้ว ฉันเห็นด้วยกับคุณที่จะแนะนำ:Use Heroku for staging, and Beanstalk for production!
Chetabahana

1
heroku run bashและคุณสามารถเข้าถึงไดโนเชนของคุณได้
Mohammad Jafar Mashhadi

คุณสามารถประมาณราคาได้ไหม ฉันจะต้องเผยแพร่ Java Web App บน Tomcat (Spring Framework, angularJS และอื่น ๆ ) มาลองคิดกันว่ามีผู้ใช้ประมาณ 1,000 คนต่อเดือนโดยใช้แอพเป็นเวลา 5 นาที ราคาโดยประมาณคืออะไร? (ชอบการใช้งานที่ต่ำมาก แต่มีให้บริการตลอดทั้งเดือน)
มีดโกน

1
@razor หากคุณใช้อินสแตนซ์ t2 micro (ดีสำหรับการเตรียมงานก่อนหรือโครงการขนาดเล็ก) ซึ่งราคาถูกมากมันเป็นประมาณ 5 $ ถึง 10 $ ต่อเดือนเป็นหน่วยความจำของฉันในโครงการก่อนหน้านี้ รายละเอียดได้ที่นี่aws.amazon.com/ec2/pricing
Hieu Pham

และ Heroku จะแพงกว่านี้ไหม? (ครั้งที่ 2?) กับการใช้งาน simiar? ฉันรู้ว่าหน้าการกำหนดราคา แต่ก็ยากที่จะคำนวณ / คิดว่าพลังงาน CPU มากเช่น app ง่ายจะใช้หรือสิ่งที่จะเป็นการใช้งานฐานข้อมูลหลังจากเดือน (DB จะค่อนข้างเล็ก ๆ ของ cource)
มีดโกน

27

คำตอบที่มีอยู่มีความถูกต้องในวงกว้าง:

  • Heroku นั้นใช้งานและปรับใช้ง่ายมากสามารถกำหนดค่าได้ง่ายสำหรับที่เก็บข้อมูลการปรับใช้อัตโนมัติ (เช่น GitHub) มีส่วนเสริมของบุคคลที่สามจำนวนมากและมีค่าใช้จ่ายเพิ่มเติมต่ออินสแตนซ์

  • AWS มีช่วงกว้างของราคาที่สามารถแข่งขันบริการของบุคคลที่เป็นครั้งแรกรวมถึง DNS สมดุลภาระการจัดเก็บไฟล์ที่ถูกและมีคุณสมบัติขององค์กรเช่นความสามารถในการกำหนดนโยบายด้านความปลอดภัย

สำหรับtl; drข้ามไปยังจุดสิ้นสุดของโพสต์นี้

AWS ElasticBeanstalk เป็นความพยายามในการจัดหาแพลตฟอร์มการปรับขนาดอัตโนมัติเหมือน Heroku และใช้งานง่าย เนื่องจากมันใช้อินสแตนซ์ EC2 (ซึ่งสร้างขึ้นโดยอัตโนมัติ) เซิร์ฟเวอร์ EB สามารถทำทุกอย่างที่อินสแตนซ์ EC2 อื่น ๆ สามารถทำได้และมีราคาถูกใช้งานได้

การปรับใช้กับ EB ช้ามาก การปรับใช้การอัปเดตอาจใช้เวลา 10-15 นาทีต่อเซิร์ฟเวอร์และการปรับใช้กับคลัสเตอร์ที่ใหญ่กว่าสามารถใช้เวลาส่วนที่ดีที่สุดของชั่วโมง - เปรียบเทียบกับเพียงไม่กี่วินาทีในการปรับใช้การอัปเดตบน Heroku การปรับใช้กับ EB ไม่ได้รับการจัดการอย่างราบรื่นเช่นกันซึ่งอาจทำให้มีข้อ จำกัด ในการออกแบบแอปพลิเคชัน

คุณสามารถใช้บริการทั้งหมด ElasticBeanstalk ใช้เบื้องหลังเพื่อสร้างระบบ bespoke ของคุณเอง (ด้วย CodeDeploy, Elastic Load Balancer, กลุ่มปรับขนาดอัตโนมัติ - และ CodeCommit, CodeBuild และ CodePipeline หากคุณต้องการใช้งานทุกอย่าง) สองสามสัปดาห์ในการตั้งค่าเป็นครั้งแรกเนื่องจากค่อนข้างซับซ้อนและหลอกลวงเล็กน้อยกว่าเพียงแค่กำหนดค่าสิ่งต่าง ๆ ใน EC2

AWS Lightsail เสนอตัวเลือกการโฮสต์ที่มีราคาที่แข่งขันได้ แต่ไม่ได้ช่วยในการปรับใช้หรือปรับขนาด - มันเป็นเพียงตัวห่อสำหรับข้อเสนอ EC2 ของพวกเขา (แต่มีค่าใช้จ่ายมากขึ้น) มันช่วยให้คุณสามารถรันสคริปต์ bash โดยอัตโนมัติในการตั้งค่าเริ่มต้นซึ่งเป็นสิ่งที่ดี แต่ก็มีราคาแพงเมื่อเทียบกับค่าใช้จ่ายในการตั้งค่าอินสแตนซ์ EC2 (ซึ่งคุณสามารถทำได้โดยทางโปรแกรม)

ความคิดบางอย่างเกี่ยวกับการเปรียบเทียบ (เพื่อลองและตอบคำถามแม้จะอยู่ในวงเวียน):

  1. อย่าดูถูกดูแคลนว่าการดูแลระบบทำงานมากเพียงใดรวมถึงการรักษาทุกสิ่งที่คุณติดตั้งไว้ด้วยซอฟต์แวร์รักษาความปลอดภัย (และอัปเดตระบบปฏิบัติการเป็นครั้งคราว)

  2. อย่าดูถูกดูแคลนว่าการปรับใช้แบบอัตโนมัติเป็นประโยชน์มากปรับขนาดอัตโนมัติและการจัดสรรและกำหนดค่า SSL เป็นอย่างไร

    การปรับใช้อัตโนมัติเมื่อคุณอัปเดตที่เก็บ Git ของคุณนั้นง่ายดายด้วย Heroku ใกล้ถึงเวลาทันทีและมีความสง่างามดังนั้นจึงไม่มีการหยุดทำงานสำหรับผู้ใช้และสามารถตั้งค่าให้อัปเดตเฉพาะเมื่อการทดสอบ / การรวมต่อเนื่องผ่านเพื่อให้คุณไม่ทำลายไซต์ของคุณหากคุณปรับใช้รหัสที่ใช้งานไม่ได้

    คุณยังสามารถใช้ ElasticBeanstalk สำหรับการปรับใช้อัตโนมัติได้ แต่ต้องเตรียมพร้อมที่จะใช้การตั้งค่าสัปดาห์ที่ครั้งแรก - คุณอาจต้องเปลี่ยนวิธีการปรับใช้และสร้างสินทรัพย์ (เช่น CSS และ JS) เพื่อทำงานกับวิธีที่ ElasticBeanstalk จัดการการปรับใช้หรือสร้างตรรกะ ลงในแอปของคุณเพื่อจัดการการปรับใช้

    โปรดระวังในการประเมินค่าใช้จ่ายสำหรับการติดตั้งที่ราบรื่นโดยไม่มีการหยุดทำงานของ EB คุณจำเป็นต้องเรียกใช้หลาย ๆ ครั้ง - EB เปิดตัวการอัปเดตไปยังเซิร์ฟเวอร์แต่ละเครื่องเพื่อให้บริการของคุณไม่เสื่อมโทรม - ในกรณีที่ Heroku หมุน Dyno ใหม่สำหรับคุณ บริการเก่าจนกว่าการร้องขอทั้งหมดจะถูกจัดการ (จากนั้นจะลบ)

    น่าสนใจต้นทุนการโฮสต์ที่ใช้เซิร์ฟเวอร์หลายเครื่องด้วย EB นั้นราคาถูกกว่าอินสแตนซ์ Heroku เพียงหนึ่งเดียวโดยเฉพาะอย่างยิ่งเมื่อคุณรวมค่าใช้จ่ายของแอดออน

ปัญหาอื่น ๆ ที่ไม่ได้ถามเฉพาะเจาะจง แต่ได้รับคำตอบอื่น:

  1. การใช้ผู้ให้บริการที่แตกต่างกันสำหรับการผลิตและการพัฒนาเป็นความคิดที่ไม่ดี

    ฉันกำลังประจบประแจงว่าผู้คนกำลังแนะนำสิ่งนี้ ในขณะที่โค้ดควรจะทำงานได้ดีบนแพลตฟอร์มที่เหมาะสมดังนั้นจึงพกพาได้มากที่สุดเวอร์ชั่นของซอฟต์แวร์ในแต่ละโฮสต์จะแตกต่างกันอย่างมากและเนื่องจากโค้ดที่ทำงานในการจัดเตรียมไม่ได้หมายความว่ามันจะทำงานในการผลิต (เช่น Node.js / รุ่น Ruby / Python / PHP / Perl อาจแตกต่างกันไปในทางที่ทำให้โค้ดไม่เข้ากันบ่อยครั้งในวิธีเงียบ ๆ ที่อาจไม่ถูกจับแม้ว่าคุณจะมีการครอบคลุมการทดสอบที่ดีก็ตาม)

    ความคิดที่ดีคือการใช้ประโยชน์จากบางอย่างเช่น Heroku สำหรับการสร้างต้นแบบโครงการขนาดเล็กและไมโครไซต์เพื่อให้คุณสามารถสร้างและปรับใช้สิ่งต่าง ๆ ได้อย่างรวดเร็วโดยไม่ต้องเสียเวลาในการกำหนดค่าและบำรุงรักษามากนัก

    ตรวจสอบให้แน่ใจว่าได้คำนึงถึงต้นทุนในการใช้งานอินสแตนซ์การผลิตและการผลิตล่วงหน้าเมื่อทำการตัดสินใจนั้นอย่าลืมค่าใช้จ่ายในการจำลองสภาพแวดล้อมทั้งหมด (รวมถึงบริการของบุคคลที่สามเช่นร้านค้า / ส่วนเสริมติดตั้งและกำหนดค่า SSL ฯลฯ ) .

  2. หากใช้ AWS ให้ระวังอินสแตนซ์ที่กำหนดค่าล่วงหน้าของ AWS จากผู้จำหน่ายเช่น Bitnami ซึ่งเป็นฝันร้ายด้านความปลอดภัย พวกเขาสามารถเปิดเผยแอปพลิเคชั่นที่มีช่องโหว่จำนวนมากโดยค่าเริ่มต้นโดยไม่กล่าวถึงในคำอธิบาย

    พิจารณาเพียงแค่ใช้การกระจายหลักที่ได้รับการสนับสนุนเป็นอย่างดีเช่น Ubuntu หรือ Debian (หรือ CentOS หากคุณต้องการการสนับสนุน RPM)

    หมายเหตุ: ข้อเสนอของ Amazon มีการแจกจ่ายของตนเองที่เรียกว่า Amazon Linux ซึ่งใช้ RPM แต่เป็น EC2 ที่เฉพาะเจาะจงและได้รับการสนับสนุนน้อยกว่าโดยซอฟต์แวร์ของ บริษัท อื่น / โอเพนซอร์ส

  3. คุณสามารถตั้งค่าอินสแตนซ์ EC2 บน AWS (หรือ Lightsail) และกำหนดค่าด้วยบางอย่างเช่นflynnหรือdokkuในนั้น - ซึ่งคุณสามารถปรับใช้หลายไซต์ได้อย่างง่ายดายซึ่งสามารถคุ้มค่าถ้าคุณรักษาบริการจำนวนมากหรือต้องการ สามารถหมุนสิ่งใหม่ ๆ ได้อย่างง่ายดาย อย่างไรก็ตามการติดตั้งไม่ได้เป็นเรื่องง่ายเหมือนการใช้ Heroku และคุณสามารถใช้เวลามากในการตั้งค่าและบำรุงรักษา (จนถึงจุดที่ฉันพบว่าการปรับใช้โดยใช้ Amazon clustering และ Docker Swarm จะง่ายกว่าการตั้งค่า YMMV)

ฉันใช้อินสแตนซ์ของ AWS EC (อยู่คนเดียวและเป็นกลุ่ม) Elastic Beanstalk และ Lightsail และ Heroku ในเวลาเดียวกันขึ้นอยู่กับความต้องการของโครงการที่ฉันกำลังทำอยู่

ฉันเกลียดการใช้เวลาในการกำหนดค่าบริการ แต่ค่าบริการ Heroku ของฉันจะเป็นพันต่อปีหากฉันใช้ทุกอย่างและ AWS คิดค่าใช้จ่ายเพียงเล็กน้อย

TL; DR

ถ้าเงินไม่เคยเป็นปัญหาฉันต้องการใช้ Heroku เกือบทุกอย่างตามที่มันเป็น timesaver ใหญ่ - การ แต่ฉันยังคงต้องการที่จะใช้ AWS สำหรับโครงการที่มีความซับซ้อนมากขึ้นที่ฉันต้องมีความยืดหยุ่นและการบริการที่สูงขึ้นที่ Heroku ไม่ได้นำเสนอ

สถานการณ์ที่เหมาะสำหรับฉันคือถ้า ElasticBeanstalk ทำงานได้เหมือน Heroku - เช่นมีการกำหนดค่าที่ง่ายขึ้นและเร็วขึ้นและกลไกการปรับใช้ที่ดีขึ้น

ตัวอย่างของการบริการที่เป็นเกือบนี้เป็นnow.shซึ่งจริงๆแล้วใช้ AWS อยู่เบื้องหลัง แต่ทำให้การปรับใช้และการจัดกลุ่มเป็นเรื่องง่ายราวกับอยู่ใน Heroku (ด้วย SSL อัตโนมัติ, DNS, การปรับใช้ที่สง่างามการตั้งค่าคลัสเตอร์ที่ง่ายสุด ๆ และ การจัดการ)

ฉันใช้มันค่อนข้างมากสำหรับทั้งแอป Node.js และการปรับใช้อิมเมจของ Docker ข้อแม้หลักคืออินสแตนซ์ที่ใช้ร่วมกัน (บางสิ่งสะท้อนให้เห็นในราคาที่ต่ำกว่า) และปัจจุบันไม่มีตัวเลือกในการซื้ออินสแตนซ์เฉพาะ อย่างไรก็ตามเครื่องมือการปรับใช้โอเพ่นซอร์สของพวกเขา 'ตอนนี้' ยังสามารถใช้เพื่อปรับใช้กับอินสแตนซ์เฉพาะบน AWS เช่นเดียวกับ Google Cloud และ Azure


8

นี่เป็นเปอร์เซ็นต์ที่สำคัญของธุรกิจของเราในการย้ายผู้คนจาก Heroku ไปยัง AWS มีข้อได้เปรียบทั้งสองอย่าง แต่มันก็ยุ่งเหยิงกับ Heroku หลังจากผ่านไปครู่หนึ่ง ... เมื่อคุณต้องการความซับซ้อนในระดับหนึ่งแล้วไม่สามารถรักษาได้ง่ายด้วยข้อ จำกัด ของ Heroku

ที่กล่าวว่ามีตัวเลือกมากขึ้นเพื่อให้ง่ายต่อ Heroku และความยืดหยุ่นของ AWS โดยการใช้ AWS ด้วยกรอบ / เครื่องมือที่ยอดเยี่ยม


คุณสามารถประมาณราคาได้ไหม ฉันจะต้องเผยแพร่ Java Web App บน Tomcat (Spring Framework, angularJS และอื่น ๆ ) มาลองคิดกันว่ามีผู้ใช้ประมาณ 1,000 คนต่อเดือนโดยใช้แอพเป็นเวลา 5 นาที ราคาโดยประมาณคืออะไร? (เช่นการใช้งานต่ำมาก แต่ความพร้อมเต็มเดือน)
มีดโกน

3

สิ่งที่ตลกคือ Heroku จริงใช้ AWS แบ็กเอนด์ มันใช้เวลาทั้งหมดค่าใช้จ่ายและจัดการสถาปัตยกรรมบน EC2 สำหรับคุณ (ได้รับความรู้จากวิศวกรอาวุโสที่ บริษัท ใหญ่ระหว่างการสัมภาษณ์)


1

ดี! ฉันสังเกตการณ์ Heroku มีชื่อเสียงในด้านการพัฒนาและนักพัฒนาที่เพิ่งเกิดขึ้นใหม่ในขณะที่ AWS มีบุคลิกของนักพัฒนาขั้นสูง DigitalOcean ยังเป็นผู้เล่นหลักในพื้นที่นี้ Cloudways ทำให้การสร้าง Lamp stack ง่ายมากในการคลิกบน DigitalOcean และ AWS การมีบริการและการอัพเดทแพ็คเกจทั้งหมดในคลิกเดียวดีกว่าทำทุกอย่างด้วยตนเอง

คุณสามารถตรวจสอบได้อย่างสมบูรณ์ที่นี่: https://www.cloudways.com/blog/host-php-on-aws-cloud/


1

Heroku ใช้ AWS เป็นพื้นหลังทุกอย่างขึ้นอยู่กับประเภทของโซลูชันที่คุณต้องการ หากคุณเป็นแกนลินุกซ์และคนที่คลั่งไคล้คุณไม่กังวลเกี่ยวกับการสร้าง vm ตั้งแต่เริ่มต้นเช่นการเลือก ami การเลือกตัวเลือก palcement ฯลฯ คุณสามารถไปกับ AWS หากคุณต้องการทำสิ่งต่าง ๆ ในระดับพื้นผิวโดยไม่ต้องมีความเหินห่างคุณสามารถไปกับ heroku


0

Amazon Web Services (AWS) ให้บริการมากมายจาก IaaS ถึง PaaS ด้วยความมั่นใจ 99.9999999% ความทนทานและความพร้อมใช้งานของข้อมูลและโครงสร้างพื้นฐาน AWS นำเสนอระบบอัตโนมัติโครงสร้างพื้นฐานพร้อมกับเครื่องมือต่าง ๆ สำหรับนักพัฒนาในการวางแนวกระบวนการปรับใช้แอปพลิเคชันของตน

ในอีกทางหนึ่ง Heroku เป็นเพียง PaaS ที่ให้บริการจัดการแพลตฟอร์มของคุณบนคลาวด์ ไม่มีที่ใดใน AWS ไม่ว่าจะเป็นโครงสร้างพื้นฐานหรือความปลอดภัย


6
การอ้างอิงที่จำเป็นสำหรับ "ไม่มีที่ใดที่ยืนอยู่กับ AWS ไม่ว่าจะเป็นโครงสร้างพื้นฐานหรือความปลอดภัย"
pdoherty926

0

บางครั้งฉันสงสัยว่าทำไมผู้คนถึงเปรียบเทียบ AWS กับ Heroku AWS เป็น IAAS (โครงสร้างพื้นฐานในฐานะบริการ) ชัดเจนว่าระบบมีความแข็งแกร่งและสามารถคำนวณได้อย่างไร ในทางกลับกัน Heroku เป็นเพียง SAAS โดยทั่วไปเป็นเพียงส่วนหนึ่งของบริการ AWS เหตุใดจึงต้องต่อสู้กับการตั้งค่า AWS เมื่อคุณสามารถจัดส่งผลิตภัณฑ์แรกของคุณไปยังผู้ใช้งาน Heroku ได้

Heroku นั้นฟรีใช้งานง่ายและติดตั้งได้ง่ายเกือบทุกประเภทของเว็บ Heroku ได้รับการสร้างขึ้นโดยเฉพาะเพื่อหลีกเลี่ยงความยุ่งยากทั้งหมดในการจัดส่งแอปพลิเคชันของคุณไปยังเซิร์ฟเวอร์ที่ใช้งานจริงในเวลาไม่นาน

อย่างไรก็ตามคุณอาจต้องการปรับใช้แอปพลิเคชันของคุณโดยใช้บทช่วยสอนจากทั้งสองฝ่ายและเปรียบเทียบ

AWS DOCSและHeroku Docs


0

แม้ว่าทั้ง AWS และ Heroku จะเป็นแพลตฟอร์มคลาวด์ แต่ก็แตกต่างกันเนื่องจาก AWS คือ IaaS และ Heroku เป็น PaaS


2
นั่นไม่ถูกต้อง AWS มีทั้งข้อเสนอ IAAS และ PAAS
Glenn Bech

0

Heroku เป็นเหมือนชุดย่อยของ AWS มันเป็นเพียงแพลตฟอร์มในการให้บริการในขณะที่ AWS สามารถใช้งานได้ในทุกระดับและทุกระดับ

การใช้งานขึ้นอยู่กับความต้องการทางธุรกิจ หากใช้ได้ทั้งคู่ให้ใช้ตามความเหมาะสม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.