5 เหตุผลโง่ ๆ ที่คุณไม่ใช้ Heroku

Russell Smith เป็นผู้ร่วมก่อตั้งและ CTO ของ Rainforest QA

เมื่อฉันบอก CTO และวิศวกรคนอื่น ๆ ว่าเราพึ่งพา Heroku อย่างมากในการดำเนินธุรกิจของเราพวกเขามักจะมีปฏิกิริยาเช่นเดียวกัน: ทำไม? ทำไมไม่ AWS คุณล้อเล่นรึเปล่า? คุณเคยได้ยิน Google Cloud ไหม คุณเป็นคนงี่เง่า?

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

เราใช้ Heroku อย่างกว้างขวางที่ Rainforest QA ตั้งแต่ต้นปี 2012 เพื่อเรียกใช้บริการทดสอบ QA อัตโนมัติของเรา เราปรับใช้เกือบทุกอย่างใน Heroku - สำหรับการผลิตการแสดงละครและการควบคุมคุณภาพสำหรับแอปส่วนใหญ่ มีความเสถียรเหมาะสมกับเศรษฐกิจและตรงกับความต้องการของเรา

นี่คือข้อโต้แย้งหลักที่ฉันได้ยินเกี่ยวกับ Heroku และทำไมฉันถึงคิดว่าพวกเขา (ส่วนใหญ่) เข้าใจผิด

# 1. Heroku คือ NIH (ไม่ได้คิดค้นที่นี่)

หากทีมของเราไม่ได้ปะติดปะต่อกันด้วยความรักมันก็ไม่สามารถสมบูรณ์แบบสำหรับเราได้ดังนั้นจึงไม่ดีพอ ค่าเริ่มต้นในวันนี้คือการใช้ AWS (ซึ่งโดยวิธีนี้ก็คือ NIH เช่นกัน) จากนั้นจ้างคนมารวมกันโครงสร้างพื้นฐานของ my-startup-is-a-snowflake ในปัจจุบัน แนวความคิดนี้มีข้อบกพร่องหลายประการ:

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

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

นี่คือเหตุผลที่ฉันชอบเส้นทางของฉัน:

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

นี่เป็นเพียงคุณสมบัติบางส่วนของ Heroku ที่เราชื่นชอบ:

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

สิ่งสำคัญที่น่ากล่าวถึงล่าสุดคือ Heroku Shield ซึ่งทำให้เรามี BAA (ข้อตกลงร่วมทางธุรกิจสำหรับการปฏิบัติตามข้อกำหนด HIPAA จาก Salesforce.com ซึ่งมีปัญหาเกี่ยวกับฟัน แต่ถ้าเราจะสร้างการปฏิบัติตามข้อกำหนด HIPAA ด้วยตัวเองจะต้องใช้วิศวกรสองสามคน เดือนหรือมากกว่านั้นในการทำงาน แต่วิศวกรเหล่านั้นกำลังขับเคลื่อนผลิตภัณฑ์ของเราไปข้างหน้าและทำให้ลูกค้าของเรามีความสุขมากขึ้น

# 2. PaaS แพงเกินไป

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

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

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

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

# 3. PaaS มีข้อ จำกัด มากเกินไป

แต่… แต่…เกล็ดหิมะของฉัน! หลายคนคิดว่าแอปพลิเคชันหรือสถาปัตยกรรมของตนมีความต้องการที่ไม่เหมือนใคร ในกรณีส่วนใหญ่จะไม่ - และถ้าเป็นเช่นนั้นก็ไม่ควร อย่างไรก็ตามฉันพร้อมที่จะยอมรับเหตุผลที่ถูกต้องบางประการที่คุณอาจไม่สามารถใช้ Heroku ได้ พวกเขาอยู่ที่นี่:

  • คุณต้องการ CPU หรือ RAM จำนวนมาก Heroku จะไม่ปรับขนาดได้ไกลถึง AWS และการกำหนดค่ามีความยืดหยุ่นน้อยกว่าเล็กน้อย หากคุณต้องการเซิร์ฟเวอร์หลายพันเครื่องจริงๆ AWS (หรือแม้แต่โลหะเปลือย) อาจประหยัดกว่า แต่ Heroku รองรับอินสแตนซ์ที่มีขนาดค่อนข้างใหญ่ สำหรับคนส่วนใหญ่น่าจะเกินพอแล้ว
  • คุณต้องมีเซิร์ฟเวอร์ bare-metal หรือโปรเซสเซอร์พิเศษ หากคุณกำลังใช้แมชชีนเลิร์นนิงหรืองานที่ต้องใช้ GPU มาก ๆ Heroku อาจไม่เหมาะอย่างยิ่ง อย่างไรก็ตามคุณยังสามารถใช้แนวทางแบบผสมผสานเหมือนที่เราทำ เราใช้ Heroku แต่ยังใช้เซิร์ฟเวอร์เปล่าเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดสำหรับแพลตฟอร์มการจำลองเสมือนของเรา
  • คุณต้องไม่ใช่ HTTP RPC เช่น gRPC การรับส่งข้อมูลขาเข้าใด ๆ ที่ไม่ใช่ WebSocket, HTTP หรือ HTTPS ไม่ได้รับการสนับสนุนโดยเราเตอร์ Heroku ในปัจจุบัน
  • คุณไม่สามารถทำงานภายในรุ่นแอปพลิเคชันที่รองรับ ตัวอย่างเช่นหากคุณต้องการการสื่อสารระหว่างรหัสเพื่อให้กลุ่มของเซิร์ฟเวอร์แอปทำงานเป็นหนึ่งเดียวสำหรับบางอย่างเช่น Erlang หรือ Elixir หรือคุณต้องการการตั้งค่าการกำหนดเส้นทางที่ไม่เหมือนใคร Heroku ไม่เหมาะสำหรับคุณ

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

# 4. Heroku ไม่ได้ทำ Docker

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

# 5. Heroku ไม่ปลอดภัยเพียงพอ

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

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

และโดยวิธีการที่วิศวกรชอบสภาพแวดล้อมการปรับใช้ที่สม่ำเสมอด้วยเหตุผลหลายประการนอกเหนือจากความปลอดภัย 

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

-

New Tech Forum เป็นสถานที่สำหรับสำรวจและพูดคุยเกี่ยวกับเทคโนโลยีสำหรับองค์กรที่เกิดขึ้นใหม่ในเชิงลึกและเชิงกว้าง การเลือกเป็นเรื่องส่วนตัวขึ้นอยู่กับการเลือกใช้เทคโนโลยีที่เราเชื่อว่ามีความสำคัญและเป็นที่สนใจของผู้อ่านมากที่สุด ไม่ยอมรับหลักประกันทางการตลาดสำหรับการตีพิมพ์และขอสงวนสิทธิ์ในการแก้ไขเนื้อหาที่มีส่วนร่วมทั้งหมด ส่งสอบถามข้อมูลทั้งหมดจะ  [email protected]