มาแล้วสำหรับ Technology Radar Vol. 17
โดยในครั้งนี้เน้นในเครื่องของ

  • บริษัทใหญ่ ๆ ในจีนปล่อยของที่ใช้งานออกมาเป็น open source อย่างมาก เช่น Alibaba และ Baidu เนื่องจากแนวคิดและนโยบายต่าง ๆ ที่เปลี่ยนไป
  • Kubernetes เป็นตัวเลือกหลักสำหรับ Container Orchestrator ซึ่งช่วยแก้ไขปัญหาต่าง ๆ มากมาย ดังนั้นใช้ซะ อย่ารอ
  • เรื่องของ Cloud มันกลายเป้นเรื่องปกติหรือ default ของหลาย ๆ บริษัทแล้ว ดังนั้นใครยังไม่ลองใช้ ต้องจัดแล้วนะ
  • Blockchain เป็นเทคโนโลยีที่ได้รับความน่าเชื่อถือในโลกของ distributed แล้ว ต่อจากนี้จะจะพูดถึงการ implement แล้วทั้ง distributed ledger และ smart contract

มาดูใน 4 ส่วนหลักกันว่ามีอะไรที่น่าสนใจกันบ้างสำหรับนักพัฒนาคือ

1. Techniques
2. Tools
3. Platforms
4. Languages and Frameworks

ส่วนที่ 1 Techniques

สิ่งที่ควรนำไปใช้งานคือ Lightweight Architecture Decision Records
เป็นเทคนิคในการจัดเก็บข้อมูลเกี่ยวกับ Architecture ของระบบ
พร้อมทั้งบริบทและผลต่าง ๆ ที่ตามมา

แนะนำให้จัดเก็บไว้ที่ Source Control
ซึ่งดีกว่า Wiki หรือ Website
เนื่องจากสามารถดูประวัติการเปลี่ยนแปลง
พร้อมทั้ง sync กับ source code อีกด้วย

วันนี้เราจัดเก็บสิ่งต่าง ๆ เหล่านี้ไว้หรือไม่ และอย่างไร ?
ที่สำคัญเอกสารที่จัดเก็บมันสัมพันธ์กับ source code หรือไม่ ?

มาดูสิ่งที่น่าสนใจสำหรับการลองนำไปใช้งาน

เรื่องแรกคือ Applying product management to internal platforms
เน้นคำว่า internal นะ
ปัญหาที่เจอคือ คนข้างในจะเชื่อและเคารพ external platform มากกว่า
แต่กลับไม่ไว้ใจหรือเชื่อใจ internal platform
หรือเชื่อใจคนภายในมากเท่าไร

ดังนั้นเรื่องนี้จะเน้นการให้ความสำคัญกับคนข้างใน
ให้ความสำคัญกับการทำงานร่วมกันตั้งแต่การคิดและออกแบบ
เพื่อทำให้แน่ใจว่าสิ่งที่คิดและส่งมอบนั้น
มันมีคุณค่าทาง business และ ช่วยปรับปรุงประสบการณ์ของ developer
สิ่งที่เหล่า Platform product manager ต้องทำหลังจากที่ส่งมอบคือ
การใช้ metric มาวัดผล
การปรับปรุงอย่างต่อเนื่องและสม่ำเสมอ

มิเช่นนั้นคุณจะ transform ไปยัง Digital platform ได้อย่างไร
ถ้ายังคงทำงานแบบตัวใครตัวมัน

เรื่องที่สองคือ DesignOps
ได้รับแรงบันดาลใจมาจาก DevOps
มันคือ culture และกลุ่มของแนวปฏิบัติที่ช่วยให้
คนจากส่วนต่าง ๆ ขององค์กรทำงานร่วมกัน
ออกแบบร่วมกัน โดยยังคงเรื่องคุณภาพที่สูง
ที่สำคัญยังช่วยลดแรงที่ลงไปในการทำงาน
เนื่องจากจะค่อย ๆ ทำ เพื่อให้ได้รับ feedback
จากนั้นนำ feedback มาใช้ปรับปรุงต่อไป
ทำแบบนี้ไปเรื่อย ๆ มันคือ continuous improvement นั่นเอง

ตัวอย่างเครื่องมือที่ช่วยเช่น Storybook เป็นต้น
ทำให้แต่ละคนทำงานใกล้ชิดกันมากขึ้น

เรื่องที่สาม Pipelines for infrastructure as code
ในเรื่องของ Continuos Integration และ Continuous Delivery นั้น
ถูกนำมาใช้งานอย่างแพร่หลายและกลายเป็นสิ่งที่ต้องมีในการพัฒนา software

แต่สิ่งที่ยังขาดหายไปคือ
เรื่องของการทดสอบ infrastructure แบบอัตโนมัติ
เพื่อช่วยทำให้พบข้อผิดพลาดต่าง ๆ ก่อนการเปลี่ยนแปลง
ซึ่งสำคัญมาก ๆ ต่อการจัดการ environment ต่าง ๆ
ดังนั้นใน pipeline ควรมำการทดสอบ environment ต่าง ๆ ด้วย
ว่ามีการ configuration และทำงานได้ตามที่ต้องการหรือไม่

เรื่องที่สี่ TDD’ing containers
เรื่องของ TDD (Test-Driven Development) นั้นเป็นแนวปฏิบัติที่นักพัฒนาต้องมีไว้
เมื่อเข้ามาสู่โลกของ container ตั้งแต่ package และ deploy แล้ว
แนวปฏิบัติ TDD นี้ยิ่งมีสำคัญอย่างมาก
จะรู้ได้อย่างไรว่าสิ่งที่สร้าง ยังทำงานได้ตรงตามที่ต้องการ
ดังนั้น
ทั้ง code และ container ต้องมีชุดการทดสอบเสมอ
โดยมีเครื่องมือให้ใช้เช่น ServerSpec และ Goss

ส่วนสิ่งที่ใช้อย่างระมัดระวังหรือว่าเลิกเถอะ !! ก็มี
Recreating ESB anti pattern with Kafka ซึ่ง ESB มันกลับคืนชีพอีกครั้งด้วย Kafka
Spec-based codegen เช่นพวก Swagger และ RAML มันยากต้องการทดสอบและดูแล

ส่วนที่ 2 Tools

มีเครื่องมือมากมายที่น่าสนใจ
ทั้ง Fastlane สำหรับ iOS และ Android app ใครไม่ใช้นี่บาปมาก ๆ

ส่วนเครื่องมือที่อยากให้ลองใช้ดู

  • Buildkite สำหรับชาว CI/CD ไม่ควรพลาด
  • CircleCI สำหรับใครที่ไม่ต้องการติดตั้งเอง ไปใช้เลย ลองดู
  • Gopass เครื่องมือสำหรับการจัดการ password
  • Headless Chrome for front-end test เป็นความสามารถใหม่จาก Google Chrome
  • jsoniter สำหรับ JSON encoder/decoder แบบแรง ๆ
  • Prometheus สำหรับระบบ monitoring ซึ่งข้อมูลจัดเก็บในรูปแบบ Time series

ส่วนเครื่องมือที่ยังต้องศึกษาต่อไปมีอีกเพียบเลย

  • Spring Cloud Contract
  • Flow
  • Jupyter
  • Kong API Gateway
  • Yarn

ส่วนที่ 3 Platforms

เริ่มด้วย Kubernetes ที่เป็นวิธีการหลักสำหรับการ deploy ระบบงาน
ในรูปแบบ container บน cluster
รวมทั้งเป็นตัวเลือกหลักบน Public Cloud Platform ด้วย
ไม่ว่าจะเป็น Microsoft Azure Container Service และ Google Cloud
รวมทั้งมี platform และ product ต่าง ๆ
สร้างขึ้นมาเพื่อซ่อนการทำงานของ Kubernetes ไว้
เพื่อให้ใช้งานง่ายขึ้นอีกด้วย
ดังนั้นมาใช้กันได้แล้วนะ

ส่วนสิ่งที่อยากให้ลองนำมาใช้กัน เยอะเลย เช่น

สิ่งที่ควรระมัดระวังอย่างมาก !! คือ
การใช้งาน API gateway
เนื่องจากปัจจุบันนิยมนำมาใช้งานอย่างมาก
เพราะว่า API gateway นั้นช่วยให้งานหลาย ๆ อย่างง่ายขึ้น
เช่นการ authentication, authorization และ rate limi เป็นต้น
ทำให้ทุก ๆ service ที่ใช้งานผ่าน API gateway ไม่ต้องทำเครื่องต่าง ๆ เหล่านี้
แต่โชคไม่ดีที่หลาย ๆ ครั้งพบว่า
มีการนำ business logic ต่าง ๆ ของระบบมาใส่ใน API gateway
ส่งผลให้ยากต่อการทดสอบและ deploy

ส่วนที่ 4 Languages and Frameworks

ได้เวลาของ Python 3 แล้ว
มีความสามารถที่มีประโยชน์มากมาย
โดยจะถูกใช้ใน Machine Learning และ Web application
รวมทั้งมี library ต่าง ๆ มากมาย
แต่มันไม่ compatibility กับ Python 2 นะ !!

สิ่งที่อยากให้ลองนำมาใช้เยอะมาก ๆ เช่น

ของใหม่ ๆ เพียบเลย

  • Android Architecture Component
  • ARKit/ARCore
  • TensorFlow Mobile
  • LeakCanary สำหรับการตรวจหา memory leak สำหรับ Android และ Java
  • Weex เป็น framework สำหรับการพัฒนา cross platform mobile app ด้วย syntax ของ Vue.js
  • Solidity และ Truffle เป็นภาษาและ framework สำหรับการพัฒนาบน Ethereum platform

ยังมีอีกเยอะมาก ๆ ลองไปศึกษากันดูครับ
น่าจะมีประโยชน์มากพอสมควร