ฉันใช้ WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat และอีกไม่กี่สิบปีที่ผ่านมา ดังนั้นถ้าฉันกำลังพิจารณาโครงการใหม่ฉันจะถามตัวเองคำถามสองสามข้อก่อน สิ่งหนึ่งที่ฉันจะไม่ถามอีกต่อไปคือฉันจะแบนปฏิเสธที่จะใช้ JSP ยกเว้นว่าฉันถูกทรมานจนกว่าฉันจะร้องไห้เพื่อแม่ของฉัน
ฉันจะต้องเข้ากันได้ / ปรับใช้กับผลิตภัณฑ์เฉพาะเพราะได้รับคำสั่งจากใครบางคน? ไม่มีวิธีเพิกเฉยหรือโน้มน้าวพวกเขาเป็นอย่างอื่นหรือไม่? ถ้ามีคำตอบของคุณคือ
ฉันต้องใช้ EJB หรือไม่ จริงๆ? หลีกเลี่ยงหากเป็นไปได้ - เป็นสิ่งจำเป็นสำหรับระบบขนาดใหญ่ระดับองค์กรเท่านั้น โปรดจำไว้ว่าพวกเขาเป็นเพียงเครื่องมือและที่ยิ่งใหญ่ในที่นั้น (ใครสามารถพูดว่า "Golden Sledgehammer"?) พวกมันมีการใช้มากเกินไปดังนั้นจริง ๆ จริง ๆ ถามว่าคุณต้องการ หากคุณต้องการพวกเขานั่นจะลบตัวเลือกหลายตัวรวมถึง Jetty ที่ฉันโปรดปราน
คุณต้องใช้เทคโนโลยี J2EE ที่สำคัญอื่น ๆ เช่น JMS, ESB และอื่น ๆ หรือไม่? ถ้าเป็นเช่นนั้นและคุณทำไม่ได้จริงๆคุณจะถูก จำกัด ให้คอนเทนเนอร์ J2EE เต็มรูปแบบอีกครั้ง คิดอย่างรอบคอบและตรวจสอบก่อนที่คุณจะยอมรับกับ BPM และหลีกเลี่ยง AquaLogic BPM ที่ (เกือบ) ค่าใช้จ่ายทั้งหมด - มันน่าเกลียดในที่สุด
หากคุณต้องใช้คอนเทนเนอร์ J2EE แบบเต็มรูปแบบให้พิจารณาโอเพนซอร์สก่อนเนื่องจากมีความทนทานสนับสนุนและดีกว่าและคุ้มค่ากว่า พวกเขามีฐานลูกค้าที่ใหญ่ขึ้นและมีการสนับสนุนที่เปิดกว้างมากขึ้นดังนั้นพวกเขาจึงมีแนวโน้มที่จะได้รับการแก้ไขที่ดีขึ้นเร็วขึ้น อย่างไรก็ตามเรซิ่นยังไม่บรรลุนิติภาวะและฉันจะหลีกเลี่ยงมันเมื่อเทียบกับ GlassFish หรือ JBoss - ฉันพบว่ามีปัญหาในการปรับใช้และสนับสนุน ฉันต้องการ JBoss เพราะฐานลูกค้าที่กว้างขึ้นวุฒิภาวะและอื่น ๆ GlassFish ยากที่จะรวมเข้ากับกระบวนการสร้าง / ปรับใช้แบบอัตโนมัติ แต่อาจจะดีกว่าสำหรับคุณสมบัติเฉพาะบางอย่างของมัน (ถ้าคุณต้องการ)
ฉันมีเหตุผลพิเศษที่ต้องการ Apache หรือไม่ จากนั้นเอนตัวเข้าหา Tomcat อาจบวกบางสิ่ง
ฉันสามารถทำอะไรกับ servlets ได้ไหม จากนั้นฉันจะใช้ท่าเทียบเรือ - มันเป็นทางออกที่เบาที่สุดเร็วที่สุดง่ายที่สุดและยืดหยุ่นที่สุด หากฉันพิงกับความสามารถในการใช้ท่าเทียบเรือฉันจะถามคำถามทั้งหมดของฉันว่าทำไม ใช้ YAGNI
ดีที่สุดคือการใช้ StringTemplate / WebStringTemplate บน Jetty: โซลูชั่นที่สะอาดแข็งแกร่งและรวดเร็วและบำรุงรักษาได้โดยไม่เสียค่าธรรมเนียมใบอนุญาตชื่อเสียงและการสนับสนุนที่แข็งแกร่ง ฯลฯ นั่นคือสิ่งที่ฉันเริ่มต้นในปัจจุบัน
แอปพลิเคชัน / ระบบส่วนใหญ่เลือกคุณสมบัติ J2EE แฟนซีมากมายเมื่อสิ่งที่พวกเขาต้องการคือ servlets และ JDBC ด้วยสถาปัตยกรรม / การออกแบบที่เหมาะสม คำถามที่ว่าทำไมคุณคิดว่าคุณต้องการมากกว่านี้
ของคอนเทนเนอร์เต็มเป่าฉันจะหลีกเลี่ยง WebLogic และ WebSphere เว้นแต่คุณจะสนับสนุนเว็บไซต์สาธารณะ MAJOR (เว็บไซต์ของนายจ้างปัจจุบันของฉันถูกปรับใช้บน WebLogic และได้รับ 11 + ล้านครั้งต่อเดือนอื่น ๆ มีการเปรียบเทียบ) การอ้างสิทธิ์เพื่อชื่อเสียงที่แท้จริงของ WebLogic คือการจัดกลุ่มที่ค่อนข้างง่าย แต่หลีกเลี่ยงคุณสมบัติการล็อคอินของผู้จำหน่ายที่ค่าใช้จ่ายเกือบทั้งหมด WebSphere เป็นฝันร้ายที่ฉันจะหลีกเลี่ยงค่าใช้จ่ายอย่างแท้จริง - ฉันปฏิเสธที่จะทำโครงการที่เกี่ยวข้องกับ WebSphere หลังจากทำสองสามครั้งในอดีต ผลิตภัณฑ์ทั้งสองไม่มีมูลค่าค่าธรรมเนียมใบอนุญาตจำนวนมากเว้นแต่คุณจะมีความต้องการพิเศษที่ผลักดันให้ใช้คุณลักษณะที่เป็นกรรมสิทธิ์ ในทศวรรษที่ผ่านมาในฐานะสถาปนิก / วิศวกรอาวุโสของ บริษัท Fortune 500 ฉันยังไม่ได้เห็นความต้องการดังกล่าว ในทางกลับกัน,
แม้แต่เว็บไซต์สาธารณะที่มีขนาดใหญ่และมีอัตราการเข้าชมสูงผลิตภัณฑ์ที่เป็นกรรมสิทธิ์ยังคงเป็นที่น่าสงสัย ฉันอยากจะใช้จ่ายหลายล้านดอลลาร์ต่อปีของค่าธรรมเนียมการอนุญาตให้ใช้สิทธิ์สำหรับฮาร์ดแวร์ที่ดีและใช้เวลาคุณภาพจากที่ปรึกษาที่ดีจำนวนหนึ่งเพื่อจัดการกับโซลูชันการขยายขนาดที่ง่าย ล้านเพิ่มเติมต่อปีนั้นสามารถนำมาใช้ในการผลิตสิ่งที่สมควรขายในเว็บไซต์ที่ดีที่ ...
แก้ไข: อีกชิ้นที่ควรพิจารณา ...
ฉันได้พบเมื่อเร็ว ๆ นี้ดินเผา ฉันคิดใหม่ทุกอย่างและมองหาการปรับใช้ในระบบที่สำคัญในไม่ช้า โดยเฉพาะอย่างยิ่ง Terracotta ทำการจัดกลุ่มได้ดีกว่าสิ่งอื่นดังนั้นฉันจะไม่แนะนำ WebLogic สำหรับการทำคลัสเตอร์อีกต่อไป