การประกาศเปิดตัว Kronotop ฐานข้อมูลที่รองรับ Redis ที่พัฒนาด้วย Java ได้จุดประเด็นการถกเถียงอย่างเข้มข้นในชุมชนนักพัฒนาเกี่ยวกับบทบาทและประสิทธิภาพของ Java ในแอปพลิเคชันองค์กรสมัยใหม่ แม้ว่าฐานข้อมูลใหม่นี้จะสัญญาว่าจะมี ACID transactions และการผสานรวมกับ FoundationDB แต่การเลือกใช้ Java เป็นภาษาในการพัฒนากลับกลายเป็นประเด็นถกเถียงหลัก
ความย้อนแย้งด้านประสิทธิภาพของ Java
แม้ว่า Java จะมีชื่อเสียงในด้านการมีรันไทม์ที่มีประสิทธิภาพสูงรองจากภาษาระดับระบบอย่าง C, C++ และ Rust แต่นักพัฒนายังคงแสดงความกังวลเกี่ยวกับการใช้ทรัพยากรในสภาพแวดล้อมการผลิตจริง การอภิปรายเผยให้เห็นถึงความแตกต่างอย่างชัดเจนระหว่างความสามารถด้านประสิทธิภาพในทฤษฎีของ Java กับประสบการณ์การใช้งานจริง สมาชิกในชุมชนชี้ให้เห็นตัวอย่างที่มีชื่อเสียงหลายกรณีที่การใช้งาน Java ถูกแทนที่ด้วยทางเลือกใน C++ เพื่อประสิทธิภาพที่ดีขึ้น เช่น การเขียน Zookeeper ใหม่ของ Clickhouse และการพัฒนา Cassandra ใหม่ของ Scylla
Java สามารถมีประสิทธิภาพได้หากคุณคำนึงถึงประสิทธิภาพในขณะที่เขียนโค้ด แต่นั่นต้องใช้ความพยายามมากกว่าการเขียนด้วย Rust/Go มาก
การพัฒนาระบบทดแทน Java ที่น่าสนใจ:
- Clickhouse Keeper (ภาษา C++) ที่พัฒนามาทดแทน Zookeeper
- Scylla (ภาษา C++) ที่พัฒนามาทดแทน Cassandra
- มีทางเลือกที่รองรับการทำงานเข้ากันได้กับ Redis ในหลากหลายภาษาโปรแกรมมิ่ง
ผลกระทบของ Spring Framework
ส่วนสำคัญของการถกเถียงมุ่งเน้นไปที่ผลกระทบของ Spring Framework ต่อแอปพลิเคชัน Java นักพัฒนาแยกความแตกต่างระหว่างประสิทธิภาพของ Java แบบดั้งเดิมกับแอปพลิเคชันที่ใช้ Spring โดยแอปพลิเคชันหลังมักถูกวิจารณ์เรื่องการใช้ทรัพยากรที่มากเกินไป สิ่งที่เห็นได้ชัดคือการพัฒนา Java สมัยใหม่มักจะเป็นที่เข้าใจว่าต้องใช้ Spring ซึ่งแม้แต่ endpoint ง่ายๆ ก็ต้องการทรัพยากรระบบมาก โดยรายงานว่าต้องใช้หลาย CPU core และหน่วยความจำ RAM หลายกิกะไบต์สำหรับงานที่ไม่ซับซ้อน
ปัญหาด้านประสิทธิภาพที่พบบ่อยใน Java:
- การใช้หน่วยความจำสูงในสภาพแวดล้อมการใช้งานจริง
- แอปพลิเคชันที่ใช้ Spring Framework มีการใช้ทรัพยากรสูง
- มีค่าโสหุ้ยในการเริ่มต้นระบบสูง
- มีขนาดไฟล์ในการติดตั้งใหญ่
- มีความซับซ้อนในการกำหนดค่าการตั้งค่าต่างๆ
การแยกตัวของ Java ในองค์กร
การอภิปรายชี้ให้เห็นถึงความแตกแยกทางวัฒนธรรมในโลกการพัฒนาซอฟต์แวร์ นักพัฒนา Java ในองค์กรมักถูกมองว่าทำงานแยกตัวจากแนวโน้มและแนวปฏิบัติของอุตสาหกรรมในวงกว้าง การแยกตัวนี้นำไปสู่การพึ่งพาเครื่องมือและเฟรมเวิร์กที่เสถียรแต่ใช้ทรัพยากรมาก สร้างระบบนิเวศที่เสริมแรงตัวเองและอาจต่อต้านทางเลือกที่ใช้ทรัพยากรน้อยกว่าอย่าง Quarkus
เกณฑ์วัดประสิทธิภาพและการแลกเปลี่ยน
การถกเถียงในชุมชนยังกล่าวถึงความซับซ้อนในการวัดประสิทธิภาพ โดยระบุว่าเกณฑ์วัดต่างๆ เช่น การใช้ CPU การใช้หน่วยความจำ และประสิทธิภาพในการพัฒนาต้องถูกชั่งน้ำหนักซึ่งกันและกัน แม้ว่า Java อาจจะโดดเด่นในด้านประสิทธิภาพบางด้าน แต่การใช้ทรัพยากรโดยรวมและความซับซ้อนในการดำเนินงานมักทำให้นักพัฒนาหันไปหาทางเลือกในภาษาอย่าง Go, Rust หรือ C++
การอภิปรายที่ดำเนินอยู่สะท้อนให้เห็นแนวโน้มของอุตสาหกรรมในวงกว้างที่มีการประเมินเทคโนโลยีองค์กรแบบดั้งเดิมใหม่ในแง่ของความต้องการสมัยใหม่ด้านประสิทธิภาพการใช้ทรัพยากรและการลดต้นทุนบนคลาวด์ ในขณะที่ Java ยังคงครองความเป็นผู้นำในการพัฒนาระบบองค์กร ความกังวลของชุมชนบ่งชี้ถึงการเปลี่ยนแปลงที่อาจเกิดขึ้นในวิธีการออกแบบและพัฒนาระบบในอนาคต
อ้างอิง: Kronotop: ฐานข้อมูลเอกสารแบบกระจายและรองรับธุรกรรมที่เข้ากันได้กับ Redis โดยใช้ FoundationDB