กรณีศึกษา JetBrains เปลี่ยนแอพ Toolbox จากเดิม C++/React มาเขียนด้วย Kotlin 100%

คนที่ใช้ IDE ของค่าย JetBrains คงคุ้นเคยกับแอพ JetBrains Toolbox ที่ใช้จัดการอัพเดตซอฟต์แวร์ จัดการเวอร์ชัน และโปรเจคต์ที่ทำงานค้างอยู่ ปัจจุบันแอพตัวนี้มีผู้ใช้มากกว่า 1 ล้านคนต่อเดือน ตามฐานผู้ใช้ IDE ของ JetBrains

ล่าสุดทีมของ JetBrains ออกมาเล่าเบื้องหลังการเปลี่ยนแอพ Toolbox ที่เดิมเขียนด้วย C++/React/Chromium มาเป็น Kotlin 100% ซึ่งถือเป็นตัวอย่างการเปลี่ยนผ่านของ JetBrains ที่หันมาใช้ภาษาของตัวเองกับแอพเดสก์ท็อปด้วย

หน้าตาของแอพ JetBrains Toolbox

No Description

Victor Kropp หัวหน้าทีม Toolbox เล่าว่าจุดเริ่มต้นของแอพ Toolbox เกิดขึ้นในปี 2015 โดยในช่วงเริ่มทำ เลือกใช้ภาษา C++ เขียน business logic ส่วนฝั่งอินเทอร์เฟซใช้ Chromium Embedded Framework + React + HTML/CSS/JS

เหตุผลที่เลือกแนวทางนี้ เป็นเพราะไม่ต้องการฝัง Java Runtime Environment (JRE) ขนาดหลายร้อย MB กับแอพเครื่องมือตัวเล็กๆ ส่วนตอนนั้น Kotlin ยังไม่ออกเวอร์ชัน 1.0 จึงยังไม่พร้อมสำหรับงานโปรดักชั่น

แต่ปัญหาของ Toolbox ตามแนวทางข้างต้นมีหลายอย่าง เช่น Chromium Embedded Framework กินแรมเยอะ (อย่างน้อย 200 MB), ต้องใช้สถาปัตยกรรม client-server ภายในแอพตัวเดียวกัน สิ้นเปลืองทรัพยากรในการส่งข้อมูลภายในตัวแอพเอง, การใช้สองภาษาคือ C++/JavaScript ทำให้ดูแลโค้ดได้ยาก ต้องแยกทีมเป็นสองทีม

เมื่อแพลตฟอร์ม Kotlin พร้อมมากขึ้นในปี 2021 บวกกับ JetBrains ออกเฟรมเวิร์ค Compose Multiplatform สำหรับเขียนแอพเดสก์ท็อป ทำให้ทีม Toolbox ตัดสินใจย้ายมาใช้ Kotlin 100% ช่วยแก้ปัญหาทั้งเรื่องทรัพยากรที่ต้องการ และการใช้ภาษา Kotlin ภาษาเดียวเขียนทั้ง backend/frontend ลดภาระในการดูแลลง บั๊กน้อยลง ประสิทธิภาพดีขึ้น

Kropp บอกว่าทางเลือกอื่นที่เคยมองเอาไว้นอกจาก Kotlin คือ Java Swing ซึ่งเก่าไปแล้ว หรือ JavaFX ที่ไม่มีคนใช้งานในวงกว้าง สุดท้ายจึงเลือก Kotlin/Compose for Desktop ที่ตอนนั้นเพิ่งเริ่มประกาศพัฒนา

Kropp เล่าว่าเขาโชคดีที่อยู่บริษัทเดียวกับทีม Kotlin และทีม Compose ทำให้ได้ลองใช้ซอฟต์แวร์เวอร์ชันใหม่ๆ ที่ยังไม่สมบูรณ์ก่อนใครเพื่อน และหากพบบั๊กก็แจ้งแก้ปัญหาได้ทันที ซึ่งหลายครั้งทีม Kotlin/Compose แก้บั๊กให้ภายในวันนั้นเลย นอกจากนั้น เขายังสามารถใช้โค้ดภาษา Kotlin ที่ทีมอื่นของบริษัทเขียนไว้แล้ว เช่น นำโค้ดค้นหาโปรเจคต์จาก IntelliJ IDEA มาใช้กับหน้าโปรเจคต์ของ Toolbox โดยไม่ต้องเขียนใหม่

อย่างไรก็ตาม กระบวนการเปลี่ยนผ่านก็เจอปัญหาอยู่บ้าง เช่น ตอนแรกทีมของเขาเลือกใช้คอมโพเนนต์ Compose Material ที่ใช้เขียน UI ของ Android ซึ่งพัฒนาไปเยอะแล้ว แต่พบว่าคอมโพเนนต์ชุดนี้ออกแบบมาสำหรับ UI มือถือ มีปุ่มขนาดใหญ่สำหรับจอสัมผัส และปุ่มไม่มีสถานะ hover เมื่อนำเมาส์ชี้ (เพราะไม่มีแนวคิดนี้บนจอสัมผัส) ทำให้สุดท้ายเขาต้องสร้างคอมโพเนนต์ UI สำหรับเดสก์ท็อปขึ้นมาเอง และเตรียมจะเปิดซอร์สโค้ดในอนาคต

Kropp สรุปว่าการย้ายมาใช้ Kotlin ทำให้กระบวนการทำงานง่ายขึ้นมาก เพราะทุกคนในทีมเขียนภาษาเดียวกันหมด สื่อสารกันง่าย และตัวโครงสร้างของตัวภาษาก็เขียนสนุกกว่า C++ หรือ JavaScript ด้วย

ที่มา – JetBrains

from:https://www.blognone.com/node/126456