สรุปงาน DevMountain2

งาน 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 ที่ได้ฟังจริงๆ ตามนี้ครับ

APISIX

Speaker Suriya Siangsai

📚 API Gateway vs Proxy

  • Proxy รับ Request จาก Client ส่งไปหา Upstream (Service) ด้านหลัง
  • Gateway มัน Add-On เสริมจาก Proxy ในด้าน Security / Authentication เป็นต้น

📚 APISIX (API Gateway)

  • 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

📚 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:

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 - อาจจะเป็นหัวหน้าเรา หรือคนอื่นๆก็ได้ นอกจากเป็นตัวบุคคลแล้ว อาจจะเรียนรู้จากสื่ออื่นๆ เช่น

📚 งานด้าน 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

ชอบอันนี้ Web3 จะช่วยให้ Creator มี Value ที่ได้รับมากขึ้น ทาง Investor

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 ปัจจุบัน
  • วิธีการเดิม 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_T
  • kumar-asshole.sh - มีเคสจากคุณ kumar มาบ่อยๆ จะ default เอา backup ล่าสุดมา restoer
  • hangover.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 หลุดออกมาด้วย

📚 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 ของท่านอื่นๆ

📚 MikkiPastel

สำหรับรอบนี้ 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.