งาน DevMountain จัดมา 2 รอบแล้ว แต่ Season 1 ไม่รู้ข่าว แหะๆ สำหรับงานนี้ Season 2 และ โดยจัดที่เชียงใหม่เลย แต่ไม่ได้ไปนะ พอดีมีธุระเย็นวันที่ 12 ครับ สำหรับงานนี้จัด 2 วันเต็ม
- 12-NOV-2022 จะเป็นส่วน Cloud Native Lanna 2022 (DevMountain)
- 13-NOV-2022 DevMountain2 มีหัวข้อให้เลือกอยู่นานเลย เพราะวันก่อนจิ้มๆหัวข้อที่สนใจ
จริงต้องบอกว่า Theme Tech Week Meetup เพราะมีงานอื่นๆ จัดไปด้วย ตามนี้เลย <thai-tech-calendar /> | รวม อัพเดท Tech event, Tech Meetup ในไทยไว้ในที่เดียว (techcal.dev)
กลับมาในส่วนของ DevMountain2 ที่ได้ฟังจริงๆ ตามนี้ครับ
Table of Contents
APISIX
Speaker Suriya Siangsai

📚 API Gateway vs Proxy
- Proxy รับ Request จาก Client ส่งไปหา Upstream (Service) ด้านหลัง
- Gateway มัน Add-On เสริมจาก Proxy ในด้าน Security / Authentication เป็นต้น
- APISIX พัฒนาต่อยอดมาจาก NGINX + OpenResty ครอบ
- Basic ควรเข้าใจ OSI Layer / Return Codeของ HTTP / Concept - Rate Limit, Auten, Security, Logging
- APISEX - ใน CNCF จะมองว่าเป็น Proxy แต่มันมีความสามารถทำได้นะ เทียบกับ KONG
- ใช้ etcd เป็น Database อย่าง KONG PostgreSQL / Nginx - Text File
📚 Best Practice Production (Deploy API Gateway)
- เดิม เจอ Single Point of Failure

- ใหม่ ทำ API Gateway แบบ Crossable + Proxy ทำ HA

📚 APISIX ดีกว่าตัวอื่นยังไง ?
- NGINX ทำ Cluster ยาก เพราะต้องเอา Config ไปวาง แต่ APISIX ไม่ต้อง Config อยู่ DB etcd ทำที่เดียวกับใช้ทุกที่
- KONG Plugin บางต้อง Requirement Enterprise License แต่ APISIX มีตัวฟรีให้ใช้งาน
- Free Dashboard / ตัว KONG ต้อง Enterprise
- Scale ง่าย
- APISIX ลดภาระของ Dev เอางาน Common มาที่ APISIX '
- Cloud Native จะเอาไปใส่เป็น ingress ของ K8S ก็ได้นะ
📌 ข้อเสียของ APISIX - ยังไม่รองรับ http3 ต้องรอ NGINX ทำมาก่อน
📚 Deploy
- ถ้าจะ Deploy ตาม Installation | Apache APISIX® -- Cloud-Native API Gateway
- ข้อควรระวัง ตอน Deploy ระวังเรื่องการ Expose Port DB (etcd) ของ APISIX / เปลี่ยน Default API Key
📚 APISIX มี 2 ส่วน: Control Panel / Data Panel
📌 การทำงานของ APISIX

- เริ่มจาก consumer > route > upstream > service
- route การกำหนด route สร้างผ่าน dashboard ก็ได้
- upstream - balance request มีหลาย mode round-robin / leased connection (มี Connection น้อย) / latency น้อย
- NOTE ตรงนี้สร้างจาก CMD (ยิง Curl) หรือใช้ Dashboard GUI ก็ได้ //สนใจตรงนี้แหละ
📌plugin ส่วนที่ให้ทำงาน consumer / route / service ถ้าสร้างแบบ global ก็ได้ มีกลุ่มที่น่าสนใจ ดังนี
- Authentication (สร้างแล้วต้องมาสร้าง user ใน consumer) / OpenID Connect / OAuth ก็ได้
- Traffic - rate limit
- Serverless pre-function
- logging http /tcp / kafka-logger (ในนี้มันฟรี แต่ kong ไม่ฟรี)
- mocking สร้าง service ให้ dev test ได้เลย
- proxy เป็นต้น
📌Use-Case เจอตอน Implement จริง ปัญหาที่เจอ เจอ502 แบบงงๆ วิธีแก้ ให้กำหนด Timeout ของ load balancer > ของ API Gateway
Resource:
- Apache APISIX® -- Cloud-Native API Gateway
- apache/apisix: The Cloud-Native API Gateway (github.com)
- แบบ Commercial API7.ai
WHAT IS IT LIKE TO BE AND ENGINEER MANAGER
Speaker Sudarat Chattanon
📚 PRODIGY9 TECH >> ลองมาดูกันได้ จัดทุกพฤหัส
📚 Once a upon a time > Software Engineering ทำอะไรบ้าง
- Coding + Unittests
- Work as a Team พูดคยถกกัน มีเรื่อง Quality ให้ Code ง่าย Maintains ง่าย จนมาเป็น Team Lead
📚 จนมาวันนี้ Promote เป็น EM (Engineering Manager) จากเดิม Tech Lead ทำ
- Coding
- Self-improvement
- Company Handbook
- Team Gathering - นอกจกงานแล้ว ความสัมพันธ์ในทีมด้วย
- Strategic Planning
- Mentoring
📚 Engineering Manager ประมาณ 1 ปีแล้ว มีอะไรต่างๆมากมายที่ๆไม่เคยเห็นต้องมาทำเพิ่ม ได้แก่ 1-1s / Project Management / Meeting (มีกันทุกคน) / Propasal / Hiring - Head Count Planning / คุย Consult ลูกค้า …
📚 ปรับตัวอย่างไร กับการเป็น Engineering Manager
- Set Working Structure กำหนด Block ของเวลาในแต่ละงาน เช่น 1-1d / Coding / Meeting / Interview / Focus Block (จะ Code จะเตรียมอย่างอื่นได้)
- ตัว Working Structure ไม่ได้ตายตัว ปรับตามความเหมาะสม อาจจะ review เดือนละครั้ง และปรับๆ

📚 1-1s
- อันนี้ผมไม่แน่ใจนิยามที่ฟังมา เรียกว่าเปิดการคุยกันน้องๆ (แปะประกอบเผื่อเข้าใจผิด What are 1:1s? One-on-one meetings explained)
- เพื่อดูงานใน Week นี้ หรือพวก Career Path อันที่พบใน Week นี้ไหม
- เตรียมตัว Focus Block วางแผน / Agenda โดยอาจจะดู Template จาก Officevibe
📚 hiring - น้องมีงานมากกว่าเราแฮะ โดยน้องแนะนำให้ตั้ง
- คำถามว่าเค้าเหมาะกับ Company ไหม (Company Value - Culture องค์กร)
- เตรียมคำถามทางหมวด Technical + Soft Skill โดยวางไว้ก่อนว่าเราอยากได้คนในได้นั้น และจัดคำถาม
- มีคำถามออกแนวปลายเปิดได้ ให้ผู้ถูกสัมภาษณ์แสดง Idea
- กำหนด Standard ของคนที่รับ ให้ Average ขององค์กรดีขึ้น
📚 Improvement
- ส่วนพัฒนาตัวเอง Technical + Soft Skill Key
- ต้องกำหนด Goal ไว้ด้วยนะ จะได้รู้ว่ามี Idea อะไรค้างไว้ อาจจะแชร์ให้คนในทีมมาดูด้วยก็ได้นะ
📚 Delegation - ส่งงานให้คนอื่นดูแล เราอาจจะ Coding คนเดียวไม่ได้แล้ว อันนี้ผมเจอกับตัวมาเหมือนกัน บางทีต้องไป POC Cloud / Meeting งาน Code ต้องวางแผนให้น้องๆ
📚 Asking for Help- เราไม่ใช้ Experts ทุกด้านนะ รู้ตัวเอง และหา Consult มาช่วย
📚 Finding a mentor - อาจจะเป็นหัวหน้าเรา หรือคนอื่นๆก็ได้ นอกจากเป็นตัวบุคคลแล้ว อาจจะเรียนรู้จากสื่ออื่นๆ เช่น
- หนังสือ The Making of a manager >> มีคนทำสรุปภาษาไทยด้วย
- หนังสือ Become an Effective Software Engineering Manager
- Web LeadDev
📚 งานด้าน Technical นอกจากสาย Dev แล้ว หรือจะไปทางอื่นๆก็ได้นะ
Q: สร้างสภาพแวดล้อมที่ Save สำหรับ Engineering Manager ยังไง ?
A: Encorage ว่าการเป็น Enigneering Manager ไม่ต้องกดดัน คือ เปิดช่องให้ปรับตัวกับองค์กร และมี save space ในการถาม Asking for Help
WEB3 LEGO: A GUIDE YO WEB3 DEVELOPER STACK
Speaker Sathapon Patanakuha

📚 Web 1 / Web 2 / Web 3 ต่างกันไง ?
- Web 1- read
- Web 2- read/write
- Web 3 -read/Write/Own พบมีตัว Own ที่เราเป็นเจ้าของแล้ว ไม่สามารถถูกใครมาจัดการได้ (Decentralize) เช่น
- twitter เราจะโดน Band / Censor ไม่ได้
- Tornado Cash - เอามาปั๊น กระจายไม่ให้รู้ ว่าเงินไปไหน
📚 โลกของ Web2 ปัญหาอีกอันนึง คือ Provider จะถือข้อมูลที่เป็นจำนวนมาก เช่น social media / E-Commerce / Cloud Provider เป็นต้น

📚 Web3 มี Characteristic ยังไง ? (Add On Internet)
- Trustless
- Self-Governing
- Permissionless - ทำให้เกิด programmability
- Distributed
- Stateful - ใช้ blockchain เก็บ state //ทำให้บางส่วน stateful พวก server ยังอยู่นะ
- Native built-in payment
📚 Web3 Lego + Composability
- ทุกอย่าง Plugin ต่อๆด้หมด

📚 Web3 Stack
- Protocol - จะเป็น Blockchain ที่ทำให้เป็น Stateful มากขึ้น เช่น Etherium Solona มี Smart Contract ส่วนอีก 3 ชั้นที่เหลือ Lego ที่เสริมออกมาให้สะดวกขึ้น
- Infrastructure
- RPC Node / Blockchain API มาช่วยให้เราดูข้อมูลใน Block ได้สะดวกขึ้น ไม่ต้องมา Run Node เอง
- Wallet & Key Management จาก Web3 ที่มี key Owner เป็นสิ่งที่บอกตัวเอง ลึกมันจะใช้แนวคิด Public Key / Private Key โดยมีตัวนี้มาช่วยบอกว่าเป็นตัวเรา เพื่อเอาไปยืนยันตัวตัว ก่อนไปทำ Tx บน Blockchain บริการ เช่น Metamask / Wall Connect
- Decentralize Storage
- Oracle - เอาไว้ต่อกับโลกภายนอกของ Blockchain เช่น USD / ทอง บริการ Chainlink / Flux ทำให้ Maintain ราคาได้ง่าย
- Index + Query - The Graph (GraphQL) / Transpose (SQL)
- Messaging + Notification บริการ Push / Notifi นึกถึงพวก WhaleAlert
- Developer Tools
- App - Use Case ของการทำงานจริงๆ
📚 Web 3 Limitation
- Scalability - based บน blockchain + decentralized
- UX - พวก Key Wallet การใช้งานที่นึงจะยุ่งพอสมควร
- Cost - ทุกอย่างเวลาอยู่ On-chain ต้องมี Cost ที่ใช่ในแต่ละ Tx
- Accessability
📚 สรุป Web2 / Web3

DIGITAL FORENSIC กับงาน DATA ANALYTIC
Speaker Thuntanawat Prang-Amornkul

📚 ปัจจุบันอาญชกรรมทางคอมพิวเตอร์มีเยอะมาก ตามยุค Digitial ที่เติบโตขึ้นไป โดยมี Type of Attack ดังนี้

📚 หลังโควิต-19 มาก็รูปแบบการ Attack ยังอยู่ แต่ในส่วน Phishing / Social Engineering มากขึ้นนะ
📚 จากเคส เจอ จ่าย จบ นอกจากผู้ติดเชื่อมากขึ้นแล้ว ยังมีการทุจริตด้วยนะ ตรงนี้จะเอาส่วน Digital Forensic เข้ามาช่วยในส่วนนี้ หรือเคสบัญชีม้า
- Digital Forensic Methodology

- Identify - กำหนด Scope ทำ Risk Managment + Governance
- Protect - IT หรือ Data โดยมีการกำหนด Policy ขึ้นมา เพื่อกัน เช่น การไม่ให้เสียบ USB
- Detect - หน่วย SOC มาจับด้าน Cyber ในเคสของคนในมาหาสิ่งผิดปกติ แต่ต้องระวัง PDPA ด้วย
- Response - เมื่อเกิดเหตุต้องมีแผนรับมืออย่างไร
- Recover - อาจจะต้องมีการรับมือ เช่น ทำ BCP กรณีเกิด Ransomware เอาระบบ Backup มาใช้
📚 โดยจะมีส่วน Governance / Risk และ Compliance & Maturity มาครอบ โดยมี framwork ที่เด่นๆ ของ NIST

📚 Digital Forensic - ทำหลังเกิดเหตุ เอา DataSet มาหา Subject (ผู้สงสัย) และหา Insight ว่าอะไรที่ผิดไปจากฏเกณฑ์ขององค์กร
- Source - Device / Digital Media / Database (ดู HDD / Ram / Tx) / Network / Social Media Analytics หา relationship
- ใช้แทบทุกเทคนิคของ Data Science เลยนะ (วงสีส้ม)
- Digital Forensic Process
📚 Collect & Acquistion
- Evident Seizure ปกติ จะการกั้นพื้นที่ แต่ในแง่ Digital ยึดอุปกรณ์ไว้
- Chain of Custody - เก็บหลักฐานแบบลายนิ้วมือ ถ้าใน Digital พวก Log
- Volatile Data (HDD) / Non-Volatile Data (Memory)
- เก็บข้อมูล Logical Level (ทำ image) / physical Level - ดูจาก bit กรณีที่แบบโดนลบ และเขียนซ้ำหลาบรอบ โดย duplicate ข้อมูลออกมา เพื่อวิเคราะห์ โดยที่หลักฐานไม่เสียหาย
📚 Examination (Prepare - Clean Data) ออกมาเป็นหมวดหมู่

- Network Data - ต้อง Scope IP / Time
- Disk - ต้องมี recovery ว่าอะไรหาย ที่อาจจะถูกลบไป หรือ Encrypt รวมถึง index search keyword
- Memory - พวก Clip Board / Command ที่พิมพ์ไว้ล่าสุด
📚 Data Analytic
- เพื่อมาตอบคำถามที่ว่า
- ใคร(Who)เป็นคนทำ หรือ อะไรที่เป็นสาเหตุ (Cause)
- มีอะไรเปิดขึ้นมาบ้าง (Happened)
- มันเกิดขึ้นที่ไหน และเมื่อไหร่ ? (Where/When)
- มันเกิดขึ้นได้อย่างไร มีวิธีการอะไร (How)
- และผลท้ายผลกระทบที่เกิดขึ้น (Impact)

- วิธีการเดิม vs ปัจจุบัน
- Rule Base คนคิดกฏขึ้นมา
- ปัจจุบัน Smart Collection - นำ RPA มาเก็บข้อมูล / Smart Analysis - เอา AI + ML มาใช้ช่วยคิดนอกเหนือ และ Smart Presentation - ใช้ tool มาช่วยนำเสนอข้อมูล เช่น Power BI
- ML (Digital Forensic)
- Link Analysis - หาความสัมพันธ์ + ความถี่ของสิ่งที่สนใจ //นึกถึงตอนเรียนโทเลย Social Network Analysis
- Cluster Incident and Crime - จัดกลุ่ม โดยใช้ Self-Organizing Map (SOM)
- Predict Attock and Crime - ใช้ Random Forest / Naive Bayes / SVMs
- Fraud Detection - ดู anomaly อาจจะใช้ Visualization ช่วย หรือ Decision tree+ Rule Base มาดู
📚 Reporting and Recommendation บอก timeline และ recommend ถึงผลกระทบ จากนนั้นเป็นหน้าที่ทางกฏหมายต่อไป เพื่อฟ้อง เอาค่าเสียค่าหายที่เกิด
BLOCKCHAIN HELPS BUSINESS ACCLERATE DIGITAL TRANSFORMATION
Speaker Krissada Rongrat
📚 BCI - ฟังไม่ผิด องค์กรที่จาก 6 Bank มาช่วย Share Block Chain ด้วยกัน

📚 การศึกษาจาก Price water House พบว่า block Chain มาช่วยอะไร
- Provenance - สืบค้นที่มาของข้อมูลมาจากแหล่งใด เอามาใช้ช่วง Supply Chain
- Payment / Financial Instrument -ตราสารอย่างพวก Check / LC
- Identity - ในไทย NDID ที่ใช้ Block Chain
- Contract - การทำสัญญาระหว่างองค์กร
- Customer Engagement - เพราะ Blockchain ตัดตัวกลางออกไป แต่ช่วยให้ข้อมูลมีความน่าเชื่อถือ ถ้าลูกค้ายอมให้แชร์กลับมา
📚 Digital Transformation - เอา technology มาใช้ แล้ว transform กับองค์กร เพื่อให้เกิด Value ในระยะยาว โดยหลักมี 4 แบบที่ใช้เอามาใช้
- ส่วนใหญ่ Process Transformation / Business Model Transformation
- รวมถึงการปรับ Culture Transformation อย่างการพัฒนา Software Waterfall > Agile อ่อเพื่อให้ครบ 4 แถมอีกอัน Domain Transformation
📚 Blockchain Characteristic
- Decentralize + Authority
- Ledger - บอก History ทำให้ track ได้
- Transparency - เพื่อมี Ledger + Decentralize ทำให้ทุกคนเข้ามาตรวจสอบได้
- Secure - ไม่สามารถแก้ข้อมูลได้
- Immutable - ถ้าจะแก้อะไรมันจะเป็น Block ใหม่ และมันต้องได้รับการ Consensus ด้วย
- Shared -
- Irreversible - ย้อนไม่ได้ เพราะมัน Immutable
- Distributed - Decentralize
- Autonomy - Consensus
- Open-Source
- Anonymity - มีการ Hide Blur ไว้ ทำให้ทราบมีอะไรเกิดขึ้น แต่ไม่ม่บ่างบอกบุคคลไป
- Owner/ Uniqueress
- Provenance - สืบค้นที่มา
- Smart Constract
📚 Advantage - Trust Building / Fast / Improved Security + Privacy / Cost Reduction อย่าง เช่น การ Audit เราต้องมาตรวจทุกจุด แต่ตอนนี้ใช้ Blockchain แทน / Organize Decentralize Structure

📚 Use-Case - Supplier Chain Mangement (Shipping)
- เดิม ในส่วนของเอกสารมีรูปแบบต่างๆมากมาย
- ใหม่ เอาระบบที่มี Blockchain ไปใช้ในการจัดการเอกสารในส่วนของ Shipping ดีขึ้น โดยวัดจาก Factor ทั้ง 12 ข้อ มองผ่านๆเหมือนเอา Blockchain Characteristic

📚 พอเอา Blockchain มาทำ SWOT ยังมี Weakness + Threat ที่ควรพิจารณาดังนี้
- Weakness: การที่จะ Implement ระบบใช้ Cost สูง - ความคุ้มทุนในอนาคต / ทักษะของบุคลากรที่นำมาใช้ / Vulnerability ที่อาจจะเกิดขึ้น / Control + Monitoring
- Threat: การเมืองที่เกิดขึ้น / Cyber-Attack

📚 Use-Case - Electronic Letter of Guarantee (eLG) - เอกสารรับรองบริษัทก่อนจะทำสัญญาร่วมกัน ถ้าบริษัทนั้นทำไม่ได้ทางคู่ค้ามีสิทธิร้องธนาคารได้
- เดิม ต้องมาขอธนาคาร เพื่อตรวจสอบ 3-7 ให้คนทำ Manual รับเอกสารไป และมันสามารถปลอมแปลงได้
- ใหม่ มีระบบให้คู่สัญญาเข้ามา Enquiry ข้อมูลตรวจสอบได้ หลังจากธนาคารได้ issue ตัว eLG
📚 Use-Case Electronic Bank Confirmation (eBC) เป็นระบบที่กำลัง Implement อยู่ โดยนำมาใช้กับเรื่องการตรวจสอบบัญชีให้ทาง DBD หรือ กลต. (กรณีบริษัทมหาชน)
📚 สุดท้าย งานด้าน Blockchain ยังขาดบุคลกรที่เข้ามาทำอยู่นะ ได้ว่าทั้งโลกต้องการ 21 ล้านคน
TO BE LAZY PROGRAMMER
Speaker Adisorn Chockaumnuai
📚 ตอนแรกคิดว่าน่าจะเกี่ยวกับ Quote ของ Bill Gate ปรากฏว่าใช่จริงด้วย

📚 กฏนี้น่าสนใจมาก ถ้าอะไรที่ทำเกิน 90 นาที ให้ทำ Script จงทำมันให้ Automate ซะ
📚 อย่าง Repo นี้ที่เค้าทำ NARKOZ/hacker-scripts: Based on a true story (github.com) แต่ Repo นี้ก็เจ๋งดีนะ เริ่ม shell จากภาษา R > งอกมาเป็นอีกหลายภาษาพลัง Open-Source
smack-my-bitch-up.sh- ถ้า 3 ทุ่ม ถ้า Login ใน Terminal ให้ส่ง Text ไปบอกแฟน //เราไม่มีแฟน T_Tkumar-asshole.sh- มีเคสจากคุณ kumar มาบ่อยๆ จะ default เอา backup ล่าสุดมา restoerhangover.sh- ถ้ายังไม่ Login ใน Terminal ให้ส่งเมล์เลยว่า WFH ลาบราๆfucking-coffee.sh- สั่งให้ชงกาแฟ ที่ Peak มีเลขหน่วงเวลาเดินไปรับด้วย 5555 //เอาจริงๆ เรามี Report นึงที่ออกช้ามา 20 นาที user โวยๆปรับจูนมาจนเหลือ 1 แต่สุดท้ายผมจตัดสินใจ ใส่หน่วงแบบ kumar เพราะ โวยทุกปีเพราะ KPI 5555
📚 เราขี้เกี้ยจ แล้วเกิด Motivation หาความรู้เพิ่ม
- Focus เพื่อทำอะไรที่ไม่จำเป็น
- Optimize - ถ้ามันช้ารอนานๆ ลองปรับให้เร็ว เช่น Report มันช้า ลองมาจูนๆ
- CI - ก่อนจะทำอะไร ต้องหาก่อนมีคนเจอไหม >> Stackoverflow / หาความรู้ใหม่ๆ
- KISS - ใส่ใจกับ Code อ่านรู้เรื่อง ลด Technical Dedt มี Test ประกอบ
- DRY - อย่า Copy+Paste หา Pattern แยกเป็น Common

📚 Software Design Principle ** Keyword ที่ช่วยให้เราขี้เกียจได้แบบ Smartๆ
- Clean Code - อ่านมากกว่าเขียน ดังนั้นทำให้อ่านง่ายซะ
- Programming Paradigms - เข้าใจว่า OOP / Functional / Structural เกิดมา เพื่ออะไร ทำอะไร
- OOP
- Design Principle - พวก Keyword แปลกที่เราคุ้นๆ SOLID / DRY ...
- Design Pattern - บางอันอาจจะใช้อยู่แล้ว แต่เราไม่รู้ 555
- Architectural Principle
- Architectural Style
- Architectural Pattern
- Enterprise Patterns

📚 ชอบอันนี้
- Make it works - Comment มา 5 ปี ไม่เคยกลับมาแก้ ส่งๆไปก่อน >> จริง ส่วนตัวเคยโดน PM ให้ตัด Automate Test ไร้สาระ พอลูกค้าบ่น โดนด่าอีกทอด สุดท้ายเลยตัดใจทำ และเมล์เตือนแถมให้ PM ด้วย หึหึ
- Make in right - ทำให้ยั่งยืน
📚 YAGNI (Prioritize + Need) > KISS (Make it works) > DRY (Make in right)
EVENT DRIVEN ARCHITECTURE 101
Speaker Kantz Suwannasit

📚 Service Oriented Architecture vs Event Driven Architecture
- SOA - Service คุยกับ Service ถ้ามี Server Chain (S1 > S2 > S3) เวลาเพิ่มอะไรเข้าไปแก้ยาก เพราะมัน Coupling กันอยู่
- EDA - ไม่สนใจว่า Service อะไรมารับต่อไป ทุก Service สร้าง Event ออกมา ถ้ามี Service ใหม่
📚 Benefit
- Responsive - เร็ว เพราะไม่ต้องมารอ Service อื่นๆ ตอบอะไรก่อนแบบ SOA และทำงานเป็น Async
- Resilient - ยืดหยุ่น ไม่ติดกับ Service อะไร (จริงๆ น่าจะติดกับ Queue อย่างเดียว)
- Scalable - เพิ่มได้ Service ใหม่ๆ เข้ามาได้
- Decoupling + Asynchronous
📚 Why SOA > EDA
- Move to Cloud (Monolith > Microservice)
- More Open / real-time / distribute software
- IoT - เอาง่ายๆ มือถือ Request มาพร้อมกัน ถ้าทุกอย่างต้องรอกัน ช้ากันไปหมด ไม่มีคนรอ
📚 Change Mindset - Everything is Event เช่น การกดปุ่ม หรือ การถอนเงิน นับด้วยนะ
📚 Non-Blocking - ทำแล้วจะมี Callback //Async นั้นเอง
📚 Request vs Event

📚 แต่ยังไง Request แบบเดิม (Synchronous) ยังจำเป็นอยู่นะ เพราะ Synchronous / Simple แต่ต้องรอ
📚 ส่วน Event Driven จุดเด่น Decoupling กับ Microservice ข้อเสีย Complex ขึ้น มี Messaging Infra Structure / Coupling กับ Message
📚 Programming Pattern
- Observer Pattern
- Reactor Pattern
📚 แต่ถ้า Coding อย่างเดียวไม่พอ ต้องมีการปรับ Architectural Pattern ด้วย Pub-Sub เพิ่ม Event Broker โดยมี Keyword
- Producer - ฝั่งที่สร้าง Message
- Consumer - ฝั่งที่นำ Message ไปใช้
- Message - ตัว Event ประกอบด้วย
- header (บอกปลายทาง / mode)
- application properties
- body เนื้อหาที่ต้องการส่ง
- Topic - เรื่องที่สนใจ
- Queue - ส่วนที่ Producer ส่ง Message มาพัก และ Consumer เอาไปใช้ต่อ
📚 Message Exchange Pattern
- Point to Point
- Public Subscribe
- Request / Reply (with queue)

📚 Message Delivery Mode
- Direct (At Most Once)
- ส่งไปเรื่อยไม่สนอะไร มีโอกาศเกิดปัญหา Message Loss
- Use-Case ยกตัวอย่างพวก Log
- Publish Guarantee
- ฝั่ง Queue บอกว่าได้รับแล้ว แต่จะเกิดปัญหา At Least Once ฝั่ง Consumer จะเจอเคส De-duplication ได้
- Use-Case บอกการแสดงผล
- Receiver Guarantee (Exactly Once)
- ฝั่ง Consumer บอกว่าได้รับแล้ว แต่พอมีบอก Ack แบบนี้แล้ว มันช้ากว่าแบบอื่นนะ
- Use-Case Transaction
📚 มีหัวข้อของงาน Cloud Native เมื่อวาน Link ได้แบบพอดี Cloud Native Lanna 2022: MODERN APPLICATION PATTERNS AND HOW TO BUILD THEM ON AWS
ปล เรื่องนี้มี Blog ไว้อยู่นะ >> Event Sourcing Pattern
SERVER PERFORMAMCE AND SYSTEN DESIGN
Speaker Sachin Yadav / Pawarit Jitakul
📚 The Evolution of Development and Deployment
- Waterfall - Monolith กับ Physical Server แล้ว
- Agile - Monolith มีแนวคิด VM เข้ามาแทน Physical Server แล้ว
- DevOps แต่ Monolith > Microservice (Container) / Cloud
📚 ชอบอันนี้นะ จริงๆ Monolith มัน Scale ได้แต่ ทว่ามันมีเสี้ยวเดียวที่ใช้ resource เยอะๆ
- Scale แล้วไม่คุ้ม
- ขี้เกียจ เพราะมัน Scale แล้ว อาจจะไม่คุ้ม
- การแตก microservice มามันจะประหยัดมากที่สุด + Scale ในส่วนที่สำคัญ เพิ่ม Performance
- การทำ microservice ตัว infra เราต้องรองรับเรื่องนี้ด้วยนะ > Cloud Native นั้นเอง
- Ascend Cloud Journey

📚 The 12 Factor App - Check List ที่ช่วยให้ App ของเราเปลี่ยนไปเป็น Microservice ได้ดีขึ้น
📚 Moving to Cloud - Infra ที่เราไปเช่า จะได้ไม่ต้องดูแล และ SLA รับประกัน ถ้า
📚 Cost ของ Cloud
- Cost infra อาจจะเท่ากันนะ
- แต่ลด Cost เรื่องคนที่มาจัดการได้ ลดเวลาด้วย เพราะ manage server รวมถึงการ Training คนที่มาทดแทนด้วย
📚 DevOps มาเป็นตัวประสาน ระหว่างทีม Dev กับ Ops ในช่วงเปลี่ยนผ่านทลาย Silo
- Moving to Cloud

📚 Push Everything to Source Control - อันไม่ที่ยังไม่เข้า เก็บ Code เข้ามาให้หมด และทำ Git Flow
📚 Containerize Anything and Everything - ใช้ Docker นะ
- เลือก base image ที่ดี
- ลง Package ที่เกี่ยวข้องใส่มาด้วย
- Custom File + App << บางทีอาจจะต้องมี Custom เพื่อให้เหมาะกับ Container
- Export Port
- Defined Enry Point
- Build Image > Deploy
📚 Use K8S - เป็น Standard เข้าได้กับ Cloud ทุกค่าย ไม่ให้ติดกับดัก Vendor Lock ด้วย เวลาย้ายไปค่ายอื่นจะได้สะดวก สำหรับตัว Cloud Provider ที่ใช้งานอยู่ AWS / GCP / TrueIDC
📚 Implement CI/CD Flow - ทำให้เป็น Standard จะช่วยให้ Tracking ง่าย
- ArgoCD ทำกับ K8S ง่าย
- Jenkins ที่ยังให้อยู่ป้องกับเรื่อง Vendor Lock
📚 Monitoring new relic / Opsgenie (Alert) / Elasticsearch
📚 Cloud Security - เน้น Shift left โดยเน้น
- People Access Control + Monitoring
- Data - Encrypt
- และ Infra พยายามใช้ตาม Practice ที Cloud Provider แนะนำ
📚 All Product พยายามให้ใช้ Stack เดียวกัน จะได้ลด Learning Curve / Cost
📚 Use-Case จากเคสนี้ไปเจอว่า Hardware เสีย แล้ว HW นั้นรอมากกว่า 6 เดือน เลยเป็นที่มาของการ Move to Cloud แต่ไปแล้ว อาจจะเคสแปลก เช่น Serverless ทำงานเร็วไปจน 3Rd Party อาจจะมองเป็น Spam ต้องมาหาทางแก้ไขต่อไป
SECURE CODING
Speaker Ekkarat Boonchieng

📚 Secure Coding - กระบวนการป้องกันไม่ให้ตัว Software เรา มีอะไรที่เสี่ยง ที่คุ้นๆช่องโหว่ จากรูปข้างบนจะเป็น CIA ที่สาย Security จะคุ้นๆกันครับ โดยวันนี้ 5 เรื่อง
- Buffer Overflow Attack
- Stack Overflow Attack
- Integer Overflow Attack
- Format-String Attack
- Path-Traversal Attack
- สำหรับ Session นี้อาจจะไม่เชิงสรุปนะ เหมือนมา Cross Check กัน ด้วย (จริง Speaker สอนไม่ทัน น่าจะสัก 3 ชั่วโมง)
📚 Buffer Overflow Attack- data ล้นออกมาจากที่เก็บได้ เช่น Array จาก Code ตัวอย่างเราจะพบว่า Runtime มีปัญหานะ
- วิธีแก้ใช้ Strncpy แทน ไม่เกิด Segmentation Fault
- จากตรงนี้ ถ้าเราขนาด Buffer Size มันก็แสดงผลได้หมดนะ หรือใช้ Malloc
📚 Stack Overflow Attack- อันนี้ตอนทำงานจริงๆ ก็เจอนะถ้าเขียน Recursion ปกติ OS จะมีการกำหนดไว้ เคสนี้
📚 Integer Overflow Attack คือ ทำให้ค่ามันเกินขอบเขต แล้วทำให้ตัวโปรแกรมมันทำงานผิดปกตติไป หรือ Crash โดย Int -21471483648 ถึง 21471483648 แต่ที่ลองมาปกติตัวภาษามันกันให้นะ จะเกิด Exception แทน ถ้าเป็น C# ถ้าจะลองต้องใช้ Keyword [C#] Arithmetic Overflow กับคำสั่ง checked และ unchecked
📚 Format-String Attack มัน คือ การส่ง Format String เข้าไปเกิน จนทำข้อมูลใน Memory Stack หลุดออกมาด้วย
- ตัวอย่างอันนี้ชัดดี What is a Format String Vulnerability - CTF 101
- การป้องกัน ใน Code พวก format string ใช้เป็น Constant / กรอง Input
📚 Path-Traversal Attack ฝั่ง Web Code เข้ามาไล่ Traverse ได้หมด อันนี้ทั้ง Dev + Ops ต้องทำงานร่วมกันนะครับ
- Code - ฝั่ง API เราต้องกันไม่ให้ยุ่งกับระบบไฟล์ตรงๆ
- Ops - ต้อง Config ไม่ให้ File Traverse ได้ตรงๆ
📚 ตรงนี้ผมชอบดีนะ อธิบายได้ชัดเจนกว่าทีม Security ใน บ แปะ Report แล้วจากไป อย่างเคส Buffer Overflow ตอนนั้นถ้าจำไม่ผิดเพิ่มการ Validate ไปแทนแบบงงๆ
PRODUCT ENGINEERING FOR SCALE/UNLOCKING ENGINNERING WITH DESIGN PATTERNS
Speaker Voravit Takkar
📚 ชอบ Flow Account นะ ลูกค้าทุกคนสำคัญหมด user ของเค้าตั้งแต่ใหญ่ๆ มาจนเล็กๆ แบบพ่อค้า แม่ค้า
📚 When Allow Bad Code in Our Product ทำให้ Code มันแย่ //อารมณ์อิหยังวะ
📚 Culture - Process ทำจนเป็น practice
- Agile - Kaizen
- Mono Repo - เอามา Apply
- Team Topology
- Stream-aligned teams - ทำ Feature ขึ้นมา
- Enabling teams - ปูทาง ทำ API + Doc ให้ คนอื่น Stream-aligned teams ดูต่อ
- Complicated sub-system teams - มันซับซ้อน ปล่อยให้คนเดียวดูไป
- Platform teams - Common System Lib
- API Contract - Swagger ในการคุยกัน

📚 เลือก Technology อย่าเยอะ ถ้าเยอะ จะเจอ Debt - นอกจาก Code แล้วจะเป็น
- Process Debt / Management Debt - จากเดิมที่แบบว่าแย่ ทำไปแล้ว แย่ขึ้น เช่นต้องมาประชุมกันหมด หรือมีงานเอกสารเพิ่มขึ้น
- Tech Debt - เลือก Stack ไปแล้ว อยู่กับมันไป ปรับอะไรยาก ตอน POC ต้องเน้นๆ
- Ops Debt - ทำไปแล้ว มีงานแปลก
- Functional Debt - เหมือน Code Comment TODO ไว้ ไม่ได้ทำไปไปยาว 55
- กว่าจะเปลี่ยนที่อยู่ในช่วงรื้อ Stack เลย
📚 Less in more - ปรับ Stack ให้พอดีกับองค์กร
📚 Release Cycle ชอบที่ตรงนี้ ใครจะ release ได้ ทำ Test + Blue Green เรียบร้อย Code เข้า Master แล้วจบ //ส่วนตัวยังต้องบังคับเข้า Queue กลางอยู่ น่าจะต้องมาปรับๆตามให้ได้
📚 Platform Aspect - APM เอามาเก็บ Log ของ App อย่างเช่น Datadog เป็นต้น

📚 Write Tests + Code Review
- เน้น Unit Test
- เปิด PR เล็กๆ / มี Automate มาช่วยด้วย //ตอนแรกที่ฟังขำทั้งน้ำตาเลย Merge มาแล้ว แต่ส่งลูกค้าขึ้น Production ขบไปแล้ว มันเรื่องจริง T__T
📚 One Single Source of Truth - Code แนวคิด monorepo
- ทำทีละภาษา - //ตอนแรกที่ไปดูๆ เอา front-back รวมกันเหรอ ดีแล้วที่มาฟัง 555
- ข้อตกลง จะวาง Function ยังไง - Domain Driven Design

📚 Design Pattern = Code Architecture
- ใช้ Interface ทำ Dependency Injection สะดวก //อันนี้จริงครับ
- Singleton Pattern - 1 เดียว พวก Database Connection ใช้ประจำ
- Validator pattern - แต่ที่ฟังผมเองเข้าใจว่าเป็น Composite Pattern นะ
- ดูเพิ่มเติมเรื่อง Refactoring Refactoring: clean your code
📚 และตอน Demo เห้ย เพิ่งรู้ว่า jupyter nodebook นอกจาก python ภาษาอื่นก็เขียนได้ น่าจะอันนี้แน่เลย Time to learn C# with Notebook in VS Code - DEV Community 👩💻👨💻 เจ๋งหวะ
📚 ชอบ Session นี้ หลายอันมันตรงใจ เสียดายไม่ได้ไปงานเต็มๆ
THE PHYSICS OF SOFTWARE DEVELOPMENT
Speaker Rawitat Pulam
📚 มี Live ครับ เยี่ยมมาก จริงๆ Session นี้มันชนกับ PRODUCT ENGINEERING FOR SCALE ครับ
BLOG ของท่านอื่นๆ
- DOING GREAT WORK AT YOUR JOB ISN'T ENOUGH. YOU'LL NEED TO BRAG YOURSELF!
- บันทึกเกี่ยวกับงาน Dev Mountain Tech Festival ครั้งที่ 2 ที่เชียงใหม่ (mikkipastel.com)
สำหรับรอบนี้ Blog ที่หน่วงจริงๆ 55 นี้ก็คิดเหมือนกันว่ารอบหน้า ว่าจะไม่ตั้ง Challege ตัวเอง ว่าแบบ ถ้าไปฟังงาน Meetup ต้อง Contribute Blog กลับ ดู RAM สิ

และ อีกสักพักน่าจะมีการ Upload VDO ลงในนี้ Dev Mountain Tech Festival - YouTube แบบ Season 1 ครับ อ๋องานนี้มี Plan Season 3 ด้วย จัดปีหน้าครับ

Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



