Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่น่าสนใจใน Technology Radar เดือนเมษายน 2559 จาก Thoughtworks

$
0
0

technology-radar

technology-radar ทางบริษัท Thoughtworks จะสรุปเทคโนโลยีที่ใช้งาน และ แนวโน้มต่าง ๆ ในอนาคต โดยในครั้งนี้จะเน้นใน 4 เรื่อง คือ
  1. Open Source
  2. Cloud และ Platform as a Service (PaaS)
  3. Docker ecosystem
  4. Over-Reactive ?
จึงนำมาสรุปนิดหน่อย ซึ่งสามารถอ่านฉบับเต็ม ๆ ได้ที่ PDF Thoughtworks Technology Radar April 2016

จาก 4 เรื่องหลักของ Technology Radar

สิ่งที่ developer น่าจะสนใจคือเรื่องของ Over-Reactive ? ในปัจจุบันเรื่องของ Reactive programming ได้รับความนิยมอย่างมากมาย ดังจะเห็นได้ว่าทุกภาษา program ล้วนมี Reactive extension/library/framework ให้ใช้งาน ทั้งฝั่ง frontend และ backend แต่การใช้ที่มากจนเกินไป หรือ หลากหลายรูปแบบจนเกินไป !! มันก่อให้เกิดความซับซ้อนของระบบ และยากต่อการทำความเข้าใจ ดังนั้น ทีมพัฒนาความใช้งานในรูปแบบเดียวกัน และใช้เท่าที่จำเป็น อีกเรื่องที่น่าสนใจคือ Web Scale Envy ว่าด้วยเรื่องของการขยายระบบ และ เรื่องของ performance พบว่าหลาย ๆ ทีมมักจะมีปัญหาเรื่องนี้เสมอ เนื่องจากเลือกใช้เครื่องมือที่มีความซับซ้อน รวมทั้ง framework และ architecture ของระบบ บ่อยครั้งที่ทีมพัฒนาจะไปอ้างถึง architecture และ เครื่องมือของ Twitter, Facebook และ Netflix ซึ่งมีปริมาณการใช้งานที่สูงมาก ถึง โครตสูง ดังนั้นจำเป็นต้องมีเครื่องมือ และ architecture ที่ซับซ้อนแบบนั้น รวมทั้งความสามารถของแต่ละคนในทีมต้องสูงด้วยเช่นกัน ถึงจะใช้งาน และ จัดการความซับซ้อนเหล่านี้ได้ แต่เมื่อย้อนกลับมาดูทีมพัฒนาของเราสิ ดูปริมาณผู้ใช้งานสิ ดูความสามารถของแต่ละคนในทีมสิ มันต้องการความซับซ้อนเหล่านั้นหรือไม่ ?
ดังนั้น จึงแนะนำให้เริ่มต้นด้วยวิธีการที่เรียบง่ายก่อนนะ เพื่อให้ระบบงานที่เราพัฒนาอยู่นั้นมันทำงานได้อย่างถูกต้อง จากนั้นจึงค่อยคิดเรื่องการขยายระบบ และ performance ต่อไป

ตามธรรมเนียมของ Technology Radar จะแบ่งออกเป็น 4 กลุ่มคือ

  1. Techniques
  2. Tools
  3. Platforms
  4. Languages และ Framework
ซึ่งจะสรุปบางตัวที่ผมสนใจจากแต่ละกลุ่มมาอธิบายนิดหน่อย จะเน้นสิ่งใหม่ ๆ ที่เข้ามา ทั้งดีและไม่ดี พยายามจะไม่ให้ซ้ำจากรายงานครั้งที่ผ่านมา ThoughtWorks Technology Radar ประจำเดือนพฤศจิกายน 2015

1. Techniques

เทคนิคใหม่ ๆ ที่เข้ามาอยู่ในกลุ่ม Assess จะเป็นเรื่องของ security ทั้ง Content security policy และ OWASP เนื่องจากทีมพัฒนาส่วนใหญ่ ไม่ค่อยนำเรื่อง security มาพูดคุยตั้งแต่เริ่มต้นการพัฒนา บางทีมอาจจะไม่สนใจเลยด้วยซ้ำ เนื่องจากคนส่วนใหญ่มีความรู้ด้านนี้น้อยมาก ๆ ซึ่งสิ่งเหล่านี้มันคือความเสี่ยงของระบบงานมาก ๆ แต่เรามักมองข้ามไปกันหมด ดังนั้นความเพิ่มเรื่อง security เข้าไปใน functional requirement ด้วยนะ ไม่ว่าจะเป็น
  • Authentication process
  • Access control
  • Error handling
  • Logging
มันจะทำให้เห็นว่าต้องพัฒนา และ ทดสอบอะไรบ้างนั่นเอง ส่วนเรื่องที่ไม่ควรทำ หรือ ถ้าจะทำต้องใช้ความระมัดระวังอย่างสูง !! การติดตั้ง CI server ที่เดียวเพื่อให้ทุก ๆ ทีมใช้งาน มันเคยเป็นแนวคิดที่ดี เนื่องจากจะได้ใช้งานเพียงที่เดียว ทำให้จัดการ และ monitoring ได้ง่าย แต่เมื่อมีระบบมากขึ้น คนใช้เยอะขึ้น การใช้งานเพียงเครื่องเดียวมันก่อให้เกิดปัญหามากมายตามมา ตัวอย่างเช่น
  • เกิดข้อขัดแย้งในเรื่องของ configuration ที่หลากหลาย
  • การเข้าคิวเพื่อที่จะ build หรือ ทำงาน
  • การทำงานชนกัน
  • ถ้าเครื่องนี้ล่มไป พังกันทุกทีมแน่นอน !!
  • อื่น ๆ อีกมากมาย
ซึ่งมันเป็น Single Point of Failure (SPoF) ชัด ๆ ดังนั้นก่อนใช้งานต้องพิจารณาถึงข้อดีและข้อเสียให้มาก
คำแนะนำคือ แยก CI Server ตามทีมที่ทำงาน หรือ ระบบไปเลยนะครับ
เรื่องต่อมาคือ Big Data Envy !! ในปัจจุบันนั้นคำว่า Big Data มันเข้าไปอยู่ในทุกองค์กรแล้ว ซึ่งเข้าใจกันแล้วว่ามันคืออะไร มีคุณค่าอย่างไร แต่ปัญหาที่เกิดตามมาก็คือ การนำเครื่องมือที่ไม่เหมาะสมมาใช้งาน !! เช่นการนำเครื่องมือที่มีความซับซ้อนมาก ๆ มาจัดการกับข้อมูลที่ไม่ใช่ Big Data บ่อยครั้งพบว่า ข้อมูลที่มีอยู่นั้น สามารถสิเคราะห์ และ ประมวลผล เพียงเครื่องมือง่าย ๆ หรือใช้คอมพิวเตอร์เพียงเครื่องเดียว หรือใช้เพียง RDBMS ปกติก็ทำได้แล้ว หรือไม่เช่นนั้น ก่อนที่จะประมวลผลข้อมูล ช่วยเลือกเฉพาะข้อมูลที่ต้องการ และ จำเป็นมา จากนั้นจึงใช้เครื่องมือง่าย ๆ มาช่วยวิเคราะห์ และ ประมวลผล
ปล. อย่าทำอะไรที่มากเกินความจำเป็นนะครับ และให้เข้าใจด้วยว่ากำลังจะทำอะไร

2. Platforms

เป็นที่แน่นอนว่า Docker เข้ามาเป็น Platform หลักไปแล้ว ซึ่งตอบสนองความต้องการทั้งจาก ทีมพัฒนา, ทีม operation และ ทีม infrastructure และยังได้เกิด Docker ecosystem ขึ้นมาเยอะมาก ๆ ส่วนตัวอื่น ๆ ที่น่าสนใจ เช่น
  • Realm คือ database สำหรับ mobile application เน้นเรื่อง high performance เป็นหลัก แน่นอนว่ามันเข้ามาเพื่อแทนที่ SQLite และ Core Data
  • TensorFlow เป็น open source เรื่อง Machine Learning จาก Google ซึ่งพลาดไม่ได้ด้วยประการทั้งปวง
ส่วนเรื่องที่ต้องพึงระวังคือ Overambitious API Gateway !! หรือการจัดการ และ ใช้งาน API Gateway ที่ยาก และซับซ้อนเกินไป แทนที่จะส่งผลดี กลับส่งผลร้ายออกมาแทน !! เนื่องจากแนวคิดของ API Gateway นั้น มันทำให้เราง่ายต่อการจัดการเรื่องพื้นฐาน เช่น authentication, authorization และ rate-limit ต่าง ๆ แต่สำหรับงานอื่น ๆ พวก data transform, data processing นั้น มันไม่จำเป็นต้องมาผ่าน API Gateway เลย เพราะว่า ทำให้ควบคุม และ จัดการได้ยาก ดังนั้นควรให้ไปอยู่ใน application หรือ service นั้น ๆ ไปเลย
ปล. อะไรที่มันเยอะ มันยาก มันซับซ้อนเกินไป นั่นแสดงว่า คุณกำลังเดินผิดทางนะ

3. Tools

เป็นกลุ่มเครื่องมือต่าง ๆ ซึ่งมีเครื่องมือใหม่ ๆ เข้ามาเยอะมาก เริ่มต้นด้วย capsul เป็น service discovery tool ถูกย้ายมาในส่วนของ Adopt นั่นคือ แนะนำให้นำไปใช้งานบน production ได้เลย มันแจ่มมาก ๆ (ผมก็ใช้อยู่) ทำให้เราสามารถดูได้ว่า ในระบบของเรานั้นมี service อะไรทำงานอยู่บ้าง แน่นอนว่า สามารถทำงานกับ Docker ได้อย่างสบาย ต่อมาคือ เรื่องของ security อีกแล้วนั่นคือ OWASP Dependency-Check เป็นเครื่องมือสำหรับช่วยตรวจสอบเรื่อง security แน่นอนว่า มันทำให้ชีวิตของ developer ดีขึ้นแน่นอน ถ้าไม่เชื่อก็ลองนำไปใช้กันดูสิ โดยใช้ได้ทั้ง Java, .Net, Ruby, Python และ Node.js ส่วนเรื่องที่ต้องระมัดระวังคือ Jenkins as a Deployment Pipeline ซึ่งจะพูดถึงกรณีที่ กระบวนการ build มันมีความซับซ้อนมาก ต้องการเครื่องมือสร้างมาเพื่อจัดการโดยเฉพาะ ถึงแม้ใน Jenkins จะมี plugin ชื่อว่า Deployment Pipeline ถึงแม้ใน Jenkins 2.0 จะมี plugin ชื่อว่า Pipeline as Code แต่ก็ยังเป็นเพียง plugin ไม่ได้ทำการเปลี่ยน core หรือ การทำงานหลักของ Jenkins เลย เพื่อให้จัดการเรื่อง deployment pipeline โดยเฉพาะ
ปล. ผมยังไม่เคยเจอปัญหาเท่าไร เพราะว่า build pipeline ของผมยังไม่ซับซ้อนนั่นเอง
โดยในปัจจุบันมีเครื่องมือที่สร้างมาเพื่อ Deployment Pipeline เลย เช่น

4. Language และ Framework

ขอบอกได้เลยว่า มันเยอะมาก ๆ ไม่รู้จะเยอะไปไหน !! กลุ่มที่สามารถนำไปใช้กันได้เลย คือ
  • ES6
  • React.js
  • Spring Boot
  • Swift
สิ่งที่เกี่ยวกับ Mobile เยอะเลย เช่น
  • Butterknife
  • Dagger
  • React Native
  • Rebolectric
  • Alamofire
  • OkHttp
ส่วน JavaScript ก็เพียบ เช่น
  • Ember.js
  • Redux
  • AngularJS
  • Cylon.js
  • Aurelia
และตัวอื่น ๆ ที่น่าสนใจ คือ Elm และ Elixir
สุดท้ายลองถามตัวเราเองสิว่า มีเรื่องอะไรที่ไม่รู้บ้าง ?

Viewing all articles
Browse latest Browse all 1997

Trending Articles