Skip links
View
Drag

COE

Tags

“มองอนาคต 5 เทรนด์ การพัฒนาซอฟต์แวร์ที่ถึงเวลาต้องลองใช้งาน”

เริ่มที่เทรนด์แรก Low Code เทคโนโลยีนี้มีการใช้งานมายาวนาน ในช่วงโควิดที่ผ่านมา โครงการ Open Source ได้เติบโตอย่างรวดเร็วมาก ยกตัวอย่าง 3 โปรเจกต์ในช่วงโควิด ได้แก่ Appsmith, ToolJet และ Budibase ซึ่งบางตัวเกิดขึ้นมาก่อนโควิด แต่ในช่วงโควิดการพัฒนาเกิดขึ้นอย่างรวดเร็ว มีการลงทุนอย่างมากในช่วงปี 2021 ที่ผ่านมา และในปีนี้โดยรวมของตลาด Low Code มีการเติบโตถึง 25% โดยตลาด Low Code นั้น เรามักมองรวมเทคโนโลยีหลายตัว เช่น RPA ก็อาจจะมองว่าเป็นส่วนหนึ่งของ Low Code แต่ที่เติบโตค่อนข้างมากตัวหนึ่ง คือ Low-Code Application Platform ที่ใช้พัฒนาแอปพลิเคชันติดต่อผู้ใช้ โดยเราสามารถเชื่อมระบบเข้ากับ Database, Google Sheet, Microsoft Excel แล้วนำมาทำแอปเป็นหน้าจอ UI เป็นอีกเทรนด์หนึ่งที่เติบโตขึ้นมาก เทรนด์ที่ 2 ความนิยมในภาษาใหม่และเฟรมเวิร์กใหม่ ๆ ยังคงมีมาอย่างต่อเนื่อง ถ้าใครได้ทำงานพัฒนาซอฟต์แวร์มานาน เราก็จะพบว่าเฟรมเวิร์กที่เราใช้งานอาจจะต้องเปลี่ยนไปเป็นช่วง 3-5 ปี แม้หลายปีที่ผ่านมา React และเฟรมเวิร์กในกลุ่มเดียวกันจะได้รับความนิยมอย่างกว้างขวาง แต่ก็มีเทคโนโลยีแพลตฟอร์มที่ได้รับความนิยมมากขึ้นเรื่อย ๆ ตัวหนึ่งก็คือ Svelte ที่การใช้งานยังไม่เยอะมาก แต่ผลสำรวจของ Stack Overflow กลับแสดงให้เห็นว่าผู้ใช้นั้นชื่นชอบเป็นอย่างมาก และอัตราการใช้งานก็เพิ่มขึ้นอย่างรวดเร็ว นอกจากนี้ยังมี เฟรมเวิร์กตัวหนึ่งที่เริ่มเด่นขึ้นมา คือ Phoenix ที่ใช้ภาษา Elixer แม้อัตราการใช้งานยังน้อยมากแต่ผู้ใช้งานแสดงความชื่นชอบเกิน 80% นับเป็นเฟรมเวิร์กที่ผู้ใช้รักที่สุดตัวหนึ่ง สำหรับภาษาโปรแกรมที่กำลังเป็นที่นิยมคือภาษา Rust ที่ก่อนหน้านี้ก็เคยติดอันดับภาษาโปรแกรมมิ่งที่ผู้ใช้ชื่นชอบอย่างมากเป็นเวลานาน ปีที่ผ่านมาบริษัทขนาดใหญ่อย่าง AWS, Microsoft รับวิศวกรในภาษา Rust เพิ่มมากขึ้น ทั้งการใช้ภาษา Rust ในบางโครงการของบริษัทเอง และการนำมาช่วยพัฒนาตัวภาษา เทรนด์ที่ 3 คือ AI จะยังไม่มาแย่งงานเราในเร็ว ๆ นี้ (แต่ในอนาคตก็ไม่แน่) ด้วยกระแสนิยมของ ChatGPT ในช่วงที่ผ่านมา หลายคนก็อาจมีคำถามว่า เทคโนโลยีนี้จะทำให้โปรแกรมเมอร์ตกงานไหม คำตอบคือ ปีนี้ยัง! กลับกันคือเราน่าจะเห็นการทำงานของโปรแกรมเมอร์ที่มี AI มาช่วยทำงานมากขึ้นเรื่อย ๆ ปัจจุบัน AI สามารถช่วยงานได้มากขึ้น สามารถแปลงคอมเมนต์เป็นโค้ดได้อย่างชาญฉลาด หลายครั้งสามารถเขียนทั้งฟังก์ชัน หรือเขียนตัวทดสอบแอปพลิเคชันได้อย่างแม่นยำรวดเร็ว แต่ AI ก็ยังต่างจากคำตอบของมนุษย์ที่มีความรู้อย่างแท้จริง AI จะประมวลความรู้จากแหล่งต่าง ๆ ซึ่งอาจไม่ถูกต้องทั้งหมด และจุดอ่อนของ AI มันไม่ได้ทดสอบคำตอบของมันจริง ๆ ต่างจากโปรแกรมเมอร์ที่ก่อนเราจะนำงานไปส่ง เราก็ต้องทดลองคำตอบของเราก่อนว่าทำงานได้จริงอย่างที่ต้องการหรือไม่ อย่างไรก็ตาม AI ก็เป็นเครื่องมือที่ช่วยในการเขียนโปรแกรมได้ โดยมีเครื่องมือที่แนะนำให้ใช้ ได้แก่ GitHub Copilot และ Tabnine โดยควรใช้อย่างระมัดระวัง อย่าลืมว่าโค้ดเป็นความรับผิดของผู้เขียน แม้ AI จะมีข้อจำกัดแต่ก็มีแนวโน้มที่จะมีการพัฒนาอย่างต่อเนื่อง เป็นอีกหนึ่งเทคโนโลยีที่น่าจับตามอง เทรนด์ที่

MFEC

MFEC

Tags

Cyber Security Forecast 2023

Hacker ในปัจจุบันที่อยู่รอบตัวเรานั้นส่วนมากเป็นบุคคลธรรมดาทั่วไป และไม่ใช่พนักงานในภาครัฐ ทุกวันนี้ไม่ว่าเราหาข้อมูลความรู้อะไรก็ตาม เรามักจะชอบหาข้อมูลผ่านสื่อสังคมออนไลน์ หรือเรียกว่า Social Media ซึ่งการให้ความสำคัญกับ Social Media ที่มากเกินไป ทำให้ Hacker มีแรงจูงใจที่จะเข้าไปโจมตีให้ระบบคนอื่นมีปัญหา เพราะเขาจะมีเวทีเพื่อแสดงให้คนอื่นได้เห็นว่า สิ่งที่เขาทำสำเร็จมันเกิดความสำเร็จ เห็นได้ชัดว่าคนหันมาให้ความสนใจในเรื่องนี้ มีการแข่งขันโจมตี แข่งขันหาช่องโหว่ในระบบความปลอดภัย ประเด็นที่ 1 สิ่งที่น่าจับตามอง คือ Ransomware ซึ่งเป็นไวรัสชนิดหนึ่งที่ถูกออกแบบมาเพื่อทำการเรียกค่าไถ่ในการปลดล็อคไฟล์ โดยที่เป้าหมายของการทำไวรัสชนิดนี้ คือการเข้าถึงข้อมูลสำคัญภายในบริษัท ก่อนหน้านี้เป้าหมายอันดับ 1 ของการถูก Ransomware คือฝั่งอเมริกา แต่ปัจจุบันทิศทางของการถูก Ransomware กำลังเปลี่ยนไป คาดการณ์ว่าปีหน้า Ransomware จะทำการแพร่กระจายอย่างหนักไปยังฝั่งยุโรป แต่สิ่งที่น่ากลัวกว่าการโจมตี Ransomware นั่นคือการถูกโจมตีที่อยู่ในรูปแบบขู่กรรโชกจะเพิ่มมากขึ้น ประเด็นที่ 2 เป็นเรื่องของเหตุการณ์ที่เราคุ้นเคยกันอยู่แล้ว คือ IO ย่อมาจาก Information Operation ยุทธการทางข้อมูลข่าวสาร เป็นการสู้ด้วยข้อมูลข่าวสาร เพื่อสร้างความน่าเชื่อถือและสร้างกระแสความได้เปรียบมาอยู่ในฝ่ายตนเอง เป็นกระบวนการที่องค์กรใดองค์กรหนึ่งส่งข้อมูลที่อยากส่งไปให้ถึงปลายทาง หาทางวางแผนให้คนเชื่อว่าข้อมูลที่ส่งนั้นเป็นความจริง หรือทำให้สิ่งที่มีอยู่จริงนัั้นไม่เป็นจริง โดยผ่านกระบวนการ IO ซึ่งในอนาคตจะมีการรับจ้างทำ แทนที่หน่วยงานหรือองค์กรนั้น ๆ จะทำเอง ประเด็นที่ 3 Password-less ที่คุ้นเคยกันดี หลักการนี้ไม่ต้องใช้ Password ในการ Log-in แต่ใช้การ Scan QR-Code แทน แนวโน้มทิศทางการใช้ชีวิตในอนาคตก็จะเปลี่ยนแปลงไปอย่างสิ้นเชิง มือถือจะกลายเป็นชีวิตของพวกเรา จากเดิมที่ Hacker มุ่งโจมตีไปที่ Device สิ่งที่จะได้ก็จะได้แค่ข้อมูลที่อยู่ใน Device นั้น แต่ปัจจุบันการโจมตีจะมุ่งไปที่ Identity ถ้าเราได้ Identity นั้นมา เราก็จะสามารถยึดครองข้อมูลได้ทั้งหมด เพราะฉะนั้นการที่จะเข้ามาอยู่ในโลก IT หรือโลกของ Cyber เราทุกคนต้องระวังตัวกันให้มากขึ้น เพราะขณะที่ Hacker ก็ยังมีการปรับตัว มีลูกเล่นที่แพรวพราวมากขึ้น รูปแบบการโจมตีที่เปลี่ยนแปลงไป จาก Call Center เป็นการโจมตีรูปแบบใหม่ที่เป็นพัสดุ ซึ่งจะไม่มีทางรู้ได้เลย จนกว่าเราจะเปิดดู นอกจากนี้เรายังต้องเฝ้าระวังการโจมตีในระดับประเทศ จากปัญหาสงครามระหว่างยูเครนและรัสเซีย เนื่องจากรัสเซียได้เริ่มจู่โจมประเทศอื่น ๆ ผ่านการโจมตีทางไซเบอร์ สู่ประเทศในทวีปเอเชีย Cr. https://www.mandiant.com/…/mandiant-security-forecast…

MFEC

MFEC

Tags

IoT Security เมื่อภัยคุกคามไม่ได้อยู่แค่ในคอมพิวเตอร์

เบื้องต้นเรามาดูความหมายของแต่ละคำของ IoT หรือ Internet of Things โดยเริ่มที่– Internet หมายถึง ระบบเครือข่าย– Things หมายถึง อุปกรณ์ ดังนั้นหากแปลตรงตัว Internet of Things หมายถึง อุปกรณ์ที่สามารถเชื่อมต่อกับอินเตอร์เน็ต ซึ่ง IOT มีอยู่ในชีวิตประจำวันของเราทั่วไป เช่น ในด้านอุตสาหกรรม เครื่องจักรกลต่าง ๆ พอมีการประมวลผลก็ต้องมีการประมวลผลที่รวดเร็ว ดังนั้นการส่งข้อมูลจึงต้องทำผ่านระบบ IoT ด้านอุปกรณ์ภายในบ้าน เช่น กล้องวงจรปิดที่สามารถดูผ่านมือถือได้ก็ถือว่าเป็นอุปกรณ์ IoT เช่นกัน และด้านอุปกรณ์ภายในเมือง เช่น สัญญาณจราจร โดยจะใช้ระบบ IoT ในการนับจำนวนรถ เปลี่ยนสัญญาณไฟจราจรเพื่อลดการติดขัดของจราจร จากที่กล่าวมาอุปกรณ์ IoT ล้วนมีประโยชน์ต่อเรา แต่หากจะมองให้ลึกลงไปถึงด้านความปลอดภัย อุปกรณ์พวกนี้ถือเป็นทางผ่านชั้นดีให้กับพวกแฮกเกอร์ในการโจรกรรมข้อมูลหรืออื่น ๆ มีตัวอย่างเช่น 1. การโจมตีทางไซเบอร์ที่ประเทศสหรัฐอเมริกาโดยการใช้ Ransomware (การโจมตีทางไซเบอร์เพื่อเรียกค่าไถ่) โจมตีบริษัท Colonial Pipeline บริษัทท่อส่งน้ำมันไปทางตะวันออกเฉียงใต้ของสหรัฐอเมริกา ทำให้สหรัฐอเมริกาขาดแคลนน้ำมันในบางรัฐถึง 4 วัน มีการประกาศสถานการณ์ฉุกเฉินและสุดท้ายบริษัทต้องจ่ายค่าเสียหายรวม 4.4 ล้านเหรียญสหรัฐ 2. เหตุการณ์ต่อมามีการใช้อุปกรณ์ IoT เป็นช่องทางในการโจมตี เกิดขึ้นที่คาสิโนแห่งหนึ่งในสหรัฐอเมริกา โดยผู้ก่อเหตุดึงเอาข้อมูลผ่านทางแท็งก์น้ำในตู้ปลาของคาสิโน ซึ่งแฮกเกอร์ใช้อุปกรณ์ IoT ตัวนี้เป็นทางผ่านเพื่อเข้าถึงเครือข่ายและเอาข้อมูลรายชื่อลูกค้าของคาสิโน 3. อีกเหตุการณ์คือ Mirai ไวรัสที่สามารถฝังตัวในอุปกรณ์ IoT ได้ทำการโจมตีแบบ DDos (การโจมตีทางไซเบอร์ โดยการส่งคำขอเรียก เว็บไซต์หรือบริการทางคอมพิวเตอร์พร้อม ๆ กัน ทำให้บริการนั้นไม่สามารถใช้งานได้ในระยะเวลาหนึ่ง) ไปที่ระบบ DNS (ระบบแปลงชื่อเว็บไซต์ในบราวเซอร์) โดยเหตุการณ์นี้ทำให้ผู้ใช้งานส่วนหนึ่งไม่สามารถใช้งานเว็บไซต์ได้ในระยะเวลาหนึ่ง 4. อีกเหตุการณ์ที่เกิดขึ้นในประเทศไทยเมื่อปี 2554 มีการแฮกกล้องวงจรปิดเรือนจำ และนำภาพจากกล้องมาสตรีมมิ่งแบบออนไลน์ ซึ่งส่งผลกระทบต่อความปลอดภัยของเรื่อนจำ และผู้ต้องขัง ในบ้านทั่วไปก็มีเหตุการณ์นำภาพจากกล้องวงจรปิดในบ้าน มาเผยแพร่สู่สาธารณะเช่นกัน 5. กลับมาที่ต่างประเทศ มีกลุ่มแฮกเกอร์กลุ่มหนึ่ง ได้แฮกระบบของรถยี่ห้อหนึ่งจนทำให้ระบบเบรกรถยนต์ไม่สามารถทำงานได้ จน FBI ได้ออกมาเตือนว่าเป็นช่องโหว่ของระบบ รวมถึงรถยนต์อย่าง Tesla จากการทำงานในระบบที่สามารถควบคุมได้ผ่านทางระยะไกลการเปิดปิดรถยนต์ผ่านระบบ Raspberry Pi ได้ เป็นต้น โดยทั้งหมดนี้เพราะ IoT เป็นอุปกรณ์ที่สามารถควบคุมได้จากระยะไกล และด้วยขนาดที่เล็กจนทำให้ความปลอดภัยในตัวของอุปกรณ์ไม่สูง จึงเป็นช่องโหว่ในการโจมตีได้อย่างง่ายดาย เราสามารถป้องกันได้โดยเริ่มจาก หาจุดการติดตั้งอุปกรณ์ IoT ทำการเช็กว่าติดจุดไหนจะมีความเหมาะสมมากที่สุด การออกแบบระบบไม่ให้สามารถเข้าถึงตัวระบบจากระยะไกลได้โดยตรง อาจจะทำให้ระบบต้องมาผ่านทาง Cloud ต่อด้วย Security ก่อนที่จะผ่าน Gateway เป็นต้น สุดท้ายนี้อยากฝากไว้ว่าเราไม่สามารถรักษาความปลอดภัยจากอุปกรณ์ IoT ได้ 100 % แต่เราสามารถตระหนักรู้ในเรื่องของอุปกรณ์ IoT และ Cyber Security ต่าง ๆ ก็จะสามารถลดความเสี่ยงของการใช้อุปกรณ์อิเล็กโทรนิกส์ที่เชื่อมต่อกับระบบ IoT ได้เช่นกัน

MFEC

MFEC

Tags

Future of Robot and AI in IT

ในปัจจุบัน Robot และ AI ก็เริ่มเป็นที่รู้จักมากขึ้น หลาย ๆ มหาวิทยาลัยเริ่มมีหลักสูตรที่เกี่ยวข้องกับ Robot เข้ามา เมื่อก่อน Robot อาจจะมีแค่แบบแขนกลที่ใช้ทำงานตามโรงงาน มีเซนเซอร์ทำงานปกติ แต่ปัจจุบันนี้ Robot เปลี่ยนไปซึ่งมีทั้ง Robot ที่เป็นโดรนมีเซนเซอร์ เอาไว้ช่วยเรื่องการเกษตร, Robot ส่งยาตามโรงพยาบาล หรือ Robot ร้านอาหารตามห้าง ซึ่งเราเรียก Robot พวกนี้ว่า RPA (Robotics Process Automation) โดย Robot ประเภทนี้เหมือน Virtual Worker ตัวหนึ่งที่มี Process ในตัวเอง สามารถทำงานเหมือนมนุษย์เราได้แค่ไร้ตัวตน แต่เมื่อเราสอน Bot ให้มีสมอง เช่น เมื่อเจอเหตุการณ์แบบนี้ให้ Bot ทำแบบนี้ พวกนี้จะเรียกว่า AI ซึ่งส่วนใหญ่ Robot แบบนี้ จะใช้ทำงานด้านเอกสาร และบัญชีซึ่งเกี่ยวข้องกับ Machine Learning Robot RPA พวกนี้สามารถทำได้เกือบหมดทุกอย่าง ไม่ว่าจะเป็น Robot ที่มีแขนเสมือนกับมนุษย์ มีตาหรือจอที่ดูว่าต้องทำอะไรบ้าง แต่ในปัจจุบันพวกมันไม่ได้มีแค่มือกับตา แต่ยังมี “สมอง” ด้วย ในอดีตเราจะต้องมี Logic Programmingให้ตัว Robot ทำงานได้ แต่ในปัจจุบันเรามีการสอน Bot ให้มีสมองเหมือนคน ทำให้ Robot รู้ว่าถ้าเจอเหตุการณ์แบบนี้ต้องทำแบบไหน สิ่งที่ถูกเพิ่มเติมเข้ามาให้เป็นสมองของ Robot นี้เรียกว่า AI ที่มาทำงานร่วมกับ Robot ต่าง ๆ ซึ่ง AI ส่วนใหญ่จะถูกใช้ในเรื่องงานเอกสาร เนื่องจากเอกสารบางอย่างต้องใช้คนในการดูเอกสาร และวิเคราะห์เอกสารว่าเป็นอย่างไร ลักษณะ Robot พวกนี้เราจะใช้เทคนิค Machine Learning ในการทำพวก Model และสอนตัว Robot ให้ทำงาน และเข้ามามีบทบาทมากขึ้นในปัจจุบัน แทบทุกบริษัทมี Robot แบบนี้ใช้งานอยู่ แล้ว Robot ทำงานกันอย่างไร? ตัวอย่างเช่น เราต้องการหาของบางอย่างใน E-Commerce Platform ของเรา เพื่อมาทำสต๊อกร้าน ของเดิมเราอาจจะต้องจ้างคน 5-10 คนในการเก็บข้อมูล เช่น ถ้าอยากได้รายละเอียดของเมาส์ยี่ห้อหนึ่ง ก็จะต้องลิสต์รายการต่าง ๆ ของยี่ห้อนั้นออกมา แต่ว่าถ้าเป็น Robot ประเภท RPA สิ่งที่เราต้องทำก็คือ เราแค่สอนให้ Bot รู้ว่าต้องกดตรงไหน คลิกอะไร คลิกเสร็จ Bot ก็จะช่วยเก็บข้อมูลต่าง ๆ เหล่านี้ให้ ลักษณะการทำงาน E-Commerce Robot RPA ก็จะสามารถทำงานแทนคนได้ และมีหน้าที่เก็บข้อมูล เราสามารถสอน Bot ให้ทำตามในสิ่งที่เราอยากทำ วิธีการก็ง่ายดายคล้าย ๆ การ Drag

MFEC

MFEC

Tags

Multi-Platform APIM ด้วย Apigee Hybrid&Anthos

หากพูดถึง API คุณรู้ไหมว่ามันคืออะไร? API ย่อมากจาก Application Programming Interface คือการเชื่อมต่อระหว่างระบบหนึ่งไปยังอีกระบบหนึ่ง ยกตัวอย่างเช่น โรงพยาบาลหนึ่งต้องการใช้ข้อมูลจากบริษัทประกันเพื่อต้องการที่จะรู้ว่าคนไข้ที่มารักษาที่โรงพยาบาลแห่งนี้ทำประกันกับบริษัทนี้จริงหรือไม่ก็ใช้ API ในการเชื่อมต่อเพื่อตรวจสอบข้อมูล ทำไมถึงต้องมี API? ในยุคปัจจุบันการทำงานระหว่างแอปพลิเคชันหรือแม้แต่ภายในแอปพลิเคชันก็มี API เป็นส่วนประกอบ เพราะฉะนั้นประโยชน์แรกของ API เลยก็คือใช้เป็นตัวเชื่อมต่อระหว่างแอปพลิเคชันเรียกว่า Point of Integration ถัดไปคือแอปพลิเคชันแบบเก่า ๆ ที่เราอาจจะเคยเรียนมาเป็นแบบ standalone หรือ web application เราก็เปลี่ยนมาเป็นรูปแบบของ front-end และ back-end ที่มี API คั่นกลาง ซึ่งเราเรียกว่าการทำ Application Modernization เรียกว่าการเขียนใหม่หรือปรับปรุงใหม่เราก็ใช้ API ทั้งนั้น พอมี API เกิดขึ้นในแอปพลิเคชันแล้ว ถัดมาจึงทำให้เกิดการแชร์กันระหว่างแอปพลิเคชันพอ build up ขึ้นมาจะทำให้เกิด Ecosystems Ecosystems เป็นการเชื่อมต่อระหว่างแอปพลิเคชันหลาย ๆ แอปพลิเคชันหรือเป็นการเชื่อมต่อกันหลาย ๆ องค์กร โดยทั่วไปจะทำให้เกิดการ Transform ไปถึง Business Model ซึ่งมีการร่วมมือกันทางธุรกิจเกิดจากการแลกเปลี่ยน API ยกตัวอย่างเช่น ถ้าเราเปิด Facebook สิ่งที่จะขึ้นเป็นอย่างแรกเลยก็คือบาร์สีฟ้า ซึ่งก็คือโครงสร้างของเว็บไซต์จะขึ้นก่อนส่วนที่ขึ้นตามมาทีหลังก็คือ content ต่าง ๆ ที่ขึ้นกันตามไทม์ไลน์ซึ่งก็คือการเรียกแต่ละ API สำหรับการดึงข้อมูลของ content แต่ละส่วนบนหน้าจอ API ทำให้เกิดสิ่งที่เรียกว่า Ecosystems ล้อมรอบ API ตามทฤษฎีของ Ecosystems แบ่งเป็น 4 ระดับ 1. Internal Ecosystems คือ แอปพลิเคชันข้างในใช้กันเองหรือในองค์กรด้วยกันเอง 2. Partner Ecosystems คือ ธุรกิจเชื่อมต่อกันเป็นพาร์ทเนอร์แล้วเรียก API ข้ามกัน 3. Industry Ecosystems เช่น ในอุตสาหกรรมแบงก์หรืออุตสาหกรรมโรงพยาบาลอาจจะมีการแลกเปลี่ยนข้อมูลเชิงธุรกิจในอุตสหากรรมเดียวกัน 4. Public Ecosystem บางองค์กรจะมี Open API สำหรับให้คนทั่วไปดูว่าทางองค์กรมีข้อมูลอะไรบ้างให้เรียกใช้และมี API key อะไรบ้าง ยกตัวอย่างเช่น บริษัทน้ำมันมี API ให้คนทั่วไปเช็กราคาน้ำมันได้ หรือบริษัทการเงินมี API ให้คนเรียกดูอัตราแลกเปลี่ยนเงินระหว่างประเทศได้ ถ้าหากเรามอง API เป็นสินค้าหนึ่งเรามาสามารถทำ API ของเราได้เพื่อหาเงินจาก API ที่เราสร้างขึ้นข้อมูลที่เราแชร์ออกไปอาจแชร์จากข้อมูล CRM Data ของตนเองหรือไปดึงข้อมูลจากคนที่แชร์ API ที่เป็นพาร์ทเนอร์ของเราก็ได้เช่นกัน ซึ่งต้องมีการกำหนดว่าใครสามารถใช้ API ได้มากน้อยแค่ไหนก็ต้องมี API management API management จะช่วยจัดการกรุ๊ป API ออกมาเป็นกลุ่มว่าสินค้าแต่ละกลุ่มเป็น API เกี่ยวกับอะไร ขั้นตอนในการ build up API

MFEC

MFEC

Tags

SQLite ฐานข้อมูลขนาดเล็กที่ศักยภาพมากกว่าที่คิด

ทุกวันนี้ระบบฐานข้อมูลนั้นสื่อสารกันด้วยภาษาคิวรีอย่าง SQL เป็นมาตรฐาน ระบบงานขนาดใหญ่ล้วนมีเบื้องหลังเป็นฐานข้อมูลที่มีความสามารถสูง ระบบฐานข้อมูลที่แยกออกจากแอปพลิเคชั่นทำให้การปรับปรุงประสิทธิภาพทำได้ง่ายขึ้น ระบบที่มีการคิวรีข้อมูลซับซ้อนมีคลัสเตอร์ระบบฐานข้อมูลขนาดใหญ่กว่าเซิร์ฟเวอร์แอปพลิเคชั่นก็ไม่ใช่เรื่องแปลกแต่อย่างใด แต่งานอีกประเภทหนึ่งที่ SQL กำลังได้รับความนิยมอย่างสูงคือระบบฐานข้อมูลขนาดเล็กๆ ที่เก็บข้อมูลไว้ในแอปพลิเคชั่นต่างๆ โดยระบบฐานข้อมูลที่ได้รับความนิยมที่สุดในกลุ่มนี้คือ SQLite SQLite เป็นระบบฐานข้อมูลที่พัฒนาด้วยภาษา C และมีแนวทางการใช้งานที่ไม่ต้องแยกระหว่างระบบฐานข้อมูลออกจากตัวแอปพลิเคชั่น ทำให้ไม่ต้องเปิดพอร์ตเน็ตเวิร์คเพื่อเชื่อมต่อเข้าฐานข้อมูลแต่อย่างใด แต่ทำงานเหมือนการเปิดไฟล์ธรรมดา เพียงแค่คำสั่งอ่านและเขียนไฟล์นั้นจะกลายเป็นการคิวรีด้วยภาษา SQL นอกจากลักษณะการทำงานที่เฉพาะตัวของ SQLite แล้ว ตัวโครงการเองยังมีความพิเศษคือผู้พัฒนามอบโค้ดให้เป็นสมบัติสาธารณะ (public domain) ทำให้การนำโค้ด SQLite ไปใช้งานนั้นสามารถใช้งานได้อย่างอิสระเต็มที่ ไม่ว่าจะเป็นการผสมโค้ดของ SQLite เข้าไปในโครงการซอฟต์แวร์อื่นๆ หรือการปรับปรุงดัดแปลงที่สามารถทำได้อย่างอิสระ ทุกวันนี้เราแทบจะพูดได้ว่าสมาร์ตโฟนทุกเครื่องในโลกจะมี SQLite ทำงานอยู่ภายใน คุณสมบัติสำคัญอย่างหนึ่งของ SQLite ที่เราใช้งานเป็นไฟล์ คือ ตัวไฟล์ฟอร์แมตที่ใช้เก็บข้อมูลนั้นเสถียรอย่างมาก ทีมงานระบุว่าจะพยายามรักษาให้ไฟล์ฟอร์แมตเสถียรไปถึงปี 2050 ทำให้ไฟล์ที่สร้างในวันนี้สามารถใช้งานได้ในอนาคต จนทำให้หอสมุดรัฐสภาสหรัฐฯ แนะนำให้ใช้ไฟล์ฟอร์แมตของ SQLite เป็นไฟล์เพื่อการเก็บรักษาชุดข้อมูลในระยะยาว เช่นเดียวกับฟอร์แมตอื่นๆ ที่อ่านได้ง่ายกว่า เช่น CSV, TSV Curate by วสันต์ ลิ่วลมไพศาล CTO, MFEC

MFEC

MFEC

Tags

สิ่งเล็ก ๆ ที่ถูกมองข้ามไปในการพัฒนา Software

การที่จะพัฒนาซอฟต์แวร์หรือว่าการสร้างสรรค์ชิ้นงานขึ้นมา หน้าที่หลักของนักพัฒนาซอฟต์แวร์ก็จะเป็นเรื่องของการรับ Input เพื่อนำไป Process ตาม Requirements ที่มีอยู่เพื่อให้ได้ Output ออกมา ซึ่งสิ่งที่ควรคำนึงถึงนั่นก็คือช่วงที่มีการรับ Input จากมุมมองของคนทำงานด้าน Security “การตรวจสอบ Input ยิ่งถูกตรวจสอบน้อย ยิ่งเป็นเหมือนสนามเด็กเล่นของ Hacker” เพราะการไม่ตรวจสอบ Input มักจะทำให้เกิดปัญหาด้าน Security ตามมา ปัญหาที่พบได้บ่อย เช่น SQL Injection, Cross-site Scripting (XSS) และอื่น ๆ ทำให้สิ่งเล็ก ๆ อย่างเรื่องแรกที่อยากให้นักพัฒนาเว็บไซต์คำนึงถึงคือการตรวจสอบ Input ที่รับเข้ามา จะทำให้ลดความเสี่ยงไปได้เป็นอย่างมาก ปัญหาต่อมาคือเรื่องของการตรวจสอบสิทธิ์โดยไม่ได้รับอนุญาตที่มากเพียงพอ ตัวอย่างเช่น มีคนกรอก Username และ Password เข้ามา ตรงนี้จะถือเป็นเพียงการตรวจสอบว่าคนที่ทราบ Username และ Password แต่ไม่ได้มีการตรวจสอบสิทธิ์การเข้าถึงของเขา ดังนั้นจึงอยากให้ตระหนักว่าระหว่างที่เรากำลังพัฒนาซอฟต์แวร์ ก็ควรวางแผนในเรื่องของการทำ Authorization ให้ละเอียดมากพอ โดยเฉพาะอย่างยิ่งในปัจจุบันที่เรื่องของ Privacy เป็นเรื่องที่สำคัญมาก ปัจจุบันมีผู้ใช้งานซอฟต์แวร์หรือเว็บไซต์ต่าง ๆ เพิ่มขึ้นอย่างรวดเร็วผู้พัฒนาซอฟต์แวร์จะต้องมีการเตรียมรับมือ สำหรับการรองรับ Workload มหาศาลที่จะเข้ามา วิธีการรับมือกับสถานการณ์แบบนี้ทำได้ใน 2 มุม แบบแรก Scale up เป็นการขยายความสามารถของระบบโดยการเพิ่ม CPU เพิ่ม Memory เข้าไปให้รองรับ workload ได้ อีกวิธีจะเรียกว่า Scale out เป็นการขยายจำนวนระบบให้มีหลายเครื่องมากขึ้น ซึ่งแต่ละเครื่องก็จะทำงานสอดคล้องกัน ก็เป็นอีกวิธีที่ทำให้รองรับ workload ที่เพิ่มขึ้นได้ แต่บางครั้ง Scale out ก็ไม่ได้ดีกว่า Scale up ในกรณีที่ผู้ใช้ไม่ได้มีจำนวนมาก และมีจำนวนคงที่ ก็จะไม่จำเป็นต้องทำ Application ให้พร้อมกับ Scale out ในการพัฒนาระบบการคำนึงถึงการใช้ทรัพยากรก็เป็นเรื่องสำคัญ และมีบางปัจจัยที่อาจจะถูกมองข้ามเช่น Time Consuming การสิ้นเปลืองเวลาไปกับการขอข้อมูลจากคนนอกองค์กร จะต้องมีวิธีการจัดการอย่างไร? เรื่องของการเขียน Process ต้องมีการคำนึงถึง Algorithms ที่เลือกใช้พื้นที่ของ CPU ที่มีอยู่อย่างจำกัด และเรื่องของการใช้ Bandwidth Network บ่อยครั้งที่นึกอะไรไม่ออก Query อะไรมาได้ ก็จะขนส่งไปที่ฝั่ง Client ก่อน ส่งข้อมูลจำนวนมากเกินไป และให้ฝั่ง UX/UI ทำหน้าที่ในการเลือกใช้เองอยากให้ผู้พัฒนาซอฟต์แวร์สนใจเรื่องพวกนี้มากขึ้น หากพูดถึงปัญหาเรื่องการพัฒนาซอฟต์แวร์สำหรับขนาดหน้าจอที่แตกต่างกัน ต้องออกแบบการแสดงผลในหลายรูปแบบ ปัญหาเรื่อง Browser Compatibility ก็เป็นสิ่งสำคัญ ความแตกต่างของเว็บไซต์ เช่น Firefox, Safari, Microsoft edge, Google Chrome, และ Opera ดังนั้นนักพัฒนาจึงต้องเตรียมความพร้อมในการรับมือกับอุปกรณ์ และแพลตฟอร์มที่หลากหลายขึ้นด้วย สิ่งสำคัญที่ต้องคอยสังเกตนั่นก็คือเรื่องของ 3 A ได้แก่ 1. Authentication การพิสูจน์สิ่งใด ๆ

MFEC

MFEC

Tags

สำรวจโลก Open Source ในยุค DevOps

การที่เราจะเลือก Software สิ่งที่เราควรคำนึงคือ Open Source ทุกตัวไม่ได้เท่ากัน ประการแรกที่เราควรมอง คือ ความนิยม เช่น จำนวนดาวใน GitHub ที่เวลาใครเข้าไปดูโครงการ Open Source ต่าง ๆ ก็จะมีจำนวนดาวให้ดู แล้วปริมาณดาวบ่งบอกอะไร ? ปริมาณดาวจะบ่งบอกถึงความสนใจของชุมชนโดยรวมต่อโครงการนั้น ๆ ซึ่งหากมีคนกดดาวเยอะก็แปลว่าอาจมีคนสนใจหรือใช้งานโครงการนั้น ๆ จำนวนมาก แต่ปัญหาอย่างหนึ่งคือ จำนวนดาวของ GitHub เป็นสิ่งที่จะสะสมไปเรื่อย ๆ เพราะฉะนั้นหมายความว่า บางโครงการอาจจะเคยดังเมื่อนานมาแล้ว ตอนเปิดตัวบริษัทอาจจะไม่มีคู่แข่งจึงทำให้มีผู้ที่เข้ามาใช้บริการจำนวนมาก แต่เมื่อเวลาผ่านไปเริ่มมีคู่แข่งเพิ่มมากขึ้น ทำให้โครงการนั้น ๆ มีผู้ใช้บริการที่น้อยลงส่งผลให้ในบางกรณีดาวก็ไม่สามารถวัดผลได้ แต่การใช้งานดาวนี้ก็เป็นที่ยอมรับในระดับเบื้องต้น เช่น CNCF ที่เป็นองค์กรดูแลโครงการต่าง ๆ เกี่ยวกับ Kubernetes นั้นมีเกณฑ์ว่าโครงการที่จะเข้าสู่แผนภาพ landscape ของ CNCF จะต้องมีดาวบน GitHub อย่างน้อย 300 ดาว ปัจจัยที่สองที่เราสามารถพิจารณาโครงการ Open Source ได้ คือ รูปแบบการอนุญาตใช้งาน แม้โครงการจะเป็น Open Source เหมือนกัน แต่แต่ละโครงการก็มีรูปแบบการอนุญาตที่แตกต่างกันออกไป บางโครงการอาจจะเปิด Source ไว้ให้ตรวจสอบเท่านั้นแต่ไม่อนุญาตให้ใช้งานเลย ซึ่งบางนิยามก็จะไม่เรียกโครงการเหล่านี้ว่าเป็น Open Source ขณะที่บางโครงการอาจจะมีข้อจำกัดบ้าง เช่น บังคับว่าผู้ที่นำ Software ไปแก้ไข ต้องเปิด Software ออกมาเป็น Open Source ด้วย หรือบางโครงการก็ขอเพียงให้เครดิตผู้พัฒนาเท่านั้น ปัจจัยที่สามคือรูปแบบการพัฒนาโครงการ แม้หลายโครงการจะมีความนิยมสูง และเปิดให้ใช้งานได้อิสระเพียงพอ แต่รูปแบบการพัฒนาอาจจะผูกกับบุคคลหรือองค์กรใดองค์กรหนึ่ง ซึ่งก็จะมีความเสี่ยง เช่น บริษัทมีแนวทางการทำธุรกิจที่เปลี่ยนไป ทำให้อาจจะหยุดพัฒนาบางฟีเจอร์ หรือเลิกพัฒนา Software เป็น Open Source ไปเลยก็มี หรือบางครั้งเจ้าของโครงการอาจจะไม่มีเวลามาดูแลโครงการแล้ว ทำให้หยุดพัฒนาไปเสียเฉย ๆ โครงการ Open Source ที่มีความแข็งแกร่ง (mature) มักจะดำเนินการในลักษณะชุมชนร่วมกันตัดสินใจอย่างเปิดเผย เช่น CNCF นั้นระบุว่าโครงการที่จะอยู่ในระดับ Graduated ต้องมีองค์กรร่วมกันดูแลอย่างน้อยสององค์กร

MFEC

MFEC

Tags

EP.4 ระบบ APIGee

ระบบ APIGee เดิมอยู่บนระบบ Cloud และให้บริการในรูปแบบ Software as a Service (SaaS) ซึ่งมีการรับประกันประสิทธิภาพการคงอยู่ของระบบ และการให้บริการได้อย่างต่อเนื่อง ตามเงื่อนไขบริการ (Service Level Agreement) คราวนี้ APIGee Hybrid จากเดิมอยู่บนระบบ Cloud มาอยู่ ณ On-premise ทำอย่างไร ที่จะรักษาคุณสมบัติเดิมทั้ง features และการรับประกันประสิทธิภาพของบริการ ให้เทียบเท่ากับการให้บริการบนระบบ Cloud การจะรักษาคุณสมบัติที่ใกล้เคียงไว้ได้ จำเป็นจะต้องมีระบบโครงสร้างพื้นฐานและรากฐานเดียวกันกับ Cloud นั่นเอง ทางเจ้าของผลิตภัณฑ์จึงต้องออกแบบระบบโครงสร้างพื้นฐาน (Infra Platform) ให้สามารถนำมาติดตั้ง ใช้งานบน On-premise ได้ อย่างสะดวกต่อคนสาย IT อย่างเรามากที่สุด เพราะสร้างเสร็จ ต้องดูแลระบบดังกล่าวต่อ (Operation routine) ที่สุด Infra platform ที่ว่า ก็ออกมาในชื่อ “Anthos” (แอน-ทอส) โดยเป็นการต่อยอด จาก “Kubernetes” ที่พวกเราคุ้นเคย เรียกว่าเป็นกลุ่ม Cluster management ที่ต่อยอดและออกแบบมาเพื่อให้สามารถติดตั้ง ได้ทุกที่ทั้ง On-premise, On-Cloud ต่าง ๆ ครอบคลุม brands หลัก ๆ และจะค่อย ๆ ครอบคลุมในทุก brands ต่อไปครับ #รูปที่ผมเขียนนี้ เพื่อเป็นตัวเปรียบเปรยการทำหน้าที่ของ APIGee Hybrid กับหน้าที่ของ Anthos ครับAPIGee ทำหน้าที่ของตัวเองได้อย่าง เต็มประสิทธิภาพ ตามที่ได้เขียนไว้ใน EP ก่อนหน้าครับ และที่เห็นเป็น สามเหลี่ยม สี ๆ นั้น คือ “Anthos” ครับเพื่อน ๆ ทำหน้าที่จัดการทุกอย่างอยู่เบื้องหลัง เหมือนเป็นโครงสร้างบ้าน ที่คอยจัดการน้ำหนักทีเพิ่มขึ้นของตัวบ้าน การขยายตัว การคงสภาวะของตัวบ้าน ให้ผู้อาศัยใช้งานได้อย่างปรกติที่สุด Anthos มีความสามารถที่ต่อยอดจาก Cluster management เพิ่มความสามารถในการสะดวกสร้าง เหมือนบะหมี่กึ่งสำเร็จรูปรส #Anthos ที่หากเข้าใจการเติมน้ำร้อน รู้อุณหภูมิ และเวลาที่เหมาะสม ก็จะได้ Anthos พร้อมรับประทาน และวัตถุสี ๆ ที่อยู่ล้อมรอบ นั้น ก็เป็นเสมือน เครื่องเคียงต่าง ๆ ที่ หากต้องการใช้ ก็สามารถนำมาใช้งานร่วมกันได้ เช่น การจัดการแบบรวมศูนย์ การติดตั้งและสื่อสาร ระหว่าง Anthos ณ ที่ต่างๆ (on-premise, on-cloud) ตัวควบคุมการให้บริการ (Anthos Service Mesh) จากหัวเรื่องของ EP นี้ที่ทำให้ APIGee Hybrid ดูคงสภาวะให้บริการได้อย่างต่อเนื่อง และเพิ่มลด ประสิทธิภาพ ในการให้บริการ ได้ตามความต้องการ (Scalability) เหล่านี้ เพราะตัวรากฐานมีความสามารถ

MFEC

MFEC

Tags

EP.3 เจาะลึก API Hybrid

รูปนี้คือความสามารถที่ APIGee มีครับ สื่อภาพออกมาเหมือนพื้นที่บ้าน(บริษัท) ที่มีการจัดวางสัดส่วนใช้สอยและสิทธิ์การเข้าถึงในพื้นที่ต่าง ๆ เริ่มตั้งแต่จุดเข้าของ ผู้ใช้งาน (User, Partner) ที่จะเข้ามาใช้คุณสมบัติต่างๆ ของ “Core Engine” ผ่าน การออกแบบของ “Design API” ควบคุมความปลอดภัย เงื่อนไขข้อกำหนดต่าง ๆ โดย “Secure API” เพื่อผ่านเงื่อนไขจะเข้ามาพูดคุยกับผู้บริการ (API ที่เราเปิด Publish) โดยนับตั้งแต่ผู้ใช้งานก้าวเข้ามาในพื้นที่จะมีการติดตามดูแลเพื่อวิเคราะห์พฤติกรรม ประสิทธิภาพการให้บริการโดย “Analysis API” และ “Monitor API” จากนั้น หากเป็นการให้บริการแบบมีเงื่อนไข ค่าใช้จ่าย จะมีส่วนงาน ที่คอยควบคุมการคิดเงิน การให้เข้าถึงตามสิทธิ์ที่ได้ตกลงกันไว้ โดย “Monetize API” ประมาณว่าคนนี้ VIP ก็แบบ บริการรวดเร็วทันใจไวเว่อร์ แต่หากเป็นผู้ใช้ทั่วไปอย่างผม ก็เข้าคิวรอเรียกรับบริการ API ตามหน้างานไป แบบนี้ครับ จากรูปนี้จะเห็นว่าบริษัทนี้เป็นบริษัทที่มี “Core Engine” (I) หลากหลาย เนื่องด้วยความเติบโตจากความต้องการของตลาดโดยแต่ละ “Core Engine” ต้องเร็ว ต้องทันตลาด จึงมีการพัฒนาแบบแยกส่วน ต่างต้องเสร็จ ให้รองรับ Business direction ที่กำกับลงมา ดังนั้น “Core Engine” จึงแยกกันเติบโต และ โดดเดี่ยว (โห..ดูเหงา แต่เรื่องจริงครับ) คำว่าแยกกัน จึงทำให้การสื่อสารระหว่างกันนั้นมีได้เพียงการสื่อสารผ่าน การเขียนถึงกัน (File) และจะคุยกันได้เป็นรอบ ๆ (Batch) จึงทำให้ แต่ละระบบ ต้องมานัดกันว่า จะมีการ สรุปข้อมูลที่ต้องการ ในช่วงเวลาใด และ ต้องปิดระบบ เพื่อมาเขียนไฟล์ ให้ข้อมูลคงที่อย่างไร มาถึงตรงนี้ หากเปรียบเทียบความเป็นจริงในงานผู้ดูแล (Product owner) หรือคนที่รู้เกี่ยวกับระบบตัวเองทุกระบบต้องมาคุยกันในช่วงเวลาที่เหมาะสมต่อการเขียน เพื่อสื่อสารแบบครบถ้วนเพราะบางระบบต้องหยุดเพื่อเขียนสรุป (ไม่อย่างนั้นจะเขียนข้อมูลใหม่ไปเรื่อยๆ เป็นต้น) จึงต้องมีการคุยรอบของการส่งข้อมูลระหว่างกันที่มีความละเอียดอ่อนและต้องระมัดระวัง ส่วนของการเปิดให้บุคคลภายนอก เช่น ผู้ใช้งานหรือลูกค้า (User, Client) คู่ค้า (Partner) ก็ยิ่งเป็นเรื่องยากเพราะการสื่อสารผ่านการเขียน (File) ใช้ไม่ได้ในทุกกรณี แต่กรณีในบ้าน พอกำหนดข้อตกลงบนข้อจำกัดได้ การเปิดให้บุคคลภายนอกได้เข้าใช้งานจะช่วยให้ธุรกิจก้าวกระโดดอย่างมากเนื่องจาก “Core Engine” เป็นระบบที่คู่ค้าสร้างเองไม่ได้หรือสร้างได้ก็ลงทุนมหาศาล แถมประสบการณ์ไม่เท่ากับคนที่อยู่ในสายธุรกิจนี้มายาวนาน การแลกเปลี่ยนความสามารถที่เกื้อกูลกัน ก็จะทำให้ธุรกิจเติบโตได้ดีและตอบโจทย์ความต้องการของปัจจุบันได้อย่างมาก การจะให้บุคคลภายนอกมาติดต่อโดยตรง ความปลอดภัยและการติดตามว่าใช้งานอะไร รวมถึงดูแลคุณภาพการให้บริการที่ดีเยี่ยมตามเงื่อนไขบริการ (SLA) เป็นสิ่งที่เติมเต็มให้กับระบบ “Core Engine” ได้ยาก เพราะการจะปรับปรุงพัฒนาอาจส่งผลกระทบหรือใช้ทั้งเวลาและเงินทุนมหาศาล ข้างต้นนั้น คือความวุ่นวายและความยากของระบบ “Core Engine” (หรือบางที่เรียก Legacy system) จากปัญหาเหล่านั้น ลูกค้ารายนี้เลือก APIGee ในรูปแบบ “APIGee Hybrid” เพื่อมาตอบโจทย์ทั้งการบริหารจัดการ/ให้บริการภายในและการให้บริการภายนอก โดยมีหลักการอย่างไรบ้าง มาติดตามกันต่อเลยครับ #Business understanding (เข้าใจภาพใหญ่ก่อนลงมือ)เนื่องจากระบบมีความหลากหลาย

MFEC

MFEC