Black Hat Asia 2021

สรุป Red Hat Webinar: พัฒนา Kubernetes Native Application ด้วย Java สำหรับ Spring Developer

อีกหนึ่งความท้าทายของการนำ Java Application มาทำงานบน Kubernetes ก็คือข้อจำกัดเรื่องการใช้งานหน่วยความจำ (Memory) ที่ค่อนข้างสูง และเวลาที่ใช้ในการ start จนพร้อมที่จะทำงาน (Startup Time) ที่ค่อนข้างนานเมื่อเปรียบเทียบกับ Framework อื่นๆ เช่น Node.js หรือ Go

ใน Webinar นี้ขอนำเสนอ Quarkus ที่จะมาตอบโจทย์การพัฒนา Java Application บน Kubernetes ให้มีประสิทธิภาพมากขึ้น พร้อมทั้งคุณสมบัติที่อำนวยความสะดวกนักพัฒนา ให้การพัฒนา Application เป็นไปได้อย่างสะดวก

โดย Webinar ในครั้งนี้ดำเนินการโดยผู้เชี่ยวชาญหลายท่านจากทีมงาน Red Hat ได้แก่คุณวรวิทย์ เลิศกิติพงศ์พันธ์ , คุณฉัตรชัย กองมณี และคุณเฟื่องวิชญ์ โสภารัตน์

Credit: Quarkus

ปัญหาของ Java กับประเด็นด้านประสิทธิภาพสำหรับการใช้ Application ในระดับธุรกิจองค์กร

โดยทั่วไปเวลาเราพูดถึง Java Application หลายๆ คนก็คงนึกถึงระบบที่มีขนาดใหญ่ มี Stack ที่ซับซ้อน มีการใช้งานหน่วยความจำ (Memory) ที่ค่อนข้างมาก และใช้เวลาในการ start ( Startup Time) ที่ค่อนข้างมากกว่า Framework อื่นๆ เช่น NodeJS หรือ Go ทำให้การย้ายมาใช้งานบน Kubernates ทำได้ค่อนข้างยาก หรือไม่มีประสิทธิภาพเท่าที่ควร ซึ่งตรงนี้ก็ไม่ใช่จุดที่ผิดในเชิงของการออกแบบ เพราะเดิมที Java นั้นถูกออกแบบมาให้เหมาะสมกับการใช้งานในสมัยอดีตก่อนที่จะมี cloud หรือ microservice

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

หากอ้างอิงสถิติจากการใช้ AWS Lambda ในการทำ Serverless นั้น Java เองก็ยังมีสัดส่วนการใช้งานเพียงแค่ 6% เท่านั้น ในขณะที่ Node.js มีสัดส่วนมากถึง 51% และ Python ก็ยังมีมากถึง 38% ทำให้ที่ผ่านมาหากภาคธุรกิจองค์กรต้องการใช้ Serverless นั้น ก็มักเลือกแนวทางในการพัฒนาระบบ Serverless ด้วยภาษาอื่นๆ กันมากกว่า

Quarkus โซลูชันสำหรับการพัฒนาและใช้งาน Java บน Container ได้อย่างง่ายดายและมีประสิทธิภาพ

สิ่งที่ Red Hat ได้นำมาตอบโจทย์นี้ก็คือ Quarkus ที่มี Tagline คือ Supersonic,Subatomic, Java หรือก็คือการทำให้ Java ขนาดที่เล็กลง (Subatomic) มี Startup time ได้อย่างรวดเร็วกว่าเดิม (Supersonic) ซึ่งทั้งสองคุณสมบัติ เป็นปัจจัยหลักที่ Application บน Kubernetes ต้องการ

สำหรับ นักพัฒนาที่จะเริ่มต้นเรียนรู้ Quarkus สามารถเข้าไปที่ https://quarkus.io/ โดย quarkus ได้เตรียม Initializer ที่เป็นเครื่องมือในการช่วยให้นักพัฒนาสามารถเริ่มต้นเรียนรู้และใช้งาน Quarkus ได้ง่ายขึ้นที่เข้าไปที่ https://code.quarkus.io/ ซึ่งผู้นักพัฒนา สามารถเลือก Extension ที่ตนเองต้องการใช้งานใน Application และสามารถเลือก Build Tool ที่ต้องการได้ ก่อนจะทำการ Download ไฟล์ต่างๆ ที่ถูกเตรียมเอาไว้สำหรับสร้าง Application หรือ Push ไปยัง GitHub โดยตรงเลยก็ได้

เมื่อได้ไฟล์มาแล้วก็สามารถนำไปพัฒนาต่อ ด้วย IDE ที่ถนัด ไม่ว่าจะเป็น VS Code, Eclipse หรือ Intellij และด้วย Build Tool อย่างเช่น Maven หรือ Gradle ที่ Quarkus ได้เตรียมไว้ให้ใช้งาน จึงทำให้นักพัฒนาพร้อมใช้งานได้ทันที

Quarkus มี features สำหรับช่วยเหลือและอำนวยความสะดวกให้นักพัฒนามากมาย ยกตัวอย่างเช่น Quarkus Dev Console ซึ่งเป็น Web GUI ที่สามารถแสดง Plugin ต่าง ๆ ที่มีอยู่ใน Application ทำให้ง่ายต่อการตรวจสอบภาพรวมสำหรับแต่ละโครงการพัฒนา Java Application ความสามารถเด่น ๆ เช่น สามารถสั่ง Build Container Image ขึ้นมาด้วยตนเองได้ผ่าน WebUI ได้ทันที โดยสามารถเลือกได้ว่าจะสร้าง เป็น container สำหรับ jar file หรือ สำหรับ native

อีกความสามารถที่น่าสนใจของ Quarkus ก็คือการแปลงโค้ดให้ทำงานแบบ Native ได้ ซึ่งเมื่อทำการ build quarkus เป็น native ในส่วนของการ start application นั้น จะเร็วกว่าแบบ ที่ทำงานบน JVM ถึง 20x และใช้ resource เช่น memory น้อยกว่าแบบ JVM ถึง 10x เลยทีเดียว

ใน Quarkus จะมี Developer Mode ให้ ซึ่งจะมีความสามารถที่ช่วยให้การพัฒนา Application เป็นไปได้ง่ายขึ้น เช่น การทำ Live Code ที่สามารถแก้ไขโค้ดและทำ Hot Code Replace และ Live Reload ให้เราเห็นผลลัพธ์ได้ง่ายๆ ในระหว่างพัฒนาเลย ทำให้ขั้นตอนพัฒนามีความรวดเร็วกว่าเดิมเป็นอย่างมาก ไม่ต้องเสียเวลา Build มา Debug เรื่อยๆ รวมถึงยังเปลี่ยน Library หรือ Dependency on the fly ได้เช่นเดียวกัน

โดยสรุปแล้ว Quarkus จึงเหมาะกับการพัฒนา Container/Kubernetes Application, Microservices ไปจนถึง Serverless ซึ่งมาจากการใช้ทรัพยากรน้อย มี Developer Mode เพื่อช่วยให้นักพัฒนาทำงานได้ง่าย สามารถพัฒนา App ได้ทั้งแบบ Imperative และ Reactive พร้อมทั้งยังมี Framework ต่างๆ สำหรับให้หยิบนำมาใช้ในงานที่เหมาะสมได้ รวมถึงยังทำงานร่วมกับ IDE ชั้นนำในสาย Java ได้อย่างครบถ้วน และมี Extension สำหรับใช้งานใน Kubernetes และ Red Hat OpenShift ได้ ช่วยลดเวลาที่ต้องใช้ในการจัดการไฟล์ต่างๆ ที่เกี่ยวข้องในการ Deploy ระบบได้โดยอัตโนมัติ

Spring Developer จะย้ายมาใช้ Quarkus ได้อย่างไรบ้าง?

ใน Webinar ครั้งนี้ได้มีการแสดงถึงการนำ Spring Boot มาใช้งานบน Quarkus ได้อย่างไร เนื่องจากในประเทศไทยนั้น Spring boot มันเป็น framework ตัวเลือกหลัก ๆ ของ java developer ในเมืองไทย โดยใน Application ตัวอย่างที่เตรียมมานั้น แสดงให้เห็นถึง feature โดยทั่วไปของ Spring Boot ไม่ว่าจะเป็น Spring DI, Spring Rest, Spring Data JPA

Quarkus ได้เตรียม extension ที่รองรับการนำ Spring Boot เดิม ๆ ที่มีอยู่ มาเปลี่ยนเป็น Quarkus ได้ เพียงปรับเฉพาะในส่วนของ library (เช่น แก้ maven dependency ใน pom.xml) และ properties เท่านั้น เพียงแค่นี้ นักพัฒนา ก็จะสามารถนำ spring boot application เดิม มาเปลี่ยนเป็น quarkus เพื่อใช้ประโยชน์จาก feature ต่าง ๆ ของ Quarkus ได้ ไม่ว่าจะเป็นความสามารถเรื่องของ native, live code เป็นต้น และ Quarkus เอง ก็ยัง extenstion ต่าง ๆ เพื่อรองรับ feature ที่ spring boot มี ไม่ว่าจะเป็น เรื่องของ health, swagger, tracing หรือแม้แต่การ support monitoring tool อย่าง prometheus

ตัวอย่างที่เห็นได้ชัดคือ หลังจากเปลี่ยนมาใช้ spring extenstion ของ quarkus ในส่วนของ การ statup application เร็วกว่าเดิมถึง 50% และใช้ memory น้อยกว่า 50% และยิ่ง build เป็น native แล้วนั้น เร็วกว่า spring boot เดิม ถึง 7x และใช้ memory น้อยกว่า 10x เลยทีเดียว

โดยสรุปแล้วการ Migrate ระบบบน Spring Boot มาสู่ Quarkus นั้นสามารถทำได้ด้วยการแก้ไขเฉพาะในส่วนของ depency/extension ที่ Quarkus ได้เตรียมเอาไว้ให้ ซึ่งสิ่งนี้จะช่วยให้ Spring Developer สามารถ upgrade ระบบงาน หรือ application ที่มีอยู่ให้มีประสิทธิภาพมากขึ้น รวมถึงรองรับ Container/Kubernetes ได้ ด้วย Quarkus นอกจากนี้ Red Hat ยังมีเครื่องมืออย่าง Migration toolkit for Application ที่สามารถช่วยตรวจสอบว่าต้องมีการปรับเปลี่ยนอะไร หรืออย่างไรบ้าง และมีระบบแนะนำด้วยว่าต้องใช้เวลานานแค่ไหนในการปรับเปลี่ยนแต่ละส่วน

เรียนรู้เพิ่มเติมเกี่ยวกับ Quarkus

สำหรับผู้ที่สนใจโซลูชันของ Quarkus เพิ่มเติม ทีมงาน Red Hat ก็ได้ชี้เป้าแนะนำทั้งเว็บไซต์ที่เป็นประโยชน์ และ E-Book สำหรับนำไปศึกษาได้ฟรีๆ ดังนี้

สนใจติดต่อ Red Hat ได้ทันที

ผู้ที่สนใจรายละเอียดเพิ่มเติม สามารถศึกษาข้อมูลเพิ่มเติมได้ที่ https://www.openshift.com/ และ https://quarkus.io/ หรือติดต่อทีมงาน Red Hat ประจำประเทศไทยได้ที่ Email rchemae@redhat.com

 

About techtalkthai

ทีมงาน TechTalkThai เป็นกลุ่มบุคคลที่ทำงานในสาย Enterprise IT ที่มีความเชี่ยวชาญทางด้าน Network, Security, Server, Storage, Operating System และ Virtualization มารวมตัวกันเพื่ออัพเดตข่าวสารทางด้าน Enterprise IT ให้แก่ชาว IT ในไทยโดยเฉพาะ

Check Also

[Guest Post] SysMaster เครื่องมือในการตรวจสอบ DBMS สำหรับการวิเคราะห์ และการป้องกันความล้มเหลวของข้อมูลจาก TmaxSoft

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

รู้จัก eCloudvalley: ผู้ที่ให้บริการ AWS Managed Service และ Consulting ระดับโลกที่จะช่วยให้การใช้ AWS ของธุรกิจองค์กรง่ายดาย คุ้มค่า และประหยัดค่าใช้จ่ายมากกว่า 30%

AWS นั้นได้กลายเป็นบริการ Cloud มาตรฐานหลักที่หลายธุรกิจองค์กรในไทยเลือกใช้งานสำหรับระบบ IT และธุรกิจสำคัญสำหรับองค์กรไปแล้ว แต่ในการใช้งานบริการของ AWS ในระยะยาวนั้น ก็ย่อมทำให้องค์กรต้องเผชิญกับความท้าทายใหม่ๆตลอดเวลาไม่ว่าจะเป็น การบริหารจัดการค่าใช้จ่ายที่เกิดขึ้นบน AWS ให้มีความคุ้มค่ามากที่สุด การนำ Workload ที่มีความสำคัญไปติดตั้งใช้งานบน AWS ให้สำเร็จ การนำเทคโนโลยีล่าสุดบน AWS มาใช้สร้างคุณค่าใหม่ๆ ให้กับธุรกิจขององค์กร eCloudvalley ในฐานะของ AWS Premier Partner ระดับโลกที่มีลูกค้าธุรกิจองค์กรมากกว่า 1,000 แห่งให้ความไว้วางใจในการดูแลรักษาระบบของ AWS รวมถึงยังมีความโดดเด่นในการให้บริการ AWS ที่หลากหลายและแตกต่างจากผู้ให้บริการรายอื่น ซึ่งทางบริษัทได้ก้าวเข้าสู่ตลาดประเทศไทยและเป็นอีกทางเลือกให้ธุรกิจไทยสามารถใช้งาน AWS ได้อย่างคุ้มค่า เต็มศักยภาพสูงสุดแล้วในวันนี้