มาแล้วจ้า ! Blog สรุปดีเทลทั้งหมดในงาน DevTips | borntoDev Meeting #2 ครั้งนี้จัดในธีม “The Future of Cyber Town” จัดเต็ม Speaker ด้าน Dev / Security / Data และ Game แบบจุก ๆ
บอกเลยว่านอกจากจัดเต็มในส่วน Speaker แล้ว ยังมีเรื่องความรู้ที่มาแบบเบิ้ม ๆ ให้เราได้รู้ในทุกสายแบบลงลึก ตั้งแต่ทำยังไงให้เราทำแอปได้แบบ Productive, ทำยังไงให้แอปเราสร้างได้ไว ๆ แบบไม่สนใจ Server, หากต้องการทำงานกับ Cloud ต้องรู้อะไรบ้าง, เริ่มเส้นทางด้าน Security ได้ยังไง, การทำเกมมีอะไรที่ต้องรู้ และ อะไรที่ใช้ได้กับทำแอป แต่ทำเกมมันไม่ Work
ตามมาด้วย ความเข้าใจของ DevOps ที่ไม่ใช่แค่ตำแหน่ง แต่เป็นการทำงานร่วมกัน สุดท้ายปิดท้ายกับ แอดทอย Data Rcokie ที่มาให้ทุกคนได้เข้าใจว่า “R กับ Python มันใช้ได้ด้วยกัน อยากให้เรารู้กันทั้งคู่ เรียนสองภาษากันไปเลยจ้า
เอาเป็นว่า ใครมาไม่ทัน แอดเปรมหละเสียดายจริงงง เพราะบรรยากาศในงานมันส์จัด ๆ มีอาหารให้ทาน กับ ขนมแบบจุก ๆ แต่ถ้าไม่ทันจริง ๆ ไปอ่านกันได้เลยคร้าบบบ 👨🏻💻
#หากใครอยากดูแบบไว ๆ จิ้มเมนูในนี้ได้เลยย !
- Session 1 : Super Productive with Amazing Tools for Developers
by Kittikorn Prasertsak (BorntoDev) - Session 2 : Develop, Test and Deploy Serverless Applications
by Sirasit Boonklang (BorntoDev) - Session 3 : Next Cloud Approach for Developer
by Visit Manupon (PROEN Any Cloud) - Session 4 : Pave Your Career Path to the Future of Cybersecurity
by Sarah Saran Hansakul, Chanachai Chaianekwut, Valunchai Janejirawat (Thai Cy Sec) - Session 5 : Big Difference Between Game Dev and Dev
by Keerati Tanakitjaroenpat (Runnex Technology) - Session 6 : TO BE DevOps
by Saritrat Jirakulphondchai (KubeOps Skills) - Session 7 : Beginning Data Science with R and Python
by Kasidis Satangmongkol (DataRockie)
เขียนโดย
Kittikorn Prasertsak (Prame)
Founder @ borntoDev
Session : 1 Super Productive with Amazing Tools for Developers
เปิด Session แรกเปิดโดยผมเองง ! เปรมบอร์นทูเดฟ มาแล้วคร้าบบบ !! โดยเรามาเริ่มกันกับการทำความเข้าใจก่อนว่า “มนุษย์กับความ Productive มันเป็นของคู่กัน” เพราะตั้งแต่ยุคหิน หรือ ยุคไหน เราก็พยายามสรรหาเครื่องมือใหม่ ๆ มาช่วยให้ชีวิตเราดีขึ้น
แน่นอนว่า คำว่าเครื่องมืออาจจะไม่ได้มีแค่ “เครื่องมือเป็นชิ้น ๆ ที่จับต้องได้อย่างเดียวนะ” แต่ยังมีเครื่องมือที่อยู่ใน “รูปแบบของกระบวนการ” เช่น Algorithm / Flowchart ต่าง ๆ ด้วย
ซึ่งเวลาที่เราจะแก้ไขปัญหาอะไรสักปัญหา โดยเฉพาะปัญหาด้านคอมพิวเตอร์ เช่น การกำหนดการทำงาน สิ่งที่เรามักจะทำคือ “การหา Pattern ของปัญหา เพื่อที่จะหาแนวทางแก้ไขที่ตรงไปตรงมา ให้ได้คำตอบที่ถูกต้อง”ซึ่งเจ้าสิ่งนี้เป็นสิ่งที่เราทำ ไม่ว่าจะเป็นโจทย์การเขียนโปรแกรมเบื้องต้น จนไปถึง โจทย์ของลูกค้าที่ให้เรามาเขียนแอป เขียนโปรแกรมนั่นเอง
แต่เอาจริง ๆ แล้ว Pattern เหล่านี้ล้วนอยู่ใน Code ที่เราเขียนกันทุกวันนี้นี่แหละ เราเลยสามารถมีเครื่องมือที่คอยช่วยเราเขียนโค้ดให้ง่ายขึ้นไปพร้อมกัน
ตัวแรกเริ่มจาก GitHub Copilot ที่ช่วยเราเขียนโค้ดใน Pattern ที่เกิดขึ้นซ้ำ ๆ ได้นั่นเอง จากตัวอย่างคือ ถ้าเราได้หน้าที่ต้องทำ JSON FILE ที่มี Pattern ใส่ประเทศ หมายเลขนำหน้า และ ชื่อย่อประเทศทั้งหมดเราอาจจะต้องพิมพ์เองทั้งหมด แต่ในเคสนี้เราแค่พิมพ์ตัวเริ่มต้น และ ต่อมาเขาก็จัดมาให้เราเองแบบอัตโนมัติเลย
นอกจากนี้ Copilot ยังช่วยหน้าที่หลักในการเขียน Code ไม่ว่าจะการบ้าน หรืออะไร ก็แก้ จัดการได้หมดด !
แต่มุมมองของการ Dev เราไม่ได้มีแค่การเขียน Code เพราะเรายังต้องมีการแก้ Bug ! ใช่แล้ว !! นอกจาก GitHub Copilot เรายังมีอีกสิ่งหนึ่งที่หลายคนอาจจะไม่เคยได้รู้จักนั่นก็คือ GitHub Copilot Labs นั่นเองงง
ใน Session วันนี้เราได้มีการโชว์ให้ดูแบบเต็ม ๆ เลยว่า Copilot Labs ทำอะไรได้บ้าง อย่างแรกที่ให้ทุกคนดูเลยคือการ Challenge ลองดูกันว่าในภาพนี้มี Bug อะไร
คำตอบคือเรามีการส่ง String เข้าไป ทั้ง ๆ ที่ต้องเป็นการเปรียบเทียบตัวเลขนั่นเอง และ วิธีแก้คือ “แค่คลิกลบ bug ครับทุกคนน” แค่นี้ก็ใช้งานได้แล้ว
ต่อมาเราลองสร้าง Error ใน code โดยการสลับตำแหน่งของตัว Operator จาก >= เป็น => นั่นเอง ก็ลองกดลบ bug ผ่าน Copilot Labs ก็สามารถใช้งานได้เลยย
Step ต่อมา เมื่อมี Bug ที่แก้เรียบร้อยฟีเจอร์ของ Copilot Labs ยังมีอีกเพียบให้ลอง โดยตัวนี้เราจะมาลองให้เจ้าเครื่องมือนี้ “ลองอธิบายโค้ดที่เราเขียนกัน”
โดยการอธิบายสามารถทำได้ทั้งภายในตัวโปรแกรม และ ใส่ไว้ตาม Code เป็นในรูปแบบ Comment ได้ด้วย และ ถ้าเราไม่ต้องการ Comment เยอะแยะ ผมก็ได้ลองกด Documents ปุ่มที่ช่วยให้เราสร้าง Docs ได้แบบง่าย ๆ ในหลักวินาทีเท่านั้น
ต่อจากนี้ยังมีการทำการโชว์ปุ่ม Readable หรือ ทำให้โค้ดเราอ่านง่ายขึ้น ! โดย GitHub Copilot Labs ก็ทำให้เราได้ อย่างตัวอย่างที่เปลี่ยนจากรูปภาพโค้ดสุดซ้ำซ้อนให้กลายเป็น loop ที่วนซ้ำนั่นเอง
Session 2 Build Test Deploy Serverless
อยากจะทำแอปเองแต่ไม่มีเวลา ปกติเราจะต้องทำ Server กันเอง แต่ถ้าเราอยากให้เร็วกว่านั้น อยากได้เวลานอน ทำยังไง Serverless นี่แหละคือคำตอบ มาอยู่กันกับ Session ของเอฟ borntoDev ถ้าถามว่าทำไมเราถึงต้องใช้ Serverless เพราะเวลาที่มี Workload หนัก เราสามารถจัดการเรื่องของการสเกลได้ง่ายยิ่งขึ้น
แล้ว Serverless แตกต่างกับแบบอื่นยังไง?
- ไม่ต้องเตรียมอุปกรณ์เอง
- ไม่ต้องจัดการเรื่องเวอร์ชันของ OS
- ไม่ต้องจัดการ Infrastructure เอง
โดยที่เราจะใช้กันในวันนี้คือ Azure Function นั่นเอง โดย Pricing หรือ ราคาค่อนข้างถูก โดยเมื่อเราทำการสร้างเรียบร้อย ก็ให้ทำการตั้งง Trigger ว่าให้ trigger เมื่อไหร่ และ เมื่อดำเนินการสร้างเรียบร้อยแล้ว จะมี Code และ Test พื้นฐานมาให้เราด้วย
สำหรับการ Test & Run จะเป็นการ test แบบเดียวกับ POSTMAN ได้เลย และ นอกจากนั้นยังมีตัวที่เป็น Timer Trigger ที่เป็น Trigger ในเรื่องของเวลา ที่ให้ทำงานทุก ๆ เท่านั้น เท่านี้วัน หรือ ชั่วโมงได้เลย และ มี Blob Container
ซึ่งใน Session วันนี้จะมีการโชว์ตัวอย่างการทำ Bookmark ผ่าน Azure Function ด้วยนะ การทำการเชื่อมต่อกับฐานข้อมูลจะต่อกับ Cosmos DB สำหรับการเชื่อมต่อ และ เพิ่ม Bookmark ไว้เรียบร้อย เราสามารถดูข้อมูลใน Data Explorer ได้
หลายคนอาจจะสงสัยว่าถ้าใช้ Azure น่าจะต้องทำบน Cloud เท่านั้น แต่ในวันนี้แอดเอฟได้ทำให้ Azure Function ทำงานบน Local ได้ด้วยนะ เมื่อเขียนเสร็จสามารถทดสอบผ่าน Localhost ได้เลย พอทดสอบเรียบร้อยค่อย Deploy ขึ้นไป
สำหรับการใช้งาน Azure Function จะใช้งานได้ฟรี 1 ล้าน Request / เดือน, Amazon จะได้เท่ากัน ส่วน Google Cloud จะมีให้ใช้ถึง 2 ล้าน Request / เดือน ที่มีการทำงานรูปแบบคล้าย ๆ กัน
Session 3 NEXT CLOUD 2022 – PROEN CORP
พี่โค้ช VP จาก PROEN Cloud Service ได้มาเล่าเรื่องประวัติความเป็นมา ประสบการณ์ที่ทำตั้งแต่วันแรกที่มาทำ PROEN ที่มี Rack Server กว่า 700 ตัว และ เรื่อง DDoS ที่ยิงกันแหลกในช่วงรัฐบาลอยากจะทำ Single Gateway ซึ่งต้องบอกว่าทาง PROEN เขารับงานใหญ่ทั้งในระดับประเทศ และ ในย่านนี้มาทำกันแบบเต็ม ๆ จริง ๆ
การเริ่มต้นเส้นทางของพี่โค้ช คือ การเป็น Network Engineer ตั้งแต่ปี 3 ที่เริ่มเรียนตอนแรกแล้วเหมือนว่ายากมาก ๆ ทำให้ได้ถอนวิชานั้นไป หลังจากนั้นได้ไปลองฝึกงานสาย Network Engineer เลยกลับมาได้ A ไปแบบปัง ๆ
และ เมื่อได้ทำการฝึกงานแล้วก็ได้รับโปรเจกต์ทำเขียนโปรแกรมเฉย เป็นระบบเปิด Ticket ต้องมาหาหนังสือทำเว็บบอร์ดด้วยตนเอง เพราะสมัยนั้นไม่มี StackOverflow และ นั่นก็คือโปรเจกต์แรก และ โปรเจกต์เดียวในชีวิตเลย
มาอยู่ในช่วง Technical กันบ้าง เช่น ปัญหาของเกมที่ Lag โดยปกติคนมักจะมาโทษทั้ง “เกมกาก Server ห่วย บลาๆ ๆ” ซึ่งช่วงเริ่มงานพี่โค้ชก็เริ่มดูแลในส่วนนี้ (Monitor ทั้งฟอรั่มออนไลน์ ทั้ง Ticket และ ที่ลูกค้าแคปๆ มาหา)
ว่าแต่ Roo cause หรือ สาเหตุของปัญหามันคืออะไร ? คำตอบคือเป็นการออกแบบ Buffer ในรูปแบบสมการคือ “Design ให้ง่าย + Operation ให้ง่าย = ได้เรื่อง Availability และ Performance” ทำยังไงให้ไม่โดนโทรปลุกตอนตีสองตีสาม
ถ้าสมัยก่อนจะมี Camfrog ที่มันชอบล่ม หรือ มีปัญหากันตอนกลางคืน ไม่ว่าจะเรื่องโดนยิง หรือ อะไรก็แล้วแต่ เลยใช้ Concept ในการทำงานตรงนี้มา และ เข้าสู่ในโลก DevOps Cloud
ซึ่งในวันนี้พี่โค้ชก็ได้มาโชว์ PROEN Cloud ที่สามารถปรับ CPU, RAM, Storage จนไปถึง Architect ของเราได้หมดในไม่กี่คลิกเลย โดยเราสามารถคลิกลาก reserved เพื่อบอกได้ว่า เราจะใช้เท่าไหร่ และ ตั้ง Scaling Limit ได้ว่าให้ขยายไปได้ถึงเท่าไหร่
ส่วนการ Horizontal Scaling ที่เป็นเสมือนการเพิ่มเครื่องก็สามารถคลิกเพิ่มจำนวนได้นั่นเอง
ต่อมาได้พูดถึง Cloud Networking ที่เป็นเสมือนการที่เวลาที่เราจะเข้า Internal App ถ้าเปิดไป Public ให้ใครเข้ามาก็ได้ เหมือนกับการที่ห้องนอนเราเป็นห้องกระจก พลิกตัว นอนดิ้นยังไงก็มีคนเห็น ถ้าจะลากสายมาก็จะไม่ได้อีกเพราะคงต้องใช้ต้นทุนสูงจัด ๆ เลยไปที่ท่า SDWAN นั่นเอง
ต่อมาเรื่องของ Network Security ที่พูดถึงเรื่องของ Zero Trust ที่เราจะรู้ได้อย่างไรว่าที่เราใช้มันปลอดภัย ที่เราทำมันปลอดภัยจริง ๆ หรือเปล่า ซึ่งในนี้ก็ได้มีการแนะนำตัว BLACK KITE ที่เป็น Third-Party Platform
ซึ่งเคยมีเคสที่เคยเกิดขึ้นจริงคือเว็บล่มเนื่องจากโดน DDoS ที่พยายามหาว่ามาจากจุดไหน ซึ่งตอนแรกก็แก้ไขได้เรียบร้อย แต่สุดท้ายมีการไปโจมตีจากภายนอก ตามหลัก Supply Chain Attack ที่อาจจะไม่ได้โจมตีเราตรง ๆ แล้วอ้อมไปโจมตี Partner หรือ Third Party แทน
โดยการใช้งาน Back Kite ก็ให้เราใส่ URL แล้วรอประมวลผลไป สุดท้ายเราจะได้ Score และ มูลค่าความเสี่ยง (Risk in Financial Terms) และ เรื่องของ Compliance ที่เป็นมาตรฐานการทำงาน ก็ตรวจสอบได้
และ สุดท้ายพี่โค้ชก็มีของแจกทั้งความร่วมมือกับมหาวิทยาลัย และ ให้ Cloud Credit Free อีกด้วย มาลองเล่นกันได้ที่หน้าเว็บได้เลยย
Session 4 : PAVE YOUT CAREER PATH TO THE FUTURE of Cyber Security
วันนี้นำโดยคุณซาร่าห์ และ คุณเคน ที่จะมาลุยกันในเรื่องของ Cyber Security ว่าในอนาคต เราจะต้องเตรียมอะไรเพื่อเข้าสู่เส้นทาง Cyber Security กันได้เลย โดยเริ่มจากการที่เราเขียนโปรแกรม ทำ Dev กันอยู่แล้ว ไม่ว่าจะเป็น Java, Python หรือ อะไรเหล่านี้ ก็ล้วนมาเขียน Script เพื่อทำงานด้าน Security ได้
มาอยู่ในตัวอย่างแรก กับ กรณี Web Application ที่เราไม่อยากให้ใครเข้ามา หรือ กรอกอะไรแปลก ๆ เข้ามา ลองเดา User และ Password ไปเรื่อย ๆ และ ยังมีการย้ำว่า ถ้าแต่ก่อน Cyber Security อาจจะคงแค่อุปกรณ์คอมพิวเตอร์ แต่ขอบเขตปัจจุบันครอบคลุมไปทุกอุปกรณ์ที่ต่อ IP และ ต้องการความปลอดภัยทั้งหมด ทั้งอุปกรณ์ IoT, Mobile App, Game จนไปถึง Data center
และ คุณเคน ก็ยังพูดถึงอาชีพสาย “Cyber Security” ว่าเป็นอาชีพสำหรับคนรักความตื่นเต้นตลอดเวลา เพราะวันหยุดหรืออะไรก็ต้องกลับมาทำจ้าา
เทรนด์ปัจจุบัน และ อนาคต Cyber Security จะไปอยู่ในส่วน Cloud Security, Container Security, DevSecOps / AppSec และ Data Security (GRC) ซึ่ง Cloud คือเป้าหมายที่ถูกตกเป็นเป้าหมายอันดับต้น ๆ ของการโจมตี
ต่อมาคุณเคนก็ได้บอกว่า ตามหลักความปลอดภัยเบื้องต้นคือ “การพยายามใช้ Managed Services ให้ได้มากที่สุด” ตัวอย่างเช่น มีบ้านหลังใหญ่ มีหลายประตู ความเสี่ยงก็จะเยอะ ถ้าใช้ Manage Services ก็เหมือน Platform จะเป็นคนดูแล คอยอัพเดต อุดช่องโหว่ต่าง ๆ ไว้ให้นั่นเอง
การทำงานในทีม Security ก็จะมีทีมย่อย ๆ เต็มไปหมด แต่แบ่งใหญ่ ๆ เป็น Blue กับ Red โดยทีม Blue จะมีหน้าที่ Deploy ก่อนขึ้นระบบ ฝั่ง Blue Team จะมี Dashboard ไว้ทำการ Monitor, อุปกรณ์ Firewall, และ Software คอยตรวจสอบการเข้าถึงช่องโหว่เต็มไปหมด ส่วนตัว Red จะทำการทดสอบหลังขึ้นระบบแล้วนั่นเอง เสมือนว่าเราเป็น Hacker จริง ๆ เลย นอกจากนั้นยังมีการพาไปรู้จักกับ CVE และ Zero Day
ต่อมาคุณซาร่าห์ได้พูดถึงว่า “ปัญหาที่ฝั่งไอทีเจอวันนี้คือการ Lay-off” และ เราจะ Lay-off อย่างไรให้ได้ประสิทธิภาพสูงสุด หมายถึง ระบบจะยังสามารถทำงานได้อยู่ คำตอบคือ “ใช้ Software AI Automation แทนคน” และ “ใช้ Outsource แทน หรือเรียกว่า เอาคนมาแทนคน”
ซึ่งอนาคตก็มาในเทรนด์การใช้ Managed Services Provider (MSP) มาใช้แทนการทำ In-house ในบริษัท ซึ่งเป็นเทรนด์ในการจ้างผู้เชี่ยวชาญเฉพาะเข้ามาได้เลย โดยลดค่าใช้จ่ายในการพัฒนาคนในองค์กร ให้คนเก่งทำไปเลย
นอกจากนี้คุณเคนก็ได้พูดถึงเรื่องการเริ่มทำงานที่โดยปกติคนทั่วไปมักโฟกัสที่เงิน แต่ที่จริงสำหรับการเริ่มต้นอาชีพคือ “การเรียนรู้” โดยนอกจากที่เรียนในมหาวิทยาลัยแล้ว ยังมีเวทีในการเรียนรู้เพื่ออัพสกิล อัพตัวเราได้ทั้งการ Competition, การสอบใบ Cert แต่โดยปกติ Cert มักจะไม่ฟรี ดังนั้นไปเน้นด้าน การแข่งขัน, เข้าอบรมอาจจะประหยัดค่าใช้จ่ายกว่า
ซึ่ง Step ต่อมาคือคำแนะนำในการเข้าไปอยู่ในบริษัทเฉพาะทางในด้าน Security เพื่อได้เรียนรู้งานด้าน Security แบบครบทุกรูปแบบ เวลาเราผ่านไป 3 ปี 4 ปี ก็จะได้เห็นเคสที่หลากหลาย
และ หลังจากนั้นก็อาจถึงเวลาที่เราจะต้องเลือกว่าจะเข้าไปสู่สาย Specialist หรือ Management ซึ่งจะมีการเก่งทั้งในรูปแบบเก่งคน และ เก่งงาน ซึ่งเราจะเลือกเป็นอันไหนก็ได้ แต่เมื่อเวลาผ่านไป ด้วยอายุของเราจะถูกบังคับให้กลายเป็นหัวหน้าทีม หรือ มีทักษะด้านการบริหารจัดการให้ได้อยู่ดี (เหตุการณ์นี้อาจเกิดหลังอายุ 30 เพราะ เราไม่สามารถ Coding หรือ ทำงานหน้างานได้ไม่เท่ากับเราตอนวัยรุ่นแล้ว)
ถ้าเราอยากเป็น “The best Developer” หนึ่งอย่างที่เราอาจจะต้องรู้เพิ่มเติมก็อาจจะเป็นเรื่องของ Security ไว้ด้วยนะ ถ้าเราจะอยู่รอด และ ไปได้ไกล ต้องพัฒนาสกิลต่อเนื่อง และ ต้องเกาะกับเทรนด์ตามกระแสที่อาจจะเกิดขึ้นในอนาคตอีกต่อไป ตลอดจนไปถึง Soft Skills ต่าง ๆ ทำให้กิ่งก้านของเราแข็งแรงเพิ่มขึ้นไปด้วย
Session 5 : Big Difference Between Game Dev and Dev
มาอยู่กับ Session ที่สองของช่วงบ่าย กับ คุณโต้ กีรติ ผู้ก่อตั้ง Runnex Technology ที่จะมาเล่าว่าการทำเกม กับ การทำ Software มีอะไรที่เหมือน หรือ แตกต่าง และ มี Practice อะไรบ้างที่ไม่ Work ใน การทำ Software Dev กับ Game Dev และ อุตสาหกรรมเกมในไทยเป็นยังไงกันบ้าง
มาเริ่มกันว่า ภายในทีม Dev ของ Game มีอะไรบ้าง .. ตั้งแต่ Game Dev, Backend Dev โดยปกติแล้วในฝั่งเกมมักจะไม่มี Backend Dev แยกออกมาของตัวเอง, Game Designer ที่ไม่ใช่แค่เรื่องกราฟิกสวย ๆ แต่เป็นเรื่องการออกแบบการทำงานภายในเกม เช่น การออกแบบ Level, การออกแบบโอกาสในการสุ่มในเกมต่าง ๆ ตลอดจนไปถึง UX/UI Designer, PM เป็นต้น
ต่อมาจะมาอยู่ในเรื่องของการแนะนำ Game Development Process ซึ่งความยากคือ “เราจะไม่รู้ว่าเมื่อไหร่เกมของเราจะสนุก จนนำไปขายได้” เพราะความแตกต่างอย่างเดียวมันไม่พอ “เพราะคนอาจจะไม่อยากเล่น Dark Soul ธีมชินจัง” หรือ อาจจะมีคนอยากเล่นก็ได้นะ 5555
ต่อมา โต้ก็พยายามบอกว่า การทำ Waterfall ใหญ่ ๆ กับเกมอาจจะไม่ได้บาปขนาดนั้นก็ได้ เพราะหลายครั้งเราต้องรอให้เกมเราเสร็จจริง ๆ แล้วถึงจะต้องปล่อย อาจจะมีการทดสอบทีละส่วน แต่ยังไงโต้ก็บอกนะว่าส่วนตัวเขาก็ทำเป็น Sprint สั้น ๆ เหมือนกัน
ซึ่งพอครบจบเรื่องของกระบวนการแล้ว มาดูความแตกต่างกันบ้างดีกว่า ว่าปกติมันแตกต่างอะไรกันกับการพัฒนาโปรแกรมทั่วไป
ประเด็นแรกเลยคือ ไม่ค่อยมี Package ให้ใช้ หรือ ถ้ามีให้ใช้ ก็ไม่ค่อยฟรี ประเด็นต่อมาคือเรื่องคณิตศาสตร์ และ ฟิสิกส์ ที่ต้องใช้ความรู้พื้นฐานค่อนข้างเยอะ, การทำการออกแบบเว็บ ที่สามารถ Inspect ดูคนอื่นได้ แต่ใน Unity ไม่มีเช่นนั้น, การทำให้รูปภาพขนาดเล็กลง เว็บโหลดไวขึ้น มันก็อาจจะทำการย่อภาพอะไรไป แต่ในเทคนิคของการทำเกมมีอะไรมากกว่านั้น
ต่อมามาดูเรื่อง TDD ที่ก็ไม่ Work
หัวข้อต่อมาพูดเรื่อง อุตสาหกรรมเกมไทย ที่จริง ๆ แล้วมีผู้ที่เล่นเกมขนาดใหญ่ แต่ก็จะมีวงจรที่ค่อนข้างแย่หน่อยคือ เงินที่มีน้อย ค่าจ้างเลยไม่สมเหตุสมผล บุคลากรเลยไม่ได้คุณภาพ เกมออกมาก็จะไม่ดี สรุปก็คือไม่มีคนซื้อแล้ววนไป
ทางออกของวงจรนี้คือต้องหา Game ที่เป็น Hero เดอะแบกตัวใหญ่ให้เจอ เงินทุนมันจะได้มี แล้วไปจ้างในค่าจ้างที่เหมาะสมนั่นเอง
Session 6 : TO BE DevOps
เริ่มต้นเล่าเรื่องราวกับคุณโจโจ้ KubeOps Skills ที่เล่าถึงความหมายของ “Developer ที่คนผู้สร้างสิ่งที่เขาได้ทำการจินตนาการ” ซึ่ง Phase หลักที่เรามักจะพบกันในอาชีพนี้คือเรื่องของ Requirement, Planning, Coding และ Maintain
“Make it Work” อาจเป็นการคัดลอก Code จาก StackOverflow “Make it Good” แต่ทำยังไงให้มันดีขึ้น “Make it Better” คือสิ่งสุดท้ายที่เป็นนั่นคือ สิ่งที่ดีกว่าเดิม เช่น Performance ที่ดีกว่าเดิม
ส่วนเรื่องที่หนีไม่พ้นเลยคือ SDLC ที่หนีไม่พ้นใน Development Process ไม่ว่าจะเป็นกระบวนการใดก็แล้วแต่ ซึ่งน่าขะเป็น Flow หลักที่เราทราบ ๆ กันอยู่แล้ว และ หนึ่งในอีกเรื่องที่หนีไม่พ้นก็คือ Coding ที่มีกระบวนการข้างในคือ Source Code > Compile / Interpret > Executable file โดยการที่เราทำอะไรแบบนี้ เราจะเรียกว่า System Programming Language
โดยรูปแบบการทำงานต่อมาจะเป็น Source Code (JavaScript, Java, Go, C#) > Runtime Engine (ตัวที่เอาไว้ใช้ Run) > Website ในตัวอย่างของคุณโจโจ้ ที่มีการนำ Node JS มาดูตัวอย่าง เช่น เบื้องหลังจาก Application Server คือ App ที่ทำงานไม่หยุด และ รอรับให้บริการกับลูกค้า
ซึ่ง Concept ของการทำงานแบบนี้มันจะต้องไม่หยุด ถ้าหยุดก็อาจจะหมายถึงมันล่มนั่นเอง นอกจากฝั่ง DEV จะมีฝั่ง OPS หรือ Operation Team ที่พยายามดูให้เว็บไม่ล่ม โดยหน้าที่หลักของเขาคือการทำการ
- Create Infrastructure ไม่ว่าจะ Hosting, Computer หรือ Server
- Maintain คอยดู และ ทำให้ Application ไม่มี Downtime ไม่ล่ม
- Upgrade ทำไมเราถึงต้องอัพเกรด Server เพราะเรื่องทั้งของ Performance และ Security ด้วยนะ
- Fix คอยแก้ไขให้ใช้งานได้ เช่น Harddisk พัง หรือ ทีมคอยจัดการแก้ไข
และถัดมาคุณโจโจ้ ได้ให้ Best Practice ของ Operation ทีมคือ “หาจุดพัง, ทำให้อยู่ได้ยาวที่สุด และ Automate Ticket” นั่นเอง ซึ่งเล่าเรื่องนี้เสร็จมาดูกันว่าความหมายของ DEVOPS คืออะไร
จริง ๆ แล้ว Devops ไม่ใช่ตำแหน่ง แต่เป็น Culture ไม่ใช่แค่เรื่องเครื่องมือ CI/CD นะ แต่ว่าเป็นลักษณะการมานั่งทำงานร่วมกัน แล้วทำเป็นข้อตกลงว่าจะอยู่ร่วมกันยังไง โดยภายใน DevOps Culture เราจะมีหัวใจสำคัญอยู่ 3 ตัวหลักตามนี้
- IaC หรือ Infrastructure as Code
- CI/CD หรือที่ออกมาในท่า Platform Automation
- Collaboration เช่นพวก JIRA, Notion, Asana
ถ้าย้อนไปสมัยเก่าการพัฒนาโปรแกรมจะเป็น No Process ตามไปด้วย Waterfall และ ไปที่ Agile และ ปัจจุบันไปที่ Cloud Native นั่นเอง
การที่ DevOps จะเป็นตำแหน่งได้ เพราะเนื่องจากการที่เราต้องการจะปิดช่องว่างที่ Developer และ Operation ไม่สามารถทำงานร่วมกันได้อย่างลงตัว ซึ่งตำแหน่งนี้จะมาอยู่แค่ชั่วคราว สุดท้ายเมื่อ Culture ลงตัวก็จะกลายเป็น Platform Team นั่นเอง
สำหรับใครที่อยากลองดูกันว่าเราควรศึกษา หรือ ใช้ Tools อะไร ก็สามารถเข้าไปดูได้ที่ landscape.cncf.io ได้เลย ทำให้เรารู้จัก Tools เพียบ ไม่ว่าจะเป็น Database หรือ อื่น ๆ ก็สบายย
โดยก่อนจะจบไปคุณโจโจ้ได้ทำการทิ้งท้ายเรื่องกรณีที่เราต้องการจะรองรับ Load ปริมาณทราฟิกจำนวนมากได้อย่างไร ? คำตอบคืออย่างน้อย ๆ เราจะต้องมีตัว Container ที่เราสามารถหยิบไปรัน ทำงานที่ไหนก็ได้ ซึ่ง Container ที่ใช้กันในไทยบ่อย ๆ คือ Docker นั่นเอง
พอเข้าใจตรงนี้ ถ้าเราจะสร้างแอปขึ้นมา แล้วอยากรองรับคนจำนวนมากทำยังไง ? คำตอบคือ ถ้าวิธีที่ง่ายสุดคือ เราทำแอปให้เหมือนกันหลาย ๆ ตัว และ มี Load Balancer คอยจัดการคิวต่าง ๆ ให้ทำงานได้
แต่ก็มี Challenge ที่เกิดขึ้นได้ ตรงที่บางทีอาจจะเกิดการค้างเกิดขึ้นได้ เดิม ๆ เราก็จะใช้มนุษย์เข้าไปจัดการ Restart กันไป แต่ท่าที่อาจจะดีกว่านั้นหน่อย ก็คือให้คนกดเพิ่ม ลบ container เอา ซึ่งก็มีปัญหาเรื่องประสิทธิภาพของคนที่ทำอะไรได้ไม่เต็มที่ ช้า หรือ ไม่ทันการณ์ได้
โดยวิธีแก้ตรงนี้ก็คือใช้ เทคโนโลยี Orchestrator เช่น พวก Kubernetes ที่คอยจัดการงานเราแทนคนได้เลยนั่นเองคร้าบบ
อ๋อออ ทิ้งท้ายยังมีให้รู้จักกับ Chaos Engineering ที่คอยดู และ กำกับการทำงานว่าเมื่อเกิดปัญหาขึ้นจะแก้ไขอย่างไร เช่น เซอร์กิตเบรกเกอร์ ที่คอยตัดการทำงานเมื่อพบปัญหา หรือ เมื่อไปที่หน้าที่พัง ก็ Refresh ไปยังหน้าต่าง ๆ ที่ไม่พังก็ได้เช่นกัน
Session 7 : Beginning Data Science with R and Python
ปิดท้ายกับ Session พี่ทอย Kasidis จากเพจ DataRockie ที่เริ่มต้นด้วยการทำความรู้จักกับ Python ที่ทุกคนน่าจะรู้จักกันดีอยู่แล้ว และ Posit ที่เป็นชื่อใหม่ของภาษา R นั่นเอง
โดยอันดับแรกได้ให้รู้จักกับที่มาของภาษา Python ที่ให้กำเนิดตั้งแต่ปี 1991 โดย Guido van Rossum ที่ปัจจุบันอยู่ใน Microsoft ส่วนฝั่งภาษา R คือมาจากตัวอักษรตัวแรกของทั้งสองท่านที่เป็นผู้กำเนิดนั่นเอง
สำหรับจุดกำเนิดของ Python เพื่อมาทำ General Programming Language ที่กำเนิดมาเรื่อง Computing, Software, AI, Deep Learning และ Data Scienceส่วน R เกิดมาจาก Statistical Programing Language ที่ใช้ในการสถิติ ขยับไป Data Science จนไปถึง Deep Learning และตอนนี้ก็เอามาทำ Software ได้แล้วเหมือนกัน
โดยมันจะมีจุดที่เหมือน และ แตกต่างกันอยู่ในสองตัวนี้ แต่ต้องบอกว่าคนกลุ่มเขียน Python อย่าง Engineer ที่ Google ได้นำ Package หลาย ๆ อย่างมาใช้ใน R ได้แล้ว เช่น Deep Learning ที่ย้ายมาแบบเบิ้ม ๆ
ต่อมามาลุยกันเรื่อง Data Science คืออะไร ? แอดทอยก็ได้บอกว่า มันเป็นการเปลี่ยน “ข้อมูลดิบ” เป็น “Actionable Insight” และ ให้รู้จักกับ DIKW Model ที่มี Data ที่อยู่ชั้นล่างสุด ที่เก็บทุกสิ่งทุกอย่างเอาไว้, ต่อมาคือเรื่อง Information ที่ทำให้เรารู้ว่า ใคร ทำอะไร ที่ไหน อย่างไร เมื่อไหร่ และ เท่าไหร่, ตามมาด้วย Knowledge หรือ การหาความสัมพันธ์ของตัวแปร ว่าตัวไหนที่เราเห็นว่ามี Pattern ซึ่งสุดท้ายเราจะทำการขึ้นไปสู่จุดที่เรียกว่า Wisdom ที่เป็นความเข้าใจอะไรสักอย่าง อย่างท่องแท้เลยนั่นเอง
ซึ่งจุดสุดท้ายนี้คือจุดที่ยากที่สุดการกล่นเป็น Wisdom เพราะเราต้องเข้าใจมันจริง ๆ เช่น การระบุให้มั่นใจว่าการสูบบุหรี่ ทำให้ก่อให้เกิดมะเร็งปอด ต้องใช้เวลา และ ข้อมุลมหาศาลเลย และ การเป็น Wisdom ได้ ไม่ใช่แค่ Data + Science ก็จะเป็น แต่มันจะบวกกันจนกลายเป็น Insight มาก่อน รวมกันจนกลายเป็น Wisdom นั่นเอง
โดยการทำ Data นั้นขึ้นอยู่กับว่าเราจะใช้ Tools อะไร หากเราไม่อยากเขียนโปรแกรม อาจจะเริ่มจาก Sheet, Excel พวกนี้ก่อนก็ได้ แต่ Programming ก็มีความสำคัญนะ
ต่อมาดูเรื่อง 4 Phase ของการทำ Data Analytics คือการทำ Descriptive (What รู้ว่ามียอดอะไรเพิ่ม ลดเท่าไหร่) > Diagnostic (Why รู้ว่าทำไมถึงลดหรือเพิ่ม) > Predictive (Will) > Prescriptive (How ถ้ารู้แล้วเราจะทำยังไงกันต่อ)
ทั้งนี้แอดทอยยังย้ำอีกว่าชื่อตำแหน่ง มันก็แค่ชื่อตำแหน่ง เพราะสุดท้ายก็จะมายุบกันอยู่ในตำแหน่ง Data Analyst แล้วจ้า ซึ่งการเริ่มงานสายนี้ถามว่าการเขียนโปรแกรมจำเป็นจริงไหม คำตอบก็คือ เราต้องพยายามเป็น “Generalist” พยายามเข้าใจให้ได้ทุกอย่าง
โดย Data Science ในความหมายพี่ทอย อยากให้ดูกันว่ามันเป็นสกิลมากกว่าตำแหน่ง คือ เราทุกคนก็ควรเรียนรู้ไว้นะ !
เมื่อเรียบร้อยจบส่วนนี้พี่ทอยพาเรามาใช้งาน Posit.cloud ที่เอาไว้เขียนภาษา R / Python นั่นเอง ซึ่งพี่ทอยได้บอกไว้ว่า “เกินกว่า 50% ของ ภาษา R แทบจะนำ Python ยกมาได้เลย”
โดยความต่างหลักจะอยู่ตรง Data Structure ที่มี vector, matrix, list และ data frame ซึ่ง vector จะแตกต่างกับ python ที่เป็น list ตรงที่ สมมติเราต้องการ คูณเลขลงไปในทั้งหมด ถ้าเป็นใน Python เราต้องเขียน for loop แต่ R แค่พิมพ์ *2 ได้เลย
การทำงานของ R สามารถทำงานผ่าน Console ด้านขวามือ หรือ Terminal ที่ทำงานเหมือน Command Prompt, Terminal ปกติบนเครื่องได้เลย เข้าถึงไฟล์ต่าง ๆ ได้ด้วยนะ ต้องบอกว่าเกือบทั้งหมดในสองภาษานี้ดูคล้ายกัน แต่คำสั่งในดีเทลอาจจะแตกต่างกัน เพราะ เขาถูกออกแบบมาเพื่อคนละจุดประสงค์นั่นเอง
ซึ่งท้ายที่สุดนี้แอดทอยได้ทำการ Demo ให้เราดูด้วยว่าสามารถ Plot Graph รูปแบบต่าง ๆ ใน R ได้เลย แถมยังมีของแถมในการทำ Machine Learning ในการนำ Model เกี่ยวกับ รถยนต์มาทำนายว่า แรงม้าเท่านี้ น้ำหนักเท่านั้น ทำนายข้อมูลในรถคันอื่นว่า “ใช้น้ำมันกี่แกลลอนในการขับรถหนึ่งไมล์” ซึ่งบอกเลยว่า ใช้ code แค่ 4 – 5 บรรทัดเท่านั้น
แอดทอยก็บอกว่า “ไพธอนก็ทำไม่ได้นะคร้าบ สั้นขนาดนี้ 🤣”
เป็นยังไงกันบ้าง แต่ละ Session จัดเต็มขนาดนี้ ! บอกเลยว่ารอบหน้าไม่มาไม่ได้นะ !! เพราะงานนี้เป็น Event ที่ฟรี และ ดีมากกกก ! (ชมตัวเองก็เป็นน 5555)
เอาเป็นว่าใครอยากมาลุย เป็น Speaker อยากสนับสนุนพวกเรา อาจจะด้วยแรงใจ (ที่มางาน) หรือ แรงกายที่อยากมาช่วยจัด Event อะไรดี ๆ แบบนี้ เตรียมติดตามจากกิจกรรมอาสาสมัครอัพสกิลกันเทพไปพร้อมกันได้เลย !!
สำหรับวันนี้แอดเปรมขอตัวลาไปก่อน ไว้เจอกันใหม่ Evnet หน้า มาดูกันว่าจะไปโผล่ที่ไหน คอยติดตามกันได้เลยคร้าบบ !!