มาแล้วสำหรับ 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 ไว้ เพื่อให้ใช้งานง่ายขึ้นอีกด้วย ดังนั้นมาใช้กันได้แล้วนะ ส่วนสิ่งที่อยากให้ลองนำมาใช้กัน เยอะเลย เช่น- .Net Core
- AWS Device Farm
- Google Cloud Platform
- OpenTracing
- Flood IO เป็น Load testing service ช่วยทำให้การทดสอบบน Cloud สะดวกขึ้น
ส่วนที่ 4 Languages and Frameworks
ได้เวลาของ Python 3 แล้ว มีความสามารถที่มีประโยชน์มากมาย โดยจะถูกใช้ใน Machine Learning และ Web application รวมทั้งมี library ต่าง ๆ มากมาย แต่มันไม่ compatibility กับ Python 2 นะ !! สิ่งที่อยากให้ลองนำมาใช้เยอะมาก ๆ เช่น- Angular
- AssertJ
- CSS grid layout
- CSS module
- Jest
- Kotlin
- Spring Cloud
- 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
ยังมีอีกเยอะมาก ๆ ลองไปศึกษากันดูครับ น่าจะมีประโยชน์มากพอสมควร