สรุปงาน DevMountain #02

งาน DevMountain จัดมา 2 รอบแล้ว แต่ Season 1 ไม่รู้ข่าว แหะๆ สำหรับงานนี้ Season 2 และ โดยจัดที่เชียงใหม่เลย แต่ไม่ได้ไปนะ พอดีมีธุระเย็นวันที่ 12 ครับ สำหรับงานนี้จัด 2 วันเต็ม

  • 12-NOV-2022 จะเป็นส่วน Cloud Native Lanna 2022 (DevMountain)
  • 13-NOV-2022 DevMountain #02 มีหัวข้อให้เลือกอยู่นานเลย เพราะวันก่อนจิ้มๆหัวข้อที่สนใจ

จริงต้องบอกว่า Theme Tech Week Meetup เพราะมีงานอื่นๆ จัดไปด้วย ตามนี้เลย <thai-tech-calendar /> | รวม อัพเดท Tech event, Tech Meetup ในไทยไว้ในที่เดียว (techcal.dev)

กลับมาในส่วนของ DevMountain #02 ที่ได้ฟังจริงๆ ตามนี้ครับ

APISIX

  • 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

  • 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 ยังไง ?
    Encorage ว่าการเป็น Enigneering Manager ไม่ต้องกดดัน คือ เปิดช่องให้ปรับตัวกับองค์กร และมี save space ในการถาม Asking for Help

WEB3 LEGO: A GUIDE YO WEB3 DEVELOPER STACK

  • 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 การใช้งานที่นึงจะยุ่งพอสมควร
    • Accessability
    • Cost - ทุกอย่างเวลาอยู่ On-chain ต้องมี Cost ที่ใช่ในแต่ละ Tx
  • สรุป Web2 / Web3
ชอบอันนี้ Web3 จะช่วยให้ Creator มี Value ที่ได้รับมากขึ้น ทาง Investor

DIGITAL FORENSIC กับงาน DATA ANALYTIC

  • ปัจจุบันอาญชกรรมทางคอมพิวเตอร์มีเยอะมาก ตามยุค 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

  • 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

  • ตอนแรกคิดว่าน่าจะเกี่ยวกับ 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

  • 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 ไว้อยู่นะ น่าจะเดือนหน้ามา Publish อีกที

SERVER PERFORMAMCE AND SYSTEN DESIGN

  • 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

  • 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 จะมีการกำหนดไว้ เคสนี้
    • ส่วนตัว Review Code แล้ว Base Case / Exit เคสแทนนะ
    • Keyword Tail Recursion - พยายามลด Stack ตอน Runtime ให้น้อยที่สุด เท่าที่ลองหาเพิ่มเป็นแนวคิดของ Functional Programming นะ
  • 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

  • ชอบ 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

BLOG ของท่านอื่นๆ

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