[.NET] สรุปงาน DevRock #03 Rock Show

สำหรับงานนี้ ผมเพิ่งนึกว่ามีครั้งแรก 555 เพราะเข้ามาอยู่ในกลุ่ม Dev Rock Developer Group นานแล้ว (รู้สึกว่าชื่อเดิมเกี่ยวกับ ASP.NET MVC ครับ) ผมเพิ่งสังเกตุว่าตัว Event เพราะ เพื่อนใน FB หลายคนกด Like ไว้ใน Facebook ไว้นะครับ สำหรับงานครั้งนี้จัดเป็นครั้งที่ 3 และ โดยครั้งนี้จัดที่มหาวิทยาลัยหอการค้า คณะวิทยาศาสตร์ และเทคโนโลยี อาคาร 7 ชั้น 3 ครับ แต่วันนี้งานเริ่ม Late ไปนิดนึงนะครับ เนื่องจากฝนตกครับ โดยตัวงานเริ่มประมาณช่วง 0930 ครับ โดยมีรายละเอียด ดังนี้

BDD with .NET Behave โดยคุณ Peerapat Asoktummarungsri

  • ฺBehavior-driven development หรือ BDD - เริ่มมาจากของฟากภาษา Ruby (RSpec) จากนั้นเริ่มแตกออกไปหลายๆ ภาษา เช่น Java, .NET หรือ PHP เป็นต้น
  • ตัว BDD ทำหน้าที่เป็นตัวกลาง (Adapter) เชือมงานแต่ละชิ้น เข้าด้วยกัน ลองดูตัวอย่าง เช่น ทำเว็บหาราคาที่พัก
    • มี Login
    • มี Search
    • มีงานชิ้นเล็กอื่นๆ อีกหลายอัน

    แล้ว ... งานมันแยกกันทำนี่ คนนึงอาจจะทำ Search คนนึงทำ Login แล้วถ้า Login ก่อน Search หรือ Search ก่อน login ผลลัพธ์มันจะเป็นอย่างไร ?

  • BDD สำหรับในมุมของพี่เค้ามองว่าเป็น User Acceptance Test แบบ Coding ที่ Integrated หลายๆอย่างมารวมกัน แต่ไม่ใช่ของ Dev แต่เพียงฝ่ายเดียว ตัว Dev เอามันก็มี Bias (ลำเอียงได้)  โดยเอาทุกคนที่เกี่ยวข้องกับ Product เข้ามาด้วยทำด้วยกัน ทั้ง  BA, SA, Product Owner โดยตัว BDD ตามความเข้าใจของผมนะ ส่วนที่สำคัญ 2 ส่วน
    • Feature - ตัวที่เป็นภาษาคน พวก  Give When then โดยมันจะล้อกับ Story Card ใน Agile กลุ่ม  BA, SA, Product Owner  แล้วมันจะได้เป็น Living Document
    • Step - อันนี้แหละเป็นตัวที่ผูกความสัมพันธ์ของ Feature กับงานชิ้นเเล็กๆต่างๆที่เราสนใจ อันนี้ต้องมี Dev เข้ามาช่วยและ
  • สิ่งที่พี่เค้าทำ BDD บน Rider แต่ตัว Project เริ่มมาจาก Visual Studio ฉะนั้นตัว VS เปิดได้แน่ๆ
  • ตัว Tools หรือ Library ที่พี่เค้าใช้
  • ถ้ามาดู Code ใน GitHub ของพี่เค้า มีอะไรบ้าง จากความเข้าใจของผมล้วนๆ ถ้าผิดขออภัยด้วย
    • Feature - ภาษาคน ว่าจะทำอะไร
    • Actor -class อันนึ่งที่รับ Text เข้าไปจัดการ เอา Feature กับ ActionSteps
    • ActionSteps - Grammar มาตีความว่า Feature นั้น ทำอะไรได้ ใน Git อยู่ในโพลเดอร์ Steps
    • WebDriver - เนื่องจาก Test ตัวอย่างเป็นเว็บเลยมีตัว WebDriver มาเป็นตัวเชื่อมกับ Browser
    • SeleniumHocks - เอาไว้เตรียมอะไรต่างๆให้เรียร้อยำหรับ Test เก็บไว้ใน Context เช่น เปิด Browser ถ้าจะเคลียร์ Cache Cookies ก็ทำใน Step นี้แหละ เพื่อให้มันพร้อมที่สุดก็ทำใน Step นี้แหละ
    • pageObject - เป็น Helper ช่วยในการจัดการจับ Element ต่างๆของเว็บ ผมเข้า
  • เกร๊ดความรู้อื่นๆ ตัว
    • Selenium มีแบบ Remote กับ Local
      • Remote - ทำไว้ที่ไหนก็ได้ แล้วให้ Connect เข้าไป ตัว Server ซึ่งรับภาระหนักมาก เช่น เปิด Chrome โดนซัดแรมไปและ
      • Local - ขี้นที่เครื่องตัวเอง
    • ตัว BDD ลองดู Blog ที่ผมเขียนสรุปไว้จากงาน ATH2016 BDD with Cucumber มันไม่ง่าย แต่เริ่มได้
  • รวม Q&A ใน Session นี้
    Q: เคยลองกับค่าย Linux ได้ไหม
    A: Mono ยังไม่ได้ลอง ส่วน .Net Core ของ Selenium Support
    -----------------------------------------
    Q: ไม่ใช C# มา Test ได้ไหม ใ้ช้ Selenium ข้างนอกเลย
    A: ได้ แต่ต้องดูด้วย ตัว Framework หรือ Tools ที่เหมาะสมกับการใช้งาน
    -----------------------------------------
    Q: NSpec NBehave ต่างกันไหม ?
    A: ไม่ต่าง NSpec, NBehave, SpecFlow เป็น Implementation ของ Concept ฺBDD
    -----------------------------------------
    Q: ATDD กับ BDD ต่างกัน อย่างไร
    A: ลองอ่านจาก blog นี้ได้ครับ จะเข้าใจว่า ATDD คือ อะไร
    -----------------------------------------
    Q : Support Phathom js ไหม
    A : Selenium - Connect กับใครก็ได้ แต่ต้องมี WebDriver ด้วย มองว่าเป็น Interface กลาง

Giving ASP.NET WebSite visibility with Realtime Metrics โดยคุณ Mahasak Pijittum

  • สำหรับเรืองนี้อีกมุมที่เกี่ยวกับ Data Science ลองอ่านประกอบดูได้ครับ เรื่อง Real time Measurement with Big Data โดยคุณ Mahasak Pijittum เปิดแล้วลองเลื่อนลงไปดูครับ
  • สำหรับใน Session นี้จะมองไปอีกมุมนึง ในแง่ของการ Implement ขึ้นมาครับ
  • DevOps คือ Culture วัฒนธรรมองค์กร ที่ทำให้ Developer กับ Operation ใกล้ชิดกันมาขึ้น บริษัทใน Fortune หรือ ใน Silicon Valley มีน้อยคนที่เขียน Code อย่างเดียว ส่วนใหญ่ทำ Operation ด้วย (นี่เราทำแบบ DevOps เหรอ 555)
  • มาเริ่ม Business เขื่อ Report >> Report มาจากระบบ BI >> ฺฺBI มาจาก Data Snapshot
  • แล้ว Measurement ไปเพื่ออะไร
    • Track Success
    • Improve
    • Set Expectations
    • Help Decision
  • ถ้า Start up ที่ไหไม่ทำ Measurement เหนื่อยแน่ๆ เพราะ รู้ได้ยังไง Product ที่ทำมันสำเร็จ
  • Data Driven Strategy

    • มองภาพเหมือน TDD เลย ฺBuild >> Measure >> Learn
    • การทำ A|B Testing - เอามา Measure
  • ชุด Environment ที่แนะนำ
  • Time Series Database - Data Point คือ Single Value with tag ที่มี Time Label เวลาออกแบบระบบพยายามให้มันรองรับกับ DB อื่นๆ
    • InfluxDB
    • Prometheus - เหมาะเอาไว้สำหรับดูพวก Hardware
  • Visualization
    • Elastic Search เอาไว้ทำ Index + Kibana (UI หรือ Elastic Search)
    • Grafana - Beautiful metric & analytic dashboards และรองรับ Data Source หลายๆแบบ ทำให้เอาข้อมูลมาเปรีบเทียบ หรือทำมิติใหม่ได้
  • Library ที่ใช้
    • Metric.Net - Port มาจาก Java Metrics โดยทำหน้าที่ตามนี้แหละ บรรยายไว้ครับแล้ว
      library which gives you unparalleled insight into what your code does in production.
      

      แล้วเราดูอะไรได้บ้าง เช่น

      • Counter
      • Meter
      • Histogram - Percentile
      • Guage
      • Timer

      This slideshow requires JavaScript.

    • InfluxDB.Net - Time Series Database ถ้าใช้จริงงานทาง Speaker แนะนำส่ง Data แบบ Async เพราะ ถ้า DB ช้าเว็บก็จะช้าไปด้วย
  • เก็บข้อมูลตอนไหน - ทาง Speaker แนะนำให้ทำใน MVC Start ในการจัดการ Metric + HttpModules เชื่อมเข้าไป

    This slideshow requires JavaScript.

    เอาไปครอบให้ได้มากที่สุด ไม่แนะนำให้ไปยุ่งกับ Controller มาก เพราะ ตัว Controller มันมีงานของมันอยู่แล้ว เช่น

    • Response Time
    • Controller
    • Dependency Resolve : Dependency Hell
  • ข้อมูลต่างๆ จะดูจาก Tag ในการ Filter Group by
  • ประโยชน์
    • Business
    • Peek Time - เอาไปประเมิน Scale up, Scale Down ของระบบ พวก Cloud ใช้มาเพิ่มเครื่อง ใช้น้อยลดเครื่อง
    • Code Refactor - ไม่ใช่สัญชาติญาณ เรามี Data มารองรับ ว่าควรทำจริงๆ
    • และอื่นๆ
  • Quote
    • Code ทุกตัว ส่งผลถึงงานที่หน้า Operation - อันนี้ เขียนจริง เจ็บจริง งานเข้าจริง
    • งาน Software ไม่ใช่การเขียน Code แต่เป็นการ Design ให้ User และ Operation งานได้ลื่นไหล
  • สำหรับ Source Code อยู่บน GitHub ครับ โดยเขียนเป็น Orion Architecture
  • รวม Q&A ใน Session นี้
    Q : Lean Start up กับ Date Driven Strategy ต่างกันอย่างไร
    A : Concept คล้ายๆกัน แต่อย่าสับสนระหว่าง Data Driven Development, Data Driven Programming
    -----------------------------------------
    Q : ใน Enterprise เอาไว้ทำอะไร
    A : Performance Test ของเดิม Test โดยเอา Tools อย่าง JMeter เข้ามาใช้เป็นต้น ในช่วงก่อนขึ้น PROD แต่เรื่องนี้อาจจะมานำใช้ เป็นการรับประกันตาม SLA ก็ได้นะ แต่ต้อง Design ระบบให้รองรับมาตั้งแต่แรก
    -----------------------------------------
    Q: วัด Metric จากอะไร ทั้งหมด หรือ
    A: ที่มีผลกับ Business

CI&CD for ASP.NET Core with VS Team Service โดยคุณ Nattapong Nunpan

  • CI ส่วนตัวผมมองว่าเป็นการทำ Logistics ของ Software นะ
  • ถ้าไม่มี CI จะเกิดอะไรขึ้น
    • ฺBug
    • Team Cohesion
    • Poor Code Quality
    • Project Vision
    • Lack of Deploy able
  • Best Practices การทำ CI & CD
    • Maintain single repository
    • Automate Build
    • Selt Tesing = Automate Test
    • Commit บ่อยๆ
    • พยายาม Commit แล้วให้ตัว CI มาเดิน Flow Build & Test
    • Test ไม่ควรเกิด 10-15 นาที เพื่อให้ได้ Feed Back ไว
    • Test Environment ควรใช้เคียงกับ Prod
    • Automate Deploy
  • Tools ที่ใช้ Demo
    • Microsoft Visual Studio
    • VS Team - ตัว CI & CD ทาง Speaker แนะนำว่ามันเหมาะกับทีมเล็กๆ
    • GitHub
    • Azure Cloud - สำหรับ Deploy ฟรี ถ้ามี Account ของ Azure
  • Continuous Delivery vs Continuous Deployment - ต่างตอนสุดท้าย Manual กับ Auto ตามรูปครับ
  • รวม Q&A ใน Session นี้
    Q : ทำ CD แล้ว Publish ขึ้น Nuget ได้ไหม
    A : ทำได้
    -----------------------------------------
    Q : VS Team ทำงานบน Cloud แล้วมีค่าใช้จ่ายไหม
    A : ใช่ ฟรี Agent เดียว 1 Queue
    -----------------------------------------
    Q : VS Team ใช้ Test ของใคร
    A : MS Nunit XUnit
    -----------------------------------------
    Q : VS Team ใช้ กับภาษาอื่นๆ
    A : คิดว่าได้
    -----------------------------------------
    Q : VS Team Gen Ticket ได้ไหม ถ้าบิ้ว Test แล้ว Error
    A : ไม่แน่ใจว่าเชื่อมกับระบบ Ticket ได้ไหม แต่ถ้าตัว Team City Support

Cross-Platform Development with ASP.NET Core MVC โดยคุณ Pongsakorn Thanopassakul

  • ใน session นี้ ผมอาจจะไม่เน้นจดเยอะ ครับ เพราะส่วนมาเป็นการ Demo กับตัว .Net Core และ Slide เข้าใจง่ายมากครับ
  • ASP.NET Core ทุกอย่างอยู่บน NuGet หมด เป็น modular และรันบน .NET Full 4.6 ได้
  • Build In Dependency Injection(DI)
  • Any Host บน IIS, NGINX ได้แล้ว
  • ASP.NET Core รองรับ console, web และ Test (XUnit) แต่ผมลองไปหาข้อมูลเพิ่มมา Nunit ก็ใช้ได้แล้ว
  • ไม่มี csproj และ มีแต่ Json (ดูคล้ายของตัว NPM เลย)
  • ใช้ VS CODE
  • เดิม ASP.NET MVC return ActionResult แต่ ASP.NET CORE return IActionResult
  • คำสั่ง Command line ต่างๆ เริ่มด้วย dotnet เช่น
    dotnet --version
    dotnet new
    dotnet restore
    dotnet bulid
    dotnet run
    dotnet publish
    dotnet core cheatsheet
    
  • kestrel Bulid in Serverที่ Claim ว่าเร็วกว่า Node 8 เท่า
  • Middleware Pipeline คือ ตัวที่เราเข้าถึงได้ ช่องว่างระหว่าง HTTP Request/Reposnse ไปจนถึง Controller เราสามารถจัดการได้

    ทำงานตามลำดับที่ Add มา เช่น

    • Diagnostic Middleware
    • Authentication Middleware
    • MVC Middleware
  • มี Feature ใหม่อย่าง viewiport, tag-helper, vie components (Partial View แบบ upgrade มี Controller ในตัว)
    • ใช่กับ Tools พวก BOWER ด้วย
  • MS Love Docker ทาง MS มีเตรียม Image ไว้ให้แล้ว
  • BOILERPLATE : Tools Generate Code
  • รวม Q&A ใน Session นี้
    Q: อุปสรรคตอนเริ่มต้นของ DOTNET CORE
    A: ตัว Document ดีระดับนึง เริ่มจาก 0 จะดีกว่า ถ้าใช้พวก BOILERPLATE มันจะงงสิ่งที่ Tools มันสร้างให้ แต่ถ้าเคยใช้พวก Node กับ NPM มาก่อนจะไปได้เร็วมาก ทางวิทยาการได้แนะนำมี Course ที่น่าสนใจบน Udemy ลองไปทำตามดูครับ
    -----------------------------------------
    Q: tag-helper กับ Angular
    A: คล้ายกันครับ แต่ Tag-Helper จะเข้ากันกับของทาง MS ได้ดีกว่า และตัว Tag-Helper ตัว Code จะสวยกว่า ไม่เหมือนกับ Razer ที่มีอักขระแปลกๆ
    -----------------------------------------
    Q: ช่วยอธิบาย DI ได้ไหมครับ
    A: ตามรูปนี้เลยครับ

    Jpeg

    -----------------------------------------
    Q: DTO View Model
    A: DTO เหมาะกับ web service

Microsoft Power BI โดยคุณ Thirapat Wiwittanaporn

Jpeg

  • มัน คือ Tools ที่เอาไว้สำหรับ Visualization ข้อมูลได้ง่ายๆ User ทำเองได้
  • มีทุก Platform ตัว Desktop ฟรีนะ
  • ตัว Power BI ใช้กับภาษา R ได้ด้วย
  • อ่อกลุ่มใน Facebook ด้วยนะ Thai Power BI User Group
  • รวม Q&A ใน Session นี้
    Q : Support พวก Streaming Data ไหม
    A : [2016-10-10] ทาง Speaker Update คำตอบแล้วครับ มี 2 ลิงค์ที่น่าสนใจครับ Real-time streaming in Power BI (Preview) กับ Azure Stream Analytics
    -----------------------------------------
    Q : มี Software ที่คล้ายกับตัว Power BI ไหม
    A : มี เช่น ตัว Tableau Community
    -----------------------------------------
    Q : Power BI Support non MS SQL เช่น MongoDB ไหม
    A : [2016-10-10] ทาง Speaker Update คำตอบแล้วครับ ลองไปดูตามได้เลย MongoDB ODBC Driver for Data Integration with Power BI

Use Distributed Cache in ASP.NET (Ignite.NET) โดยคุณ NineCh Enin

Jpeg

  • มาเริ่มของเว็บ Cache มี 3 ระดับ
    • Application
    • Session
    • MS SQL Server รองรับทั้ง App และ Session
  • Ignite.NET
    • เป็น Cached ทำได้หลายอย่างตามรูปเลยครับ

      ภาพจากเว็บ https://ignite.apache.org/
      ภาพจากเว็บ https://ignite.apache.org/
    • เนื่องจาก Lib ตัวนี้ ข้างใต้เป็น Java เอา .Net มาครอบ โลกของ Java ่ช่างยิ่งใหญ่แบกรับภาระของโลกใบนี้ ฮ่าๆ ต้อง set JAVA_HOME ด้วยนะ และก็มันมี Exception แบบ Java พ่นออกมาด้วยครับ ถ้าจะใช้ก็ต้องติดความเป็น
  • Support LINQ ในการ Query
  • สำหรับของค่ายอื่นๆ เป็นตัว Memcached (อันนี้ไม่ชัวร์ว่าเข้าใจถูก หรือป่าวนะ เห็นมีหลายตัวเลยที่เกี่ยวกับ Memcached

วิดีโอให้ดูกันเต็มๆด้วยครับ โดยคุณ Boriphuth Saensukphattraka

ปิดท้ายด้วยของที่ระลึกจากงานครับ

ASCII


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.