Windows Azure เทียบกับ Amazon EC2 กับ Google App Engine


159

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


2
ฉันได้เปรียบเทียบสิ่งเดียวกันเมื่อเร็ว ๆ นี้ - โพสต์ข้อดี / ข้อเสียของฉันในบล็อกของฉัน Azure ออกมา (ขึ้นอยู่กับต้นทุนของโครงการขนาดเล็ก) แต่ EC2 และ Google App Engine นั้นเป็นคู่แข่งที่แข็งแกร่ง! blog.dantup.com/2010/10/…
Danny Tuppeny

2
คำถามนี้ควรเป็นวิกิชุมชน

rackspace ftw!
เกร็ก

คำตอบ:


227

ฉันเขียนแอปเดียวกันบน GAE (Python และตอนนี้ Java) และ Azure ฉันอาจใช้ทั้งสองอย่างต่อไปเพื่อสิ่งต่าง ๆ นี่คือความคิดบางอย่างที่ฉันจะอัปเดตต่อไป:

เหตุผลในการใช้ GAE:

  • คุณจะได้รับมูลค่าการใช้ VM ฟรีหนึ่งครั้งต่อวัน ด้วย Azure คุณจะจ่ายเงินเกือบ $ 100 ต่อเดือนแม้ว่าคุณจะไม่มีผู้เข้าชมเว็บไซต์เดียวก็ตาม หากฐานข้อมูลของคุณมีขนาดเกิน 1GB คุณจะต้องจ่ายเพิ่ม $ 90 ($ 9 -> $ 99) สำหรับพื้นที่จัดเก็บ อัปเดต: ขณะนี้ Azure มีขนาด VM และ DB ที่แตกต่างกันตามจุดราคา รายละเอียดที่นี่
  • การชำระเงินของ GAE นั้นสมเหตุสมผลดี - ทรัพยากรส่วนใหญ่จะถูกเรียกเก็บเงินตามคำขอ / GB / MB อีกครั้งด้วยการจัดสรรรายวันฟรีสำหรับทรัพยากรส่วนใหญ่ อย่างไรก็ตามในเดือนพฤศจิกายน 2011 ได้เข้าร่วม Azure และ AWS ในการเรียกเก็บเงินสำหรับเว็บเซิร์ฟเวอร์ต่อชั่วโมงอินสแตนซ์ รายละเอียดที่นี่
  • GAE มีภาระการดูแลระบบที่เบาที่สุด เมื่อคุณติดตั้งแล้วการปรับใช้และการปรับใช้ใหม่จะรวดเร็วและพวกเขาจะทำทุกอย่างโดยอัตโนมัติ ตัวอย่างเช่นคุณไม่ต้องกังวลว่าเซิร์ฟเวอร์ของคุณใช้แอพจำนวนเท่าใดวิธีการจัดเรียงข้อมูลและการโหลดบาลานซ์
  • จดหมายใช้งานได้ ในขณะที่เขียน Azure ไม่ได้เสนอ SMTP ดังนั้นคุณต้องมีเซิร์ฟเวอร์บุคคลที่สาม
  • ผสานรวมกับข้อเสนอของ Google มากมายไม่ว่าจะเป็นปฏิทินจดหมายหรืออะไรก็ตาม คุณสามารถมอบสิทธิ์การจัดการผู้ใช้ให้ Google หากคุณไม่ต้องการควบคุมฐานผู้ใช้ของคุณ
  • ด้วย GAE คุณจะรู้คุณสมบัติใด ๆ ที่เพิ่มในร้านค้าคุณจะได้รับ ด้วย Azure คุณจะได้รับความรู้สึกของฐานข้อมูล SQL Azure จะได้รับความรักส่วนใหญ่ แต่มันจะมีราคาแพงกว่า Azure Storage น่าจะมี gotchas มากที่สุด ไม่มีความสมบูรณ์เชิงสัมพันธ์ไม่มีคำสั่งซื้อคุณจะทำตัวให้คุ้นเคยกับบริบทในหน่วยความจำเพิ่มเติม ร้านค้าของ GAE มีข้อ จำกัด น้อยลงมากและมีคุณสมบัติมากกว่า Azure Tables
  • ทางเลือกที่ดีถ้าคุณใช้ภาษาที่ใช้ภาษา Python หรือ JVM อยู่แล้ว ปัจจุบันมีหลายภาษาที่รวบรวม Java bytecode
  • การอัปเดตแอปนั้นเร็วมาก สำหรับ Python ฉันมีการตั้งค่าคีย์ลัดและใช้เวลาไม่นานเลย ตอนนี้ฉันใช้ปลั๊กอิน Eclipse สำหรับ Java และใช้งานได้ดีมาก สีฟ้ายิ่งเล่นยุ่ง
  • แอปที่ทดสอบในเครื่องอาจทำงานบนคลาวด์โดยไม่มีการเปลี่ยนแปลง (มากหรือน้อย) ด้วย Azure การกำหนดค่าแตกต่างกันและฉันใช้เวลาหยุดการลบการสร้างการอัปโหลดเริ่มต้นก่อนที่ฉันจะทำถูกต้อง
  • GAE มี UI ที่ยอดเยี่ยมที่มีเครื่องมือแก้ไขข้อมูลเป็นเครื่องมือดูข้อมูล ด้วย Azure ในปัจจุบันคุณต้องค้นหาผู้ชม / บรรณาธิการภายนอกสำหรับสิ่งนี้
  • GAE ช่วยให้คุณมีแอปพลิเคชั่นหลายเวอร์ชันที่ทำงานอยู่ในที่เก็บข้อมูลเดียวกัน คุณสามารถปรับใช้ทดสอบรุ่นและตั้งค่ารุ่น 'สด' ปัจจุบันเมื่อคุณพร้อม คุณสามารถเปลี่ยนกลับได้หากมีสิ่งผิดปกติเกิดขึ้น


    เหตุผลในการใช้ Azure:

  • ลักษณะของประสิทธิภาพและความหมายของต้นทุนของที่เก็บข้อมูลของ App Engine จะทำให้คุณประหลาดใจ ถ้าคุณทำอะไรอื่นนอกจาก CRUD ง่าย ๆ คุณจะต้องทำงานหนักกว่าปกติด้วยฐานข้อมูลปกติ ไม่มีคิวรีแบบเฉพาะกิจ
  • Azure มีสองวิธีในการจัดเก็บโดยเสนอทางเลือกมากขึ้น พวกเขาคือ SQL Azure Database (SAD) ซึ่งเป็น DB เชิงสัมพันธ์และ Azure Storage ซึ่งประกอบด้วยตารางที่ไม่ใช่เชิงสัมพันธ์, blobs และ queues หากคุณมีการลงทุนใน SQL Server แล้ว SAD จะง่ายต่อการย้ายไป แต่มีค่าใช้จ่ายค่อนข้างสูงและอาจปรับขนาดได้น้อยลง อัปเดต: App Engine มี MySQL API ในรุ่นเบต้าที่ จำกัด
  • ดูเหมือนว่า Azure จะได้รับการออกแบบที่ดีขึ้นถ้าคุณมีวิธีการแบบ SOA สถาปัตยกรรมของพวกเขาดูเหมือนจะได้รับประโยชน์จากประสบการณ์ในโลกธุรกิจ GAE ดูเหมือนจะเน้นไปที่การให้บริการหน้าเว็บเพียงอย่างเดียว
  • คุณสามารถเรียกใช้แอปภายใต้การดีบักใส่จุดพัก ฯลฯ
  • Azure มีสภาพแวดล้อม "การจัดเตรียม" ที่คุณสามารถปรับใช้กับระบบคลาวด์ได้ แต่ไม่สามารถทำให้มันใช้งานได้จนกว่าคุณจะพอใจ
  • ฉันกำลังใช้. Net เพื่อสิ่งอื่น ๆ และการรวมเข้ากับ. Net บนแบ็กเอนด์นั้นง่ายกว่า GAE มาก (อัปเดต - การใช้ Java บน GAE ทำงานได้ดีและการหมดเวลา 10 วินาทีในขณะนี้คือ 30 วินาที)
  • บูรณาการกับข้อเสนอ MS "Live" มากมาย

    ดังนั้นไม่มีคำตอบที่ชัดเจน ฉันเริ่มใช้งาน App Engine ในขณะนี้เนื่องจากต้นทุนและความสะดวกในการใช้งาน ฉันอาจใช้ Azure สำหรับแอปที่เน้นการใช้ MS เป็นอย่างมาก ฉันใช้ Amazon S3 สำหรับการดาวน์โหลด แต่มีแนวโน้มว่าจะไม่ใช้ EC2 เพราะฉันต้องการทิ้งทุกอย่างไว้ในระดับแอปพลิเคชันให้กับผู้เชี่ยวชาญ


  • 10
    Richard อาจเป็นอีกข้อดีหนึ่งของ Azure ที่มีฐานข้อมูลเชิงสัมพันธ์ เศษของ Bigtable เป็นกระบวนทัศน์ต่างประเทศบ้าง
    hyperslug

    22
    App Engine ยังช่วยให้คุณจัดการแอพของคุณหลายเวอร์ชัน แต่ละรุ่นจะได้รับ URL ของตัวเองที่คุณสามารถทดสอบได้และเมื่อคุณพร้อมที่จะปรับใช้เพียงทำเครื่องหมายรุ่นนั้นเป็นค่าเริ่มต้น ง่ายต่อการทดสอบปรับใช้และหากจำเป็นต้องย้อนกลับไปเป็นเวอร์ชันก่อนหน้าหากมีสิ่งผิดปกติเกิดขึ้น

    Azure มีการจ่ายเงินตามที่คุณไปโดยไม่มีข้อผูกมัดการใช้อย่างหมดจดไม่ต้องจ่ายขั้นต่ำ 99 $ ต่อเดือน
    Akash Kava

    1
    บนmicrosoft.com/windowsazure/pricingกล่าวเกี่ยวกับ SQL Azure: "* Web Edition: ฐานข้อมูลเชิงสัมพันธ์สูงสุด 1 GB = $ 9.99 / เดือน * Business Edition: ฐานข้อมูลเชิงสัมพันธ์สูงสุด 10 GB = $ 99.99 / เดือน * การถ่ายโอนข้อมูล = $ 0.10 ใน / $ 0.15 out / GB - ($ 0.30 in / $ 0.45 out / GB ในเอเชีย) "
    Richard Watson

    1
    ขณะนี้ App Engine รองรับ SQL เพื่อไปกับ Block Storage code.google.com/apis/sql
    devnul3

    176

    ฉันลำเอียงอย่างชัดเจน - ฉันทำงานกับทีม App Engine ที่ทำหน้าที่นักพัฒนาสัมพันธ์ แต่นี่คือสิ่งที่ฉันต้องทำ:

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

    ในทางกลับกัน Azure มีสภาพแวดล้อมที่มีข้อ จำกัด น้อยกว่าเล็กน้อยซึ่งช่วยให้คุณสามารถเขียนแอพได้กว้างขึ้น แต่ต้องการให้คุณเขียนมากขึ้น - เนื่องจากคุณกำลังใช้งานสแต็คมากขึ้นด้วยตัวเอง - .

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

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

    หากแอปของคุณไม่เหมาะกับรุ่น GAE ให้เลือก Azure หรือ AWS ขึ้นอยู่กับว่าคุณกำลังเขียนสำหรับ MS stack และขึ้นอยู่กับว่าคุณต้องการควบคุมสภาพแวดล้อมการประมวลผลเท่าใด หากแอปส่วนใหญ่ของคุณเหมาะสมกับ GAE แต่ชิ้นส่วนขนาดเล็กไม่ได้คุณอาจพิจารณาไฮบริด - ตัวอย่างเช่นการแสดงสดบน GAE แต่การจัดเก็บใน S3 หรือการประมวลผลจำนวนมากบน EC2


    สิ่งที่เกี่ยวกับปัญหาเช่นนี้: เมื่อ App Engine ผิดพลาด ?
    Cristian Ciupitu

    @ คริสเตียนฉันไม่แน่ใจว่าสิ่งที่คุณต้องการจะได้ยิน - บริการใด ๆ ที่มีการหยุดทำงานเป็นครั้งคราว ซึ่งรวมถึง App Engine และ EC2
    Nick Johnson

    @Nick Johnson: ถูกต้องบริการใด ๆ มีการหยุดทำงานเป็นครั้งคราวและฉันไม่ได้คาดหวังว่าจะใช้งานได้ 100% ในทางกลับกันปัญหานั้นดูเหมือนจะเป็นปัญหาการหยุดทำงาน สำหรับฉันดูเหมือนว่าข้อ จำกัด ของ Google App Engine นั่นคือรหัสของคุณจะต้องทำงานในระยะเวลาที่ จำกัด ฉันไม่คุ้นเคยกับ GAE ดังนั้นโปรดแก้ไขให้ถูกต้องหากฉันเข้าใจผิด
    Cristian Ciupitu

    1
    @Cristian Ah ข้อยกเว้นนั้นเกิดขึ้นเนื่องจากใช้เวลาในการดำเนินการมากเกินไปใช่ แต่สาเหตุของการชะลอตัวคือปัญหาประสิทธิภาพการทำงานชั่วคราว
    Nick Johnson

    ฉันเห็นด้วยกับ "พวกเขาไม่สามารถเทียบเคียง" การเปรียบเทียบบริการเหล่านี้เปรียบเสมือนการเปรียบเทียบแอปเปิ้ลกับส้ม ทั้งคู่เป็นผลไม้นั่นเป็นเรื่องของมัน
    จนถึง

    27

    สำหรับฉันการล็อคอินเป็นปัจจัยในการตัดสินใจ

    หากคุณเลือกสำหรับ Google แอปพลิเคชันของคุณจะทำงานบน Google เท่านั้น หากคุณพบว่าตัวเองพอใจน้อยลงหลังจากนั้นสักพักคุณก็ติดขัด

    หากคุณเลือกสำหรับ MS แอปพลิเคชันของคุณจะทำงานบน Azure เท่านั้น สิ่งเดียวกัน

    ที่ Amazon คุณจะได้รับ (a) เซิร์ฟเวอร์เสมือนที่ทำงานเหมือนกับเครื่องจักรที่คุณคุ้นเคย ไม่พอใจใช่ไหม หยิบแอปของคุณติดตั้งบนฮาร์ดแวร์จริง


    3
    GAE สามารถเรียกใช้แอปพลิเคชัน servlet java มาตรฐานอย่างเป็นธรรมและสามารถใช้การคงอยู่ตามมาตรฐาน
    Stephen Denne

    4
    GAE เปิดอย่างสมบูรณ์ (แต่คุณจะต้องใช้ API เก็บข้อมูล JDO)

    1
    Google ยังคง จำกัด ปริมาณข้อมูลที่คุณสามารถออกไปพร้อมกันได้หรือไม่? Lockin ของพวกเขาขึ้นอยู่กับข้อมูลมากกว่ารหัส
    Mark Ransom

    4
    คุณสามารถใช้ AppScale เพื่อรันแอปของคุณบน EC2 หรือที่อื่น ๆ ที่คุณต้องการ: appscale.cs.ucsb.edu
    Amir

    3
    วิ่งข้ามวันนี้ใครบางคนสามารถเปลี่ยนจาก Google ในหนึ่งสัปดาห์ พวกเขายังยอมรับด้วยว่าอาจใช้เวลาหลายเดือนถ้าพวกเขาไม่ได้ใช้แนวปฏิบัติที่ดีมาตั้งแต่ต้น carlosble.com/?p=719
    Mark Ransom

    20
    • หากคุณเป็นผู้พัฒนา. NET - ไปที่ Azure
    • หากคุณใช้ Python หรือ Java ให้ไปที่ Google
    • ถ้าคุณอยู่ที่ Ruby - ไปที่ Amazon

    ตัวเลือกส่วนบุคคลของฉันตอนนี้จะเป็น Google ด้วย Java (แม้ว่าฉันจะใช้ NET เป็นส่วนใหญ่ก็ตาม) คิดเกี่ยวกับค่าใช้จ่าย - โครงสร้างของพวกเขายากที่จะเปรียบเทียบ

    ลองดูบทความนี้ - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure


    8
    ไม่ใช่นักพัฒนา. NET ทุกคนควรไปที่ Azure Amazon EC2 เป็นตัวเลือกที่ยอมรับได้อย่างสมบูรณ์แบบสำหรับพวกเขา แต่ +1 สำหรับการอ้างอิงบทความที่ยอดเยี่ยม
    Andrew Arnott

    ใช่ Amazon ค่อนข้างเสรีภาพของเครื่องเสมือน แต่ชุมชนส่วนใหญ่มุ่งเน้นทับทิมแรก ...

    1
    AWS รองรับนักพัฒนา. Net ใน Windows 2003 Server AMI ของพวกเขา แต่ฉันสงสัยว่านักพัฒนา. Net จำนวนมากควรจะปรับใช้กับ Windows Server 2008 ซึ่งยังไม่เป็นจริงใน AWS หากคุณเป็นประจำในฟอรัม AWS คุณอาจเลือกว่า Amazon เป็นอะไรที่เงียบสงบสำหรับปัญหานี้
    Richard Dorman

    2
    ฉันเป็นนักพัฒนา. NET ด้วยการค้าขาย แต่ราคาของการใช้ Azure สำหรับเว็บไซต์ที่ได้รับความนิยม 0 ครั้งนั้นเป็นวิธีการของ Google ผมเขียนเปรียบเทียบบางบนบล็อกของฉัน: blog.dantup.com/2009/12/... blog.dantup.com/2009/12/...
    แดนนี่ Tuppeny

    4
    หากคุณใช้ Ruby ให้พิจารณา Heroku หรือ EngineYard แทน Amazon
    andy318

    20

    เช่น Arachnid, ฉันอาจจะลำเอียง, เป็น googler แต่ฉันยังเป็นผู้ถือหุ้นของ Amazon ดังนั้นที่อคติส่วนหนึ่งอาจชดเชยแรก ;-) ไม่มีประสบการณ์ฟ้า (แม้ว่าฉันยังถือหุ้น MSFT ด้วยดังนั้นฉันหวังว่าพวกเขาเช่นกันทำดี - ยังมีอคติอีก ;-)

    สิ่งที่ง่ายมากของฉันคือ App Engine ช่วยให้คุณสามารถทำงานได้อย่างง่ายดาย (ภายในข้อ จำกัด ) เพียงแค่เขียนโปรแกรมไม่จำเป็นต้องมีการดูแลระบบ AWS มีความยืดหยุ่นมากขึ้น แต่คุณจะต้องใช้งานการดูแลระบบจำนวนมาก (และไม่สำคัญเลย) เพื่อใช้ประโยชน์จากความยืดหยุ่นนั้น ดังนั้นในที่สุดฉันก็ต้องการข้อเสนอแนะสองประการของ Arachnid: หาก App Engine สามารถตอบสนองความต้องการของคุณได้ ถ้าคุณต้องการความยืดหยุ่นมากขึ้น AWS ดูเหมือนจะเป็นวิธีที่จะไป (ยกเว้นว่าความสามารถที่ไม่รู้จักของ Azure ควรตรงกับที่ดีกว่า - แต่ฉันคิดว่า AWS จะมีความยืดหยุ่นมากกว่าไม่ว่า Azure จะทำอะไรได้บ้างเช่น AWS คุณ สามารถเลือกระบบปฏิบัติการที่จะใช้หากคุณต้องการ)


    14

    ฉันเพิ่งเริ่มทำงานกับ Azure และฉันก็ประทับใจที่คุณสามารถทำได้ใน F #: http://code.msdn.microsoft.com/fsharpazure! จนถึงตอนนี้มันเป็นแพลตฟอร์มคลาวด์เดียวที่อนุญาตให้หนึ่งใช้การเขียนโปรแกรมที่ใช้งานได้ในวิธีการจัดการ (แน่นอนว่าคุณสามารถใช้ Haskell ใน EC2 ... หรือ Algol 68 สำหรับเรื่องนั้น) ฉันประทับใจมากกับคุณภาพของการรวม Visual Studio - คุณได้รับ "cloud" ในพื้นที่เพื่อทดสอบ DevFabric พร้อมที่เก็บข้อมูลซึ่งเป็น SQL Server จริงเพื่อให้คุณสามารถเล่นก่อนที่จะอัปโหลด GAE สามารถทำเช่นนั้นได้หรือไม่ ดู Azure เรียนรู้ VS กับ F # (มาจาก Linux และ OCaml) ฉันหวังว่าฉันจะเปลี่ยนเป็น MS stack นานแล้ว มันง่ายสุด ๆ ในการสร้างที่เก็บข้อมูล SQL และตรวจสอบใน VS - มีประโยชน์มาก โอเพ่นซอร์สไม่มีชุดเครื่องมือที่ตรงกันและถึงเวลาแล้วที่ MS จะต้องพิจารณาอย่างเป็นธรรม - พวกเขาทำได้ดีมากที่นี่ แน่นอนว่าฉันติดกับฐาน Mac OSX ของฉัน (การบูตสองครั้งใน Vista) และลางสังหรณ์ของฉันคือ ด้วยความสามารถของ Azure ที่จะพัฒนาในพื้นที่ฉันจะได้รับกล่อง Vista แยกต่างหากสำหรับการพัฒนา Azure . NET เป็นเรื่องจริงเมื่อคุณมาจากโลกของ Unix pipe - PowerShell, SQL และ LINQ, C # และ F # (ซึ่งเป็นเหตุผลหลักของฉัน) - แต่มันกลับกลายเป็นว่าทุกอย่างเพิ่มขึ้นและคุ้มค่ากับการเรียนรู้ไม่ใช่ ของ, Linux; และในทุกกรณี Azure จะขยายขอบเขตอันไกลโพ้นของคุณ


    2
    Azure ไม่ได้มีบางสิ่งที่แม้แต่ตรงกับการทำงานของ Amazon Elastic Map ย่อ (จาก Open Source Hadoop) จากระยะไกล ไม่อนุญาตให้ตั้งค่าจำนวนบทบาทผู้ปฏิบัติงานโดยทางโปรแกรม

    3
    Microsoft พยายามสร้างรายได้จากฐานนักพัฒนา. NET อย่างชัดเจนและเป็นความจริงที่มีประโยชน์ในการใช้ประโยชน์จากสแต็กของ Microsoft ฉันไม่มั่นใจว่าสิ่งนี้เพียงอย่างเดียวทำขึ้นสำหรับรูปแบบการคิดต้นทุนที่มีราคาแพงและบล็อก จุดรวมของคลาวด์คอมพิวติ้งคือความยืดหยุ่นในการบำรุงรักษาแบบไม่มีค่าใช้จ่ายขณะที่ Azure ยังไม่มี

    คุณสามารถใช้ Clojure ใน GAE the-deadline.appspot.com/login

    8

    เท่าที่ฉันรัก GAE เหตุผลสำคัญอย่างหนึ่งที่ทำให้ฉันไปกับ EC2 เหนือ GAE สำหรับโครงการปัจจุบันของฉันคือฉันต้องมีส่วนหน้าของแอปพลิเคชันของฉันที่ให้บริการจากศูนย์ข้อมูลที่ตั้งอยู่ในส่วนต่างๆของโลก GAE ทำงานในศูนย์ข้อมูลหนึ่งต่อครั้ง ตัวอย่างเช่นฉันต้องการให้ผู้ใช้ในเอเชียตีเซิร์ฟเวอร์ในเอเชียเพื่อให้ได้เวลาตอบกลับที่เร็วที่สุดสำหรับแอปพลิเคชันของฉัน เพิ่มความสามารถในการจัดการ dns, load balancer, ฐานข้อมูลที่เลือก, flume ที่ถูกผลักเข้าไปใน S3 สำหรับการประมวลผลข้อมูลแบบฮาสุปี้ ฯลฯ ... และ EC2 กลายเป็นโซลูชันที่น่าสนใจจริงๆ


    5

    บางสิ่งที่ควรพิจารณา:

    การเร่งความเร็ว: คุณสามารถสร้างผลงานได้รวดเร็วเพียงใดด้วยสภาพแวดล้อมที่เลือกว่ามีเอกสารประเภทใดบ้างและมีเอกสารที่ชัดเจนและสนับสนุนตัวอย่างที่ชัดเจนและมีประโยชน์

    ค่าใช้จ่าย: ต้นทุนเป็นปัจจัย แต่ถ้าคุณกำลังสร้างแอพเชิงพาณิชย์ที่จะมีลูกค้าจริง ๆ สิ่งเหล่านี้ล้วนเป็นตัวเลือกที่เหมาะสม หากคุณสมมติว่า Azure กับหนึ่ง proc ในอินสแตนซ์ "เล็ก" ทำงานประมาณ $ 90 ต่อเดือนสำหรับการใช้งาน 24x7 ... จำนวนผู้ใช้ที่คุณสามารถให้บริการในเวลานั้น? เพิ่มอินสแตนซ์ที่สองสำหรับความซ้ำซ้อน ... ยังไม่คุ้มค่าหากปริมาณการใช้งานของคุณรับประกัน หากไม่เป็นเช่นนั้นทำไมคุณอยู่ในคลาวด์แทนที่จะเป็นผู้ให้บริการโฮสต์ราคาถูก ปัจจัยด้านต้นทุนที่ใหญ่ขึ้นมาถึงเวลาที่คุณจะใช้สิ่งนี้ AWS เป็นโซลูชั่นของคุณเอง นั่นเป็นเรื่องที่ต้องจัดการเพื่อให้ได้โซลูชั่นที่มีความเสถียรและจัดการได้ดี Azure และ GAE มีสิ่งนั้นอยู่นอกกรอบ ในใจ AWS ของฉันแพงที่สุดเนื่องจากงานที่คุณต้องทำ คุณต้องการควบคุมมันในระดับที่ละเอียดมากหรือไม่? ถ้าเป็นเช่นนั้น

    ความสามารถในการทำสิ่งที่คุณต้องการ: AWS ตลอดทาง สีฟ้าคือที่สอง GAE เป็นที่สาม ไม่ใช่เรื่องใหญ่หากสิ่งที่คุณต้องการคือ Java และ Python Biggie ถ้าคุณต้องการทำ DB สัมพันธ์หรือการประมวลผลข้อมูลแบบหลายเธรดใน C ++ (ไม่แน่ใจว่าสิ่งเหล่านี้ทำในตอนนี้หรือไม่)

    เกี่ยวกับการพกพา คุณสามารถนำมันกลับไปที่ฟาร์มของคุณเองในภายหลังหรือย้ายไปที่ฟาร์มเมฆอื่นได้หรือไม่ พวกมันทั้งหมดพกพาไปได้บ้าง

    ยังมีอีกมากที่ต้องคิด ... ยังเรียนรู้เกี่ยวกับสิ่งนี้อยู่


    TyphoonAE และ AppScale เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเรียกใช้แอพ GAE ที่อื่น

    4

    หากคุณต้องการเริ่มต้นอินสแตนซ์ด้วยตนเองเพื่อตอบสนองความต้องการนั่นไม่ใช่คลาวด์

    Azure และ EC2 เป็นเพียงเซิร์ฟเวอร์เสมือนที่มีบริการบางอย่างอยู่ด้านข้าง

    ปรับปรุง:

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

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


    1
    ฉันคิดว่า Amazon CloudWatch แก้ปัญหาการเริ่มต้นอินสแตนซ์เพิ่มเติมตามการรับส่งข้อมูล

    1
    หนึ่งในการสาธิตทั่วไปที่ฉันเคยเห็นสำหรับ Azure คือการสาธิตความสามารถในการปรับขนาดได้ที่พวกเขาเขียนโค้ดบางอย่างเพื่อตั้งค่าขีด จำกัด เพื่อหมุนหรือหมุนเว็บเวิร์กโหลดตามภาระงาน มันครอบคลุมในชุดฝึกอบรม windows azuer: microsoft.com/downloads/en/…

    4

    นี่คือข้อควรพิจารณาอื่น ๆ

    GAE - ตั้งอยู่บนแพลตฟอร์มที่สูงกว่าในฐานะสแต็กบริการจากนั้น AWS และ Azure ปริมาณการใช้งานทั้งหมดจะถูกส่งผ่าน ghs.google.com DNS ของพวกเขาโหลดแบบไดนามิกที่ให้บริการหน้าเว็บของคุณผ่านหนึ่งในเครื่องของพวกเขา การปรับสเกลจะถูกทำให้เล็กลงด้วยวิธีนี้ข้อเสียไม่มี ip แบบคงที่มีแนวโน้มที่จะถูกกรองหรือถูกบล็อก จากข้อ จำกัด ip แบบคงที่คุณจะไม่สามารถตั้งค่าใบรับรอง https เฉพาะไซต์ใด ๆ

    AWS และ Azure ช่วยให้คุณมี IP แบบคงที่และ VM โดยเฉพาะช่วยให้สามารถใช้ข้อกำหนดพื้นฐานเช่น https Cert คุณจะได้รับการสนับสนุนที่เก็บข้อมูลเชิงสัมพันธ์ ค่าใช้จ่ายก็สูงขึ้นเพื่อสะท้อนความเป็นจริงของ VM เฉพาะนี้และคุณจะได้รับขนาดต่อ VM ดังนั้นคุณจะได้รับ 40 ดอลลาร์ต่อเดือน ข้อได้เปรียบคือเมื่อคุณได้รับ VM มาถึงตัวคุณเองคุณจะไม่ถูก จำกัด ด้วยข้อ จำกัด การประมวลผล cpu 30 วินาทีบน GAE และสามารถทำงานที่ใหญ่ขึ้นได้

    ดังนั้นหากคุณพิจารณาฐานลูกค้าในประเทศที่ถูกกรองหรือต้องการให้ IP แบบคงที่ทำการตั้งค่า DNS ของคุณเองหรือมีข้อกำหนดที่ต้องการฐานข้อมูลเชิงสัมพันธ์หรืองานมากกว่า 30 วินาที AWS สีฟ้าจะเป็นมิตรกับการทำงานด้วย


    3

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


    3

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

    ฉันมีโครงการเครือข่ายสังคมออนไลน์ที่ต้องใช้ฐานข้อมูล nosql AppEngine จะเป็นทางออกที่ดีถ้าสนับสนุนกรอบงานต่าง ๆ ได้ดีขึ้น Django พร้อมอแด็ปเตอร์ที่ไม่ทำงานทำงานบน Python GAE แต่ฉันชอบ Rails ด้วยเหตุผลหลายประการ Rails3 ออกมาไม่กี่เดือนและไม่มีใครในชุมชนหรือในทีม GAE ได้เขียนสูตรเพื่อสนับสนุน นอกจากว่าคุณจะมีชุดทักษะ - การรู้จักทับทิมและรางภายใน, jruby และ GAE เพื่อเขียนสูตรของคุณเองคุณจะอยู่ในความเมตตาของคนอื่นที่จะขึ้นไปบนเวที

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

    การร้องเรียนของฉันเกี่ยวกับ Heroku และ EngineYard สำหรับนักพัฒนา Ruby เป็นเรื่องลึกลับเกี่ยวกับการขยายฐานข้อมูล พวกเขาปรับขนาดได้อย่างไร

    ในกรณีของฉันฉันเลือกใช้โซลูชัน NoSQL และ Mongo น่าจะเป็นตัวเลือกที่ดี MongoMachine ดูเหมือนจะเป็นทางออกที่แนะนำสำหรับคนที่ชอบ Heroku หรือ EY แต่มันแพงไปเสียแล้ว พื้นที่เก็บข้อมูล $ 2.50 / GB ที่เก็บข้อมูลมีเพียง $ 0.10 GB / เดือนสำหรับ GAE หรือ EBS


    1

    ฉันเริ่มทดลองใช้กับ Google App Engine เมื่อไม่นานมานี้และสำหรับเครือข่ายสังคมออนไลน์ฉันเชื่อว่ามันจะตอบสนองทุกความต้องการของคุณ มันง่ายที่จะแฮงค์มันและสามารถใช้ได้ทั้งกับ Python หรือ Java เป็นความจริงที่ว่ามันไม่ได้ให้คุณเข้าถึงไฟล์ แต่สำหรับแอปพลิเคชันของคุณ GQL (อินเทอร์เฟซคล้าย SQL กับฐานข้อมูลที่ให้) อาจจะเกินพอ (และค่อนข้างแข็งแกร่ง)

    สิ่งหนึ่งที่คุณอาจต้องการพิจารณาคือแอปพลิเคชันใน GAE สามารถใช้อินเทอร์เฟซที่จะช่วยให้ผู้ใช้ที่มีบัญชี Google หรือบัญชีบนโดเมนโดยใช้การเข้าสู่ระบบ Google Apps (ทางลัด) คุณเลือกอย่างใดอย่างหนึ่งเหล่านี้ ดังนั้นหากคุณใช้เว็บไซต์ Google Apps อยู่แล้ว Google App Engine จะเป็นตัวเลือกที่ยอดเยี่ยมสำหรับคุณเนื่องจากผู้ใช้ของคุณไม่จำเป็นต้องลงทะเบียนบัญชีใหม่

    แก้ไข: ตามที่ Arachnid ชี้ให้เห็นไม่ใช่ว่าคุณไม่สามารถเขียนรหัสระบบเข้าสู่ระบบของคุณเองได้ ขออภัยถ้าฉันทำให้คุณกังวลอยู่ที่นั่น

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

    ไม่ว่าในกรณีใดคุณสามารถลอง GAE โดยใช้โควต้าว่างบนพื้นที่และแบนด์วิดท์แล้วดูว่าเหมาะสมกับความต้องการของคุณหรือไม่

    ขอให้โชคดี


    Nitpick: GQL ไม่ใช่ฐานข้อมูล GQL เป็นภาษาคิวรีที่คล้ายกับ SQL สำหรับรันไทม์ Python ซึ่งเขียนที่ด้านบนของที่เก็บข้อมูล คุณไม่จำเป็นต้องใช้มัน - นอกจากนี้ยังมี Query API
    Nick Johnson

    นอกจากนี้คุณสามารถลงชื่อเข้าใช้ผู้ใช้ใด ๆ ที่คุณต้องการในแอป GAE ซึ่งเป็นเพียงแค่ GAE ให้ทางลัดสำหรับการใช้บัญชี Google
    Nick Johnson

    ถูกต้องเลือกคำที่ไม่ดีในทั้งสองกรณีขอบคุณที่ชี้ให้เห็น จะแก้ไขได้ :)

    BigTable เป็นเครื่องมือจัดเก็บข้อมูลของ Google และหลังจากใช้เวลาไปกับมันฉันเริ่มสงสัยว่าฉันได้ใช้เวลาส่วนใหญ่ในการทำงานกับสมองของฉันไปแล้วหรือไม่โดยคิดว่า SQL RDBMS นั้นสำคัญต่อการเขียนเว็บแอป รูปแบบการจัดเก็บ BigTable นั้นง่ายยืดหยุ่นได้ประสิทธิภาพและปรับขนาดได้และทำงานได้ดีอย่างน่าประหลาดใจ

    1

    Azure มี Windows / SQL เป็นเซิร์ฟเวอร์ "Platform as a Service" และคุณไม่ได้ติดอยู่แน่นอนกลับไปที่ Windows / SQL ในดาต้าเซ็นเตอร์ของคุณเอง (ไม่มี linux แต่ใช่พวกเขารองรับ Java, Python, PHP, Ruby, Tomcat , Apache และอื่น ๆ ) เช่นเดียวกับ Amazon พวกเขาจะให้ตัวเลือก Virtual Machine ที่สามารถเข้าถึงได้อย่างสมบูรณ์เช่นกันดังนั้นคุณสามารถติดตั้ง / เรียกใช้สิ่งที่คุณต้องการ

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

    Google ไม่มีฐานข้อมูลเชิงสัมพันธ์และคุณเป็น STUCK พวกเขาให้ความสำคัญกับนักพัฒนา Python เท่านั้นและมีการสนับสนุนที่ จำกัด สำหรับ Java พวกเขาไม่ใช่ผู้เล่นในพื้นที่คลาวด์จากความคิดของฉัน


    4
    Jeff มีคู่ค้า Microsoft ที่ผ่านการฝึกอบรมใน SQL Server 2008 ฉันชอบและคุ้นเคยกับประโยชน์ของสแต็ก Windows / SQL แต่ฉันกดยากที่จะยอมรับว่าเป็นSTUCKกับ BigTable ของ Google มีไลบรารี่ที่ดีครึ่งโหลหรือมากกว่านั้นที่ห่อ BigTable API ไว้ให้เห็นว่าเป็นทุกอย่างจาก psuedo RDBMS ไปจนถึงไซโลเอกสารที่จัดทำดัชนี BigTable ได้รับการออกแบบทางวิศวกรรมเพื่อขยายในหลาย ๆ เซิร์ฟเวอร์ (Google พบว่ามีเหงื่อออก 1,500 คลัสเตอร์) ซึ่งเป็นความสำเร็จที่ SQL ไม่สามารถทำได้ดี

    1

    สิ่งหนึ่งที่ไม่ได้กล่าวถึงที่นี่คือสิ่งที่ทุกคนพิจารณา "Windows Azure AppFabric Service Bus & ACS" นอกเหนือจากชื่อที่น่ากลัว ... ?

    ดูเหมือนจะเป็นคุณสมบัติการรวมกลุ่มที่ทรงพลังมากซึ่งจะทำให้ Azure ดึงดูดจากมุมมองของธุรกิจใด ๆ ด้วยการลงทุนในโครงสร้างพื้นฐานของสถานที่


    ใช่แล้วสิ่งที่พลิกกลับก็คือ Microsoft ได้กล่าวอย่างเป็นทางการว่า "ไม่" กับ Azure ในสถานที่สำหรับธุรกิจซึ่งเบี่ยงเบนความสนใจของรถบัส

    1
    ในขณะที่ชื่อจริงนั้นไม่เป็นความจริงในทางปฏิบัติ Microsoft เสนอสแต็กคลาวด์ส่วนตัวที่น่าดึงดูดใจพร้อม Hyper-V (ซึ่งฟรี) และสิ่งต่าง ๆ เช่น Systems Center & InTune มันไม่ใช่ "Azure" ถ้าคุณต้องการที่จะมีตัวเลือกสำหรับ "Azure Appliances" ในไม่ช้าสำหรับบุคคลที่ 3 แต่คุณจะต้องมีขนาดใหญ่มากเพื่อพิสูจน์ต้นทุนเหล่านั้น ฉันได้ยินมาว่าคุณต้องการการสนับสนุนขั้นต่ำประมาณ 1,000 โหนดดังนั้นจึงเป็นเรื่องที่มากกว่าสำหรับเจ้าของดาต้าเซ็นเตอร์

    0

    หลังจากทดลองใช้ Amazon EC2 มาระยะหนึ่งแล้วก็เกิดความล่าช้าฉันได้ทำการค้นคว้า Google Apps ในขณะที่ทำการทดสอบเนื่องจากมีค่าใช้จ่าย ฉันต้องการ Erlang เป็นภาษาพัฒนา แต่สามารถจัดการกับ Python ได้นั่นไม่ใช่ปัจจัยในการตัดสินใจ เมื่อฉันไม่เห็น IP แบบคงที่นั่นคือ อีกทั้งส่วนที่เกี่ยวกับการอยู่สูงขึ้นไปบนกองทำให้ฉันกังวลเล็กน้อยเกี่ยวกับประสิทธิภาพ

    ฉันหวังว่า AWS ราคาถูก แต่จนถึง Google ให้บริการIP ที่คงที่และโดยเฉพาะภาษาเพิ่มเติมเช่นสกาล่า JRuby และ Erlang ทางเลือกที่เป็นที่ชัดเจนสำหรับฉัน: AWS สองภาษาแรกควรมีความเรียบง่ายเช่นกันทั้งสองเป็นภาษา JVM อาจทำได้ผ่านการทำงานไปแล้วเนื่องจากฉันดูเหมือนจะจำบางสิ่งบางอย่างเกี่ยวกับการอ่าน


    ในการเป็นคนคล่องแคล่วคุณสามารถเรียกใช้ Scala, JRuby และแม้แต่ Clojure ใน App Engine เนื่องจากเป็น JVM ทั้งหมดภายใต้ประทุน ตอนนี้ไม่ว่าหรือไม่ก็เป็นเรื่องง่ายที่จะใช้ภาษาเหล่านี้เป็นเรื่องอื่น ...
    คริสสมิ ธ

    0

    ผู้ชายฉันคิดว่านอกเหนือจากแค่คิดว่าแพลตฟอร์มใดที่สนับสนุนการเปรียบเทียบควรมีความยืดหยุ่นความง่ายในการเข้าถึงเอนกประสงค์ (ในแง่ของการใช้งาน) สามารถรองรับแพลตฟอร์มโฮสติ้งที่แตกต่างกันได้อย่างเท่าเทียมกัน แอปพลิเคชัน (ได้แก่ การจัดเก็บการส่งมอบแบนด์วิดธ์นโยบายการออกใบอนุญาตเป็นต้น) ความน่าเชื่อถือของบันทึกคุณภาพการให้บริการการตรวจสอบความปลอดภัยความโปร่งใสในการเรียกเก็บเงินรวมถึงต้นทุนเป็นต้นหากคุณดูที่ตัวชี้วัดทั้งหมด . ฉันจัดการบัญชีการผลิต 10 บัญชีบน AWS ตั้งแต่ 2 ปีและในเวลาเดียวกัน บริษัท / หน่วยธุรกิจสามารถตอบสนองความต้องการที่เพิ่มขึ้นอย่างมากของลูกค้า .... ไม่ต้องสงสัยเลยว่า AWS หนึ่งต้องการบำรุงรักษาโครงสร้างพื้นฐานอัปเดต (ถ้ามี / ถ้า จำเป็น) ความปลอดภัย ฯลฯ แต่คุณมีเครื่องมือทั้งหมดที่มีอยู่ในตลาด / เน็ตอย่างอิสระ ทรัพยากรด้านไอทีที่มีอยู่สามารถรักษาโครงสร้างพื้นฐานทั้งหมดบน AWS ได้เช่นกัน

    Azure แน่ใจว่ามี IDE ที่รวมเข้ากับ VS 2010 แต่การคิดต้นทุนจริงของคลาวด์ใด ๆ จะเริ่มขึ้นหลังจากการปรับใช้แอปพลิเคชันสำเร็จ (แพลตฟอร์มสำหรับการปรับใช้) ยังเป็นวิธีที่ยาวในการจัดการกับสถานการณ์การปรับใช้แบบเรียลไทม์ / ปรับขนาดการผลิต ....... เนื่องจากทุกคนรู้ว่า MS มีวาระซ่อนเร้นอยู่มากมายในเรื่องต้นทุน ประมาณการ)

    GAE นั้นเฉพาะเจาะจงมากสำหรับแอพ Python / Java ความพยายามอย่างมาก (ทั้งในแง่ของทรัพยากร + ค่าใช้จ่าย) ในการรับแอปพลิเคชันเขียนใหม่ (ปัจจุบัน), ทดสอบ, ปรับใช้และอื่น ๆ

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