วิธีเลือกภาษาพัฒนา Microservices พร้อมตัวอย่างภาษาสุดฮิต ที่ใช้ได้ทันที
Table of Contents

ทุกวันนี้ Microservices เป็นการออกแบบระบบที่สำคัญมากสำหรับโลกยุค Digital ไม่ว่าจะเป็นบริษัทยักษ์ใหญ่อย่าง Netflix, Amazon หรือแม้แต่ในไทยเองก็พัฒนาด้วย Microservices ในหลากหลายกลุ่มธุรกิจ อย่างธุรกิจธนาคาร เช่น KBank หรือ SCB หรือแม้แต่ธุรกิจ eCommerce ที่เราคุ้นหน้าคุ้นตาอย่าง Shopee หรือ Lazada ก็ตาม เพราะด้วยข้อดีของมันที่สามารถให้ผลลัพธ์ และประสิทธิภาพที่มากตรงข้ามกับคำว่า micro ไม่ว่าจะเป็น Time-to-Market (TTM) ที่รวดเร็วทันกับความต้องการของผู้ใช้งาน การขยายระบบที่ดีกว่า (Better Scalability) หรือแม้แต่ Productivity ในการพัฒนาที่สูงก็ตาม (อ่านต่อได้ที่ Microservices คืออะไร? พร้อมข้อดี-ข้อเสียที่คุณต้องรู้ !!)

ด้วยความที่ Microservices เป็นการพัฒนาโครงสร้างของระบบ (Software Architecture) ซึ่งอาจจะฟังดูกว้างมากตอนมาถึงการพัฒนาจริง ๆ โดยเฉพาะภาษาที่ใช้พัฒนา (Programming Language) ที่มีหลากหลาย ในบทความนี้ เราจะมาแนะนำภาษายอดนิยมที่ใช้พัฒนา Microservices ให้คุณได้เลือกใช้ได้ตามความเหมาะสมกับระบบของตัวเองกัน

วิธีเลือกภาษาพัฒนา Microservices พร้อมตัวอย่างภาษาสุดฮิต ที่ใช้ได้ทันที | Skooldio Blog

แต่การเลือกภาษาที่จะมาพัฒนานั้น ก็เหมือนกับเวลาเราไปช้อปปิ้ง อยู่ดี ๆ จะไปเลือกสุ่มสี่สุ่มห้าไม่ได้ หากเราไม่มีสเปคในการเลือกแล้วล่ะก็ เราก็จะไปต่อไม่ถูกเลยทีเดียว

ข้อแนะนำสำหรับการเลือกภาษาเพื่อใช้พัฒนา Microservices

ทุกคนอาจจะเคยมีคำถามอยู่ในใจว่า

“จะใช้ภาษาไหนในการพัฒนา Microservices ของเราดีนะ” 

จริง ๆ แล้วการที่จะเลือกภาษาใดภาษาหนึ่งมาพัฒนานั้น ไม่มีกฎเกณฑ์ที่ตายตัว และไม่จำเป็นต้องใช้เพียงภาษาเดียวเท่านั้น (นี่เป็นข้อดีใหญ่ ๆ ข้อหนึ่งของ Microservices เลยล่ะ อ่านข้อดีเพิ่มเติมได้ที่นี่) ซึ่งแต่ละภาษาก็จะมีข้อดี ข้อเสีย และข้อจำกัดของตัวเองแตกต่างกันไปตามรูปแบบ (Pattern) และหลักการ (Priniciple) ของแต่ละภาษา ซึ่งก่อนที่เราจะทำการพัฒนา Microservices เราควรกำหนดมาตรฐานของภาษาที่เราจะใช้อ้างอิงจากโมเดลธุรกิจที่เรากำลังทำ ซึ่งลักษณะที่แต่ละภาษาควรมีนั้น มีด้วยกันหลัก ๆ ดังนี้

  • สนับสนุนการทำงานแบบอัตโนมัติ (Culture of Automation)
  • สามารถ deploy ขึ้นระบบได้อย่างอิสระต่อกัน (Independent Deployment)
  • คำนึงถึงผู้ใช้งานเป็นอันดับแรก (Consumer-first Approach)
  • สามารถสร้าง service ได้ตรงตามรูปแบบธุรกิจนั้น ๆ (Modeled Around Business Domain)
  • สนับสนุนการทำงานแบบ Continuous Integration (Culture of Continuous Integration)
  • สามารถตรวจสอบได้ง่ายในกรณีต่าง ๆ (Highly Observable)
  • สามารถแยก component ต่าง ๆ ออกจากกันได้ ไม่ต้องรวมศูนย์ (Decentralization of Components)
  • สามารถแก้ไขได้โดยไม่ต้องยุ่งเกี่ยวกับ dependent code หรือโค้ดที่สัมพันธ์กับโค้ดชุดอื่น ๆ (Implementation Details Hidden)

นอกจากลักษณะเหล่านี้แล้ว เราควรคำนึงถึงเรื่องอื่น ๆ ด้วย ไม่ว่าจะเป็น

  • เลือกภาษาที่ทำให้โค้ดของเราไม่ยุ่งยากเวลาพัฒนา (Simplify coding)
  • ไม่ควรใช้ภาษาที่รันบน Virtual Machine (VM-based language) เช่น Clojure Erlang Elixir เนื่องจากใช้ memory ค่อนข้างสูง
  • เลือกภาษาที่ทำให้คุณสร้าง Static Binaries ได้เพื่อลดขนาดของ image และหลีกเลี่ยง Constant Update
  • เลือกภาษาที่สามารถบริหารจัดการ traffic มาก ๆ ได้ และตอบสนองต่อ request ต่าง ๆ ได้รวดเร็ว

ซึ่งนอกจากข้อแนะนำเหล่านี้แล้ว เราต้องคำนึงถึงข้อดี และข้อเสียของแต่ละภาษาก่อนที่จะเริ่มพัฒนาด้วย ซึ่งจะได้อ่านกันต่อไป

ภาษาแนะนำสำหรับพัฒนา Microservices

Go หรือ Golang เป็นภาษายอดนิยมสำหรับพัฒนา Microservices | Skooldio Blog
Logo from golang.org

Go หรือ Golang

Go หรือ Golang ถูกสร้างขึ้นที่ Google โดยนักพัฒนา 3 คน ได้แก่ Robert Griesemer, Rob Pike และ Ken Thompson เป็นภาษายอดนิยมที่เหล่านักพัฒนาต่างใช้ในปัจจุบัน ด้วยความเร็ว ความสามารถในการทำงานได้หลาย task ในหนึ่งครั้ง (Concurrency) และ API Support  

ข้อดีของ Go

  • สามารถรับมือกับ Load หนัก ๆ ได้ ทำให้คุณสามารถสร้าง application ที่มี high-loaded service ได้
  • มี syntax ที่เรียบง่าย นักพัฒนาสามารถเข้าใจโค้ดที่เขียนได้
  • รวดเร็ว และสามารถทำงานได้หลาย task ในครั้งเดียว ช่วยเพิ่มประสิทธิภาพเมื่อใช้ core และ machine เป็นจำนวนมาก
  • มี library ที่เป็นมาตรฐาน สามารถใช้สร้าง Web Service ได้
  • สามารถสร้าง Microservices Architecture ที่มี component ต่าง ๆ ที่เป็นอิสระต่อกัน ซึ่งทำให้ App เรามีความสามารถทางธุรกิจที่หลากหลาย

ข้อเสียของ Go

  • ภาษา Go เป็นภาษาที่ยังอยู่ในขั้นตอนของการพัฒนา ดังนั้นอาจจะยากในการดึงศักยภาพของ library มาได้เต็มที่
  • ไม่มีการจัดการ memory แบบ manual ซึ่งอาจทำให้เกิดปัญหา เช่น pauses หรือปัญหาของการจัดการ memory ที่ overhead (Overhead Garbage Collection)
  • มีปัญหาเรื่อง Runtime Safety เพราะความปลอดภัยจะถูกเช็คเพียงช่วง compile และช่วง Runtime นั้น ๆ

สรุปง่าย ๆ คือถ้าคุณอยากสร้างโปรเจกต์ใหม่ ๆ หรือพัฒนาโปรเจกต์ที่มีอยู่เดิม Go เป็นตัวเลือกที่ดี ซึ่งก็ขึ้นอยู่กับเป้าหมายในการพัฒนาของคุณนั่นเอง

ตัวอย่าง Go Framework: Go Micro, Go Kit, Gizmo


Java

Java เป็นภาษาที่เกิดมาในปี 1995 โดย James Gosling บิดาแห่ง Java เพื่อใช้กับ Interactive TV (ซึ่งสุดท้ายไม่ได้ใช้ เพราะมันล้ำสมัยจนเกินไป ไม่มีใครใช้) Java เป็นภาษาที่ได้รับความนิยมเป็นอย่างมาก ซึ่งอยู่ใน Top 6 จากผลสำรวจของ Stackoverflow ปี 2022 และเป็นหนึ่งในภาษาที่ดีมาก ๆ ในการพัฒนา Microservices ด้วยสาเหตุหลัก ๆ ที่ว่า syntax ของ Java นั้น ง่ายต่อการอ่าน ทำให้สามารถเขียนโค้ดได้ง่าย โดยเฉพาะเวลาใช้กับ Framework ต่าง ๆ

ข้อดีของ Java

  • มี syntax ที่อ่านง่าย (Readability) ทำให้สามารถดูโค้ดได้ง่าย โดยเฉพาะโค้ดที่เยอะ และซับซ้อน ทำให้สามารถพัฒนา Microservices ได้โดยไม่มึน
  • มีนักพัฒนาที่ใช้ Java เป็นจำนวนมาก ทำให้สังคมของ Java นั้นใหญ่ สามารถสอบถามได้ไม่ยาก
  • Java เป็นภาษาที่ stable มาก ๆ เนื่องด้วยเป็นภาษาที่มีมานาน
  • สามารถย้ายจาก system หนึ่งไปยังอีก system หนึ่งได้ง่าย
  • สามารถทดลองพัฒนา Microservices โดยใช้ภาษา หรือ Framework อื่น ๆ ได้ง่าย โดยไม่ต้องลงทุนเยอะมาก

ด้วยความที่ Java เป็นภาษาที่มีมานาน ทำให้ตรงนี้เอง Java สามารถใช้พัฒนาได้หลากหลายอย่างมาก ไม่ว่าจะเป็น Mobile App, Desktop GUI Application, Web-based Application, Gaming, เทคโนโลยีที่เกี่ยวกับ Big Data, Cloud/Distributed Application หรือแม้แต่ IoT Application

ตัวอย่าง Java Framework: Spring Boot, DropWizard, Jersey, Restlet, Spark


Python เป็นภาษายอดนิยมมากที่สุดภาษาหนึ่งในปัจจุบัน ที่มีความสามารถในการพัฒนา Microservices ด้วย | Skooldio Blog
Logo from python.org

Python

Python ได้รับการพัฒนาครั้งแรกในช่วงปลาย 1980s โดย Guido van Rossum เป็นอีกหนึ่งภาษาที่ได้รับความนิยม และกำลังมาแรงในปัจจุบัน ไม่ว่าจะเป็นในด้าน Data หรือการพัฒนาระบบต่าง ๆ ก็ตาม ด้วยความเป็นที่นิยมของมันนั่นเอง ทำให้นักพัฒนาเริ่มหันมาศึกษา และพัฒนาด้วย Python ในด้านต่าง ๆ มากยิ่งขึ้น

ข้อดีของ Python

  • เป็นภาษาที่อ่านง่าย ง่ายต่อการเรียนรู้ และทำความเข้าใจ ซึ่งเป็นเหตุผลที่ Python เป็นภาษาที่นักพัฒนารุ่นใหม่นิยมเรียนกัน
  • สามารถสร้าง prototype ได้ง่าย และรวดเร็ว มี Productivity ในการพัฒนาที่สูง
  • สามารถ maintain ได้ง่าย ใช้ทรัพยากรในการบำรุงรักษาน้อย
  • Bug ที่เกิดจากการพัฒนาด้วย Python ไม่สามารถก่อให้เกิด Segmentation Fault ได้
  • Python มีฟีเจอร์ในการ Integration ที่ดีมาก รวมถึง Framework สำหรับ Unit Testing และความสามารถในการควบคุม (Control Capability) ที่เหนือชั้น ทำให้ Microservices ที่พัฒนาด้วย Python มีประสิทธิภาพที่ยอดเยี่ยม และรวดเร็วมาก 
  • สามารถ integrate กับเทคโนโลยีอื่น ๆ ได้ดี

ข้อเสียของ Python

  • มีความเร็วในการ Execute ต่ำ เพราะ Python ทำงานเป็น Interpreter ไม่ใช่ Compiler 
  • เป็นภาษาที่มีขีดจำกัดในการ design 
  • ใช้เวลาในการ Test นาน
  • นักพัฒนาจะสามารถตรวจจับ bug ได้เฉพาะช่วง Runtime เท่านั้น
  • ใช้ memory ในการทำงานเยอะ
  • มีความปลอดภัยที่หละหลวม ทำให้ไม่ค่อยมีใครใช้ใน Web Browser

สรุปง่าย ๆ คือ Python ไม่ได้เหมาะสมกับทุกโปรเจกต์เสมอไป เป็นภาษาที่ดีถ้าอยากพัฒนาใน Automated Build, Data Analysis หรือระบบ Machine Learning หากสนใจ Python สามารถลองศึกษาได้จากที่นี่เลย

ตัวอย่าง Python Framework: Flask, Falcom, Bottle, Nameko, CherryPy


C++ เป็นอีกหนึ่งภาษาที่ใช้พัฒนา Microservices | Skooldio Blog
Logo from isocpp.org

C++

C++ ถูกสร้างโดย Bjarne Stroustrup พร้อมจุดประสงค์แรกที่จะเป็นแค่ส่วนต่อขยายของภาษา C เท่านั้น C++ เป็นภาษาแบบ cross-platform ที่ใช้พัฒนาแอปพลิเคชั่นประสิทธิภาพสูง ที่ให้ความสามารถกับนักพัฒนาในการควบคุม resource และ memory ของระบบได้ดี 

ข้อดีของ C++

  • เป็นภาษาที่ simple ทำให้นักพัฒนาสามารถพัฒนาได้ไม่ยาก
  • สามารถพัฒนาโปรแกรมที่รวดเร็ว และเคลื่อนย้ายได้สะดวก
  • สามารถทำงานได้หลาย task ในครั้งเดียว (Concurrency)
  • เป็นภาษาสำหรับสร้างแอปที่มีประสิทธิภาพสูง

ข้อเสียของ C++

  • ไม่มี built-in support สำหรับ threads
  • ไม่มีระบบการจัดการ memory แบบอัตโนมัติ (Garbage Collection)

สำหรับ C++ นั้นเป็น Object-Oriented Programming (OOP) ที่เหมาะสำหรับการพัฒนา Automotive Application, Banking Application, Cloud/Distributed System, Database Server, Robotic และ Appliance ต่าง ๆ


Ruby เป็นภาษาแบบ OOP 100% ที่สามารถใช้พัฒนา Microservices ได้ | Skooldio Blog
Logo from ruby-lang.org

Ruby

Ruby ถูกพัฒนาขึ้นโดย Yukihiro “Matz” Matsumoto และปล่อยออกสู่สังคมในปี 1995 ที่เน้นความเรียบง่าย และความ productive ในการพัฒนา อีกทั้งยังเป็นภาษาที่ใช้เขียนโปรแกรมเชิงวัตถุแบบ 100% อีกด้วย (Object-Oriented Programming; OOP)

ข้อดีของ Ruby

  • สนับสนุนการทำงานกับแพลตฟอร์มอื่น ๆ รวมถึงสามารถเข้ากันได้กับภาษาต่าง ๆ
  • สามารถพัฒนาระบบได้อย่างรวดเร็ว
  • สามารถ scale ระบบไปพร้อม ๆ กันได้
  • เป็นภาษาที่ถูกสร้างมาเพื่อการพัฒนาแอปพลิเคชั่นที่ high reliability

ข้อเสียของ Ruby

  • ยังมีข้อจำกัดในเรื่องประสิทธิภาพ และการทำงานแบบ multithreading

Ruby เป็นภาษาที่ friendly สำหรับ Startup และบริษัทต่าง ๆ ด้วยความสามารถที่เหมาะสมกับความต้องการทางธุรกิจ เช่น การจัดการข้อมูลต่าง ๆ ของบริษัท หรือแม้แต่ web application, web server, system utilities, backups, หรือการ parsing ก็ตาม


Node.js เป็น JavaScript Library ยอดนิยมสำหรับพัฒนา Microservices | Skooldio Blog
Logo from nodejs.org

JavaScript (Node.js)

หากพูดถึง Microservices ที่พัฒนาด้วย JavaScript ก็คงหนีไม่พ้น Node.js เป็นแน่ Node.js เป็น Cross-Platform Runtime Environment ที่ถูกสร้างโดย Ryan Dahl ในปี 2009 ซึ่งมีจุดเด่นตรงที่นักพัฒนาสามารถพัฒนาแอปพลิเคชั่นที่รัน JavaScript ได้ทั้งในฝั่งของ client และ server 

ข้อดีของ Node.js

  • มีประสิทธิภาพสูงสำหรับ real-time application
  • สามารถ scale ระบบได้ง่าย
  • มี community ที่ใหญ่ นักพัฒนาสามารถช่วยกันตอบคำถามได้ตลอด 
  • ศึกษาได้ง่าย และปรับตัวได้รวดเร็ว
  • แอปพลิเคชั่นมี response time ที่รวดเร็วมาก และประสิทธิภาพที่ดี
  • ช่วยลดระยะเวลาการโหลดโดยการใช้ cache
  • สามารถพัฒนาแอปพลิเคชั่นแบบ Cross-Platform ได้

ข้อเสียของ Node.js

  • เมื่อมีงานที่ต้อง compute หนัก ประสิทธิภาพจะลดลง
  • Unstable API ทำให้การพัฒนาด้วย Node.js นั้น อาจทำให้โค้ดของคุณเปลี่ยนแปลงบ่อยครั้ง
  • การเขียน code แบบ asynchronous ยากในการ maintain code
  • การขาดการสนับสนุนจาก library ต่าง ๆ ทำให้อาจเกิดข้อปกพร่องกับโค้ดของคุณได้

หลัก ๆ แล้ว Node.js จะเหมาะกับการพัฒนา Real-time application, Collaborative tool, Data streaming application, หรือแอปพลิเคชั่นที่ต้อง scale อยู่เรื่อย ๆ


สรุปรวบยอดภาษา Microservices

แต่ละภาษาต่างก็มีข้อดี-ข้อเสียแตกต่างกันไปขึ้นอยู่กับจุดประสงค์ของเรา ในบทความนี้เป็นเพียงการยกตัวอย่างภาษาที่ได้รับความนิยมเท่านั้น จริง ๆ แล้วยังมีเทคโนโลยีอีกหลากหลายมาก ๆ 

ซึ่งการเลือกใช้ภาษาเป็นเพียง check point หนึ่งในขั้นตอนที่มากมาย หากเราออกแบบ Microservices ไม่ดี เราก็อาจจะไม่สามารถดึงประสิทธิภาพของภาษา หรือเครื่องมือที่ใช้มาได้อย่างเต็มที่ หรือแม้ว่าเราจะสามารถพัฒนาได้แล้ว แต่ก็อาจจะมีข้อผิดพลาดที่เราไม่สามารถรู้ได้ซ่อนอยู่ ซึ่งอาจจะส่งผลต่อระบบของเราในภายภาคหน้าได้

ดังนั้นการพัฒนา Microservices ที่ดี นักพัฒนาทุกคนควรรู้ทุกมุมมองตั้งแต่ต้นน้ำยันปลายน้ำ ตั้งแต่การ design การ develop ไปจนถึงการ deploy ขึ้นระบบ และต้องรู้แบบ Best Practices ด้วย เพื่อที่จะได้ไม่เสียเวลาในการปล่อยระบบเราออกสู่ตลาด และไม่เสียโอกาสทางธุรกิจให้กับคู่แข่งของเรา

หากอ่านแล้วอยากเริ่มที่จะทำ Microservices แต่ไม่รู้ว่าจะทำอย่างไรดี ไม่รู้ว่าควรจะเริ่มเรียนจากอะไร เรามีเวิร์กชอปมาแนะนำให้เหมือนกัน

ออกแบบ พัฒนาและติดตั้ง Microservices ครบจบที่เดียว – Workshop | Skooldio

เวิร์กชอป 4 วันเต็ม ที่จะทำให้คุณรู้ลึก รู้จริง ลงมือพัฒนา Microservices แบบผู้เชี่ยวชาญตัวจริง 

โดยคุณปุ๋ย – สมเกียรติ ปุ๋ยสูงเนิน (Technical Coach & Software Craftsman ที่สยามชำนาญกิจ เจ้าของบล็อก somkiat.cc และ Facebook Page somkiat.cc)

ที่จะสอนคุณหมดเปลือก 

  • ตั้งแต่ Design Develop ไปจนการ Deploy ขึ้นระบบ
  • ลงมือทำจริง แบบ Best Practices ฉบับผู้เชี่ยวชาญตัวจริง
  • เข้าใจว่า Microservices คืออะไร? เหมาะกับองค์กรของเราไหม? เอามาปรับใช้จะดีหรือเปล่า? ส่วนไหนของที่เหมาะ-ไม่เหมาะกับเราบ้าง?
  • โจทย์จริงจากเคสจริง เรียนจากประสบการณ์จริงกว่า 10 ปี
  • รับคำแนะนำอย่างใกล้ชิดจากคุณปุ๋ยตลอดการทำเวิร์กชอป

สามารถศึกษารายละเอียดเวิร์กชอปเพิ่มเติมได้ที่นี่

Design | Development to Deployment | Bundle

หรือถ้ายังตัดสินใจไม่ได้ว่าจะเรียนเวิร์กชอปดีไหม อาจจะเริ่มจากทฤษฎีเบื้องต้นก่อนก็ได้ ทางเราก็มีคอร์สออนไลน์ที่จะสอนพื้นฐาน Microservices มาแนะนำเช่นกัน ซึ่งก็สอนโดยคุณปุ๋ยคนเดิมเลย เรียกได้ว่ารับประกันคุณภาพ รับความรู้ไปแบบเต็ม ๆ เลยทีเดียว

สามารถศึกษารายละเอียดคอร์สออนไลน์ได้ที่นี่

เปรียบเทียบ Microservices ระหว่าง Online vs Workshop | Skooldio Blog


แหล่งอ้างอิง:

Overview of Top 5 Languages to Build Microservices | RubyGarage Blog
Best Languages for Microservices. Today microservices are a significant… | by Sandra Parker | Bits and Pieces (bitsrc.io)
5 Best Technologies To Build Microservices Architecture (clariontech.com)
Stack Overflow Developer Survey 2020
Abstraction: Why hiding implementation details is important ? – stackroute (wordpress.com)
C++ Introduction (w3schools.com)
Go (programming language) – Wikipedia
History of Java – Javatpoint
Python (programming language) – Wikipedia
About Ruby (ruby-lang.org)
Node.js – Introduction – Tutorialspoint
Advantages & Disadvantages of Node.js : Why to Use Node.js? (simform.com)
Ruby vs Python: Choosing Your First Programming | Course Report
What Is Node.js Used For? 5 Best Use-Cases | Brainhub
Why and When to Use Node.js in 2021 [Complete Guide] (relevant.software)
What Is Ruby Used For? | Mix & Go (mixandgo.com)
C++ Language: Features, Uses, Applications & Advantages – Hackr Blog
What is Java Used For? – Javatpoint

More in:Technology

Comments are closed.