สรุปเนื้อหาจากงาน Santa Cloud in Town

จัดงานโดยบริษัท Seven Peaks

Ponggun
T. T. Software Solution
4 min readDec 1, 2022

--

ชอบ Meme นี้มากๆครับ Made My Day มากเลย น่าร้ากกกกกก

ส่วนตัวแล้วดีใจมากๆที่มีโอกาสได้มางานนี้ครับ เพราะชื่นชมบริษัท Seven Peaks มานานแล้ว เห็นมีการจัด Tech Meetup ดีๆขึ้นบ่อยๆ รวมถึง Technology ที่ใช้ ทั้ง .NET หรือ Azure ก็เป็นส่วนที่ผมให้ความสนใจอยู่เสมอ เหมือนได้มาเจอคนที่มีประกบการณ์ทำงานที่คล้ายๆกัน อบอุ่นอย่างบอกไม่ถูกเลยครับผม

แนะนำบริษัท Seven Peaks

https://web.facebook.com/sevenpeakssoftware/

Seven Peaks เป็นบริษัทระดับสากลที่ดำเนินกิจการในการให้บริการทางด้านของเทคโนโลยี ไม่ว่าจะเป็นเรื่องของ Digital Transformation, ออกแบบระบบที่รองรับการใช้งานระดับโลก โดยคำนึงถึงผลลัพธ์ที่ดีในทางธุรกิจ

ปัจจุบันบริษัทมีสำนักงานหลักอยู่ที่ กรุงเทพ ใกล้ๆกับ MRT ศูนย์สิริกิต โดยมีทีมงานมากประสบการณ์ในสายงานเทคโนโลยีนี้มากกว่า 200 คน, มาจาก 25 ประเทศ ที่มีความถนัดทางด้านของ Native Mobile App Development, Web Technology และ UX/UI Design

ติดตามเนื้อหาของบริษัทเพิ่มเติมได้ที่ลิ้งข้างล่างนี้นะครับผม เย้

บรรยากาศงาน

งานมาในตีมคริสมาสต์ บรรยากาศอบอุ่น มีเครื่องดื่มชาสีเหลืองนุ่มคอ ทานคู่กับพิซซ่าและโดนัท เป็นมือเย็นที่สนุกสนานและยังได้ความรู็อีกเพียบเลยครับผม

แสง สี เสียง พร้อมมากครับ มี Live สดด้วย ครบสุดๆ
น้ำสีเหลือง ชุ่มคอ เหมาะกับหลังเลิกงานจริงๆ
โดนัทน่าร้ากกก
คนเยอะอบอุ่นมากครับ
พิซซ่าเยอะมาก ทานไม่หมดกันเลยทีเดียว

🏆 คุณ Mean Kaenchan — How to containerize your applications

Container Technology คืออะไร

เป็นเทคโนโลยีที่ช่วยทำให้มั่นใจว่าระบบที่เราพัฒนาขึ้นมานั้นจะได้ผลลัพธ์ในการทำงานที่เหมือนกันในทุกๆเครื่องที่เรานำไปติดตั้งครับ

ที่สามารถทำได้แบบนี้ เพราะ Container นั้นนอกจากจะมี Code ที่เราเขียนแล้ว ยังรวมไปถึง File System, Configuration, Library DLL ที่เกี่ยวของติดไปอีกด้วยครับ

ภาพเปรียบเทียบทางซ้ายจะเห็นว่าใช้ทรัยากรน้อยกว่าทางขวาเพราะไม่ต้องรัน OS ซ้อนกันหลายชั้นครับ

ทำไมเราถึงต้องการ Containerize Applications

  • เพิ่มความเร็วในการพัฒนาเพื่อส่งมอบงานให้กับลูกค้าได้ไวขึ้น
  • ติดตั้งได้อย่างยืดหยุ่น พัฒนาครั้งเดียว ติดตั้งได้หลายที่
  • นักพัฒนาสามารถใช้คอมตัวเองในการจำลองการทำงานได้หลากหลายมากขึ้น

ตัวอย่างของ Containerize Application ที่เขียนด้วย .NET

ขั้นตอนการพัฒนา Containerize ก็จะประมาณตามภาพนี้นะครับ

  • ขั้นตอนแรกให้สร้าง Dockerfile เพื่อติดตั้ง File System, Configuration, Library DLL และ Code ของเรา
  • สั่ง Build Dockerfile มาเป็น Docker Image
  • นำ Docker Image ไปรันที่ไหนก็ได้ ที่ติดตั้ง Docker Engine อยู่ !!
ภาพประกอบจาก practical-guide-on-writing-a-dockerfile
ตัวอย่าง Dockerfile จากในงานครับ

🏆 คุณ Jose Barbosa — Deploying your Apps using Kubernetes

ด้วยเทคโนโลยีของ Microservice ที่เข้ามาช่วยในการรองรับการขยายของระบบได้มากขึ้น โดยทำการแบ่งส่วนการทำงานออกมาเป็นระบบย่อยๆที่สามารถทำงานแยกออกจากกันได้อย่างอิสระนั้น ทำให้เกิด Services จำนวนมากที่เราต้องคอยดูแลและจัดการครับ

ตัวอย่าง Microservice ที่แบ่งระบบออกจากกันและทำงานได้อย่างอิสระครับ

ถ้าเราใช้แนวทางแบบเก่าจะทำให้การจัดการตรงนี้ทำได้ลำบากมาก เพราะเราต้องการ Automation มาช่วยลดภาระในการดูแลตรงนี้ลง และต้องการระบบที่สามารถจัดการ Services ต่างๆได้อย่างพร้อมกัน หรือที่เรียกกันว่า Orchestration

Introduction to Kubernetes

หลังจากกล่าวถึงปัญหาข้างต้นไปแล้ว ก็มาถึงแนวทางการแก้ไขโดยการใช้ Orchestration Tool ซึ่งในที่นี้จะใช้ Kubernetes ครับผม

ภาพโครงสร้างของ Kubernetes

Kubernetes ประกอบไปด้วย

  • Kubectl เป็น Commandline Tool ที่ใช้ในการจัดการ Kubernetes นะครับ
  • Pods เป็นหน่วยที่เล็กที่สุดที่เก็บ Docker Container อยู่ข้างใน
  • Namespaces เป็นที่รวบรวม Pods เข้าด้วยกัน
  • Nodes คือคอมพิวเตอร์ที่จัดการระบบ โดยจะแบ่งเป็น Master Node ที่เป็นเสมือนสมองของการทำงาน และมี Worker Node ที่คอยจัดการกับ Pod
  • Services ทำหน้าที่เป็น Load Balancer
  • etcd เอาไว้รวบรวมข้อมูลทั้งหมดที่เกี่ยวกับ Kubernetes ซึ่งสำคัญมากๆ
แนวทางการใช้งาน Kubernetes

Introduction to Azure Kubernetes Service (AKS)

AKS เป็น Managed Service ของ Microsoft Azure ที่ช่วยในการจัดการ Node ให้กับเรา โดยเฉพาะ Master Node ที่มีความสำคัญกับระบบมากๆ เราต้องการความมั่นใจว่าตัว Master Node จะไม่ล่ม ซึ่งการติดตั้งและดูแลรักษาทำได้ยากมาก การใช้ AKS จะช่วยลดช่องว่างของปัญหาลง ให้เราได้พุ่งเป้าไปที่การพัฒนา Code ของระบบมากขึ้นครับ

ตัวอย่างการใช้งาน AKS บนแนวทาง DevOps

🏆 คุณ Giorgio Desideri — Speaking about Event-Driven Architecture

เนื่องจากผมเข้ามาฟังเนื้อหาไม่ทัน ผมเลยขออนุญาตแบ่งปันคำแนะนำที่ได้รับแทนนนะครับ

สรุปคร่าวๆคือ ควรใช้ Microservice, Event-Based Architecture เมื่อเจอปัญหาที่จำเป็นต้องใช้จริงๆเท่านั้นครับ เพราะเพิ่มทั้งความซับซ้อนและค่าใช้จ่ายที่จะเข้ามาในระบบอีกเยอะมากๆๆๆๆๆๆ

รวมถึงผมขออนุญาอธิบายการทำงานแบบ Event-Driven Architecture เพิ่มเติมดังนี้นะครับ

Request-Response Driven

เป็นระบบที่ควบคุมมีการทำงานระหว่างบริการ (Service) ต่างๆ โดยมีการ Request จาก Client เข้ามายัง Server หลังจากนั้น ระบบจะทำการประมวลผลเป็นลำดับขั้นตอนระหว่าง Service จาก 1 ไป 2 ไป 3 จนกระทั่งได้ Response กลับไปยัง Client

ตัวอย่างเช่น ระบบลงทะเบียนคนไข้

  1. Registration Service — คนไข้ (Client) กรอกแบบฟอร์มเพื่อลงทะเบียนในระบบ เสร็จแล้ว Registration Service ทำการเรียกบริการอีก 3 ส่วนเพื่อดำเนินการลงทะเบียนจนแล้วเสร็จ
  2. User Profile Service — ระบบ (Server) จัดเก็บข้อมูลการลงทะเบียนลงฐานข้อมูล
  3. Notification Service — ระบบ (Server) ส่ง Email ไปยืนยันที่ Mailbox ของคนไข้
  4. Report Service — ระบบ (Server) เก็บข้อมูลสถิติของการลงทะเบียนในรอบเดือน

ระบบจะทำงานและถูกควบคุมตามลำดับด้วย Registration Service จนแล้วเสร็จ ซึ่งก่อให้เกิดการรอการทำงาน (Synchronous) และก่อให้เกิดการเชื่อมโยงระหว่างบริการต่างๆ (Service) ในระบบจะค่อนข้างยึดกันอย่างแน่นหนา (High Coupling)

ขั้นตอนการทำงานแบบตามลำดับ (Synchronous)

ซึ่งการทำงานในรูปแบบนี้เหมาะสมกับการรับส่งข้อมูลภายในระบบดี เพราะโครงสร้างที่ไม่ซับซ้อนและจัดการง่าย

Event-Driven Architecture

จะมีความแตกต่างตรงที่จะมีตัวกลางคอยเชื่อมบริการต่างๆ (Service) กันอย่างหลวมๆ (Loosely Coupling) และการทำงานจะไม่ต้องรอกันตามลำดับ (Asynchronous) โดยจะใช้เหตุการณ์ (Event) ที่เกิดแทนในการเริ่มการทำงานแทนครับ

ขั้นตอนจะเปลี่ยนไปคือ เมื่อมี Event นึงได้เกิดขึ้น ระบบจะส่งผลกระทบไปยังบริการอื่นๆที่สนใจ Event นี้ และนำผลลัพธ์ที่ได้ไปประมวลผลกันเองต่อไป โดยที่ผู้สร้าง Event ไม่จำเป็นต้องทราบว่าแต่ละบริการอื่นๆเหล่านี้จะทำงานอะไรต่อบ้าง

ซึ่งเราจะเรียกผู้สร้างเหตุการณ์ว่า Event Producer, ผู้สนใจเหตุการณ์ว่า Event Consumer, ช่องทางในการรับและส่ง Event ว่า Event Broker

รูปแบบการสื่อสารจะเกิดขึ้นเมื่อ

  1. Event Producer มีการลงทะเบียน (Publish) ว่าจะส่งข้อมูลเข้ามาที่ Event Brokerเมื่อมี Event เกิดขึ้น
  2. Event Consumer มีการลงทะเบียน (Subscribe) ที่ Event Broker เพื่อแจ้งความประสงค์ที่จะรับข้อมูลที่เกิดจาก Event
  3. เมื่อมีการทำงานเกิดขึ้น Event Producer จะ Publish Event ขึ้นที่ Event Broker หลังจากนั้น Event Broker จะส่งต่อ Event ไปยัง Event consumer ที่ Subscribe ไว้ (Notification)

ฝากส่งท้าย

สุดท้ายนี้ทาง Seven Peaks กำลังประกาศรับสมัครงานหลากหลายตำแหน่งเลยครับผม ท่านใดสนใจผมแนะนำมากๆ ได้โอกาสทำงานในบริษัทระดับสากล บรรยากาศการทำงานที่ดี เพื่อนร่วมงานน่ารัก เงินเดือนและสวัสดิการก็ดีมากๆเลยครับ ได้ฝึกภาษาอังกฤษด้วยน้าาาา

สมัครกันได้เลยที่ลิ้งข้างล่างนี้นะครับ

ขอบคุณผู้อ่านทุกท่านมากๆเลยครับผม

Happy Coding and Sleeping : D

นายป้องกัน

--

--

Ponggun
T. T. Software Solution

Development Manager, Web Developer with ASP.Net, ASP.net Core, Azure and Microsoft Technologies