Slide
DONG-YANG แพลตฟอร์มสำหรับการพัฒนา
Web และ Mobile แอพพลิเคชันบนสถาปัตยกรรมไมโครเซอร์วิส
extension
SaaS

(Software as a Services)
พัฒนาซอฟต์แวร์ภายใต้การจัดการ ควบคุมให้มีความยืดหยุ่นสูง และรองรับการปรับเปลี่ยนของเทคโนโลยีสมัยใหม่

PaaS

(Platform as a Service)
มีแพลตฟอร์มสำหรับนักพัฒนา และมี API services ที่หลากหลาย เหมาะกับการนำไปพัฒนาแอพพลิเคชัน เช่น PSU OAuth Service , PDF services

dashboard
IaaS

(Infrastucture as a Service)
มีทรัพยากรที่รองรับการขยายการทำงานของเซอร์วิส และมีการจัดการที่เรียบง่าย สามารถตรวจสอบการทำงานได้อย่างง่ายดาย

Slide
Howdy
I’m Thawat Varachai
"แน่นอนความกล้าของแต่ละคนนั้นไม่เท่ากัน คนส่วนใหญ่มักจะยึดติดอยู่กับสิ่งเดิม ๆ จนไม่กล้าที่จะเปลี่ยนแปลงอะไร ๆ แต่สำหรับผมแล้วความเปลี่ยนแปลงไม่ใช่อุปสรรค์ สิ่งใหม่ ๆ ไม่ได้เลวร้ายเสมอไป เราต้องกล้าที่จะเปลี่ยน เพื่อสร้างสรรค์สิ่งใหม่ ที่มีคุณค่าต่อส่วนรวมและองค์กร"

THAWAT VRACHAI
ผู้นำการเปลี่ยนแปลงเพลตฟอร์มใหม่

New Platforms / เพลตฟอร์มใหม่
0%
traditional Platforms / เพลตฟอร์เดิม
0%
แนะนำ SaaS
SaaS
มันคือการพัฒนาแอพพลิเคชันสมัยใหม่ที่พร้อมจะปรับเปลี่ยนได้อย่างยืดหยุ่นที่สุด และมันถูกสร้างมาจากกระบวนการที่จำเป็นต้องใช้ทีมงานที่มีความเข้าใจกัน และมีเป้าหมายเดียวกัน เพื่อสร้างสรรค์ผลงานให้ได้ตามที่ตั้งใจไว้ นักพัฒนาหรือ Delveloper จำเป็นต้องมี 2 ทักษะที่สำคัญดังนี้
1.Developer workflows

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

2.Tech stack

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

developer workflow
Developer Workflows
1. Develops environment

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

2. QA : Quality Assurance

กระบวนการนี้จะเป็นส่วนที่นักพัฒนาจำเป็นต้องสร้างความสมบูรณ์ของ code ต้องผ่านการตรวจสอบว่ามันทำงานได้อย่างถูกต้องและเป็นไปตามความต้องการหรือไม่ นอกจากนั้นยังต้องมีเอกสารกำกับการเปลี่ยนแปลงที่กระทำไว้อย่างชัดเจนเพื่อตรวจสอบย้อนหลังได้เสมอ

3. Productions environment

เมื่อผ่านการทดสอบในระดับหนึ่งที่พร้อมใช้งานจริงได้แล้วนักพัฒนาจะต้องนำ Code ไป Run ในสภาพแวดล้อมที่สร้างขึ้นมาสำหรับใช้งานจริง(Production) หากพบข้อบกพร่องในสภาพแวดล้อมนี้ Code จะต้องถูกนำมาแก้ไข

Tech Stack
ตัวอย่าง TECH STACK

เทคโนโลยีของการพัฒนาสมัยใหม่มีอยู่หลากหลาย ขึ้นอยู่กับว่าเราเลือกใช้อย่างไรให้เหมาะสมกับทีมงานและขนาดของ Project ยิ่งเราใช้จำนวน TECH STACK มากความซับซ้อนก็จะยิ่งตามมาด้วย แต่ในทางกลับกันหากเราเลือกใช้ได้อย่างเหมาะสม มันจะทำให้เกิดประสิทธิภาพของการพัฒนาได้อย่างดีเยี่ยม ดังนั้นนักพัฒนาจำเป็นต้องศึกษาเทคโนโลยีสมัยใหม่อยู่เสมอ ๆ เพื่อเรียนรู้และนำมาประยุกต์ใช้งานได้อย่างดีที่สุด

Front-End

คือส่วนที่ประกอบไปด้วยเทคโนโลยีที่จำเป็นต้องใช้ในการพัฒนา Web และ Mobile Application เช่น React , React JS เป็นต้น ส่วนนี้จะทำงานและมีปฏิสัมพันธ์กับผู้ใช้งานมากที่สุดอาจจะเรียกว่า UI/UX ก็ว่าได้

Back-End

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

CI/CD

คือส่วนที่จะมาช่วยเหลือนักพัฒนาในการทำ Workflows เช่น มีการบันทึกประวัติการแก้ไข code มีการทดสอบย่อย Unit testing เป็นต้น และเมื่อผ่านกระบวนทั้งหมดแล้ว CI/CD ก็จะนำ code ขึ่นไป Run บน Production ให้อย่างเป็นระบบอัตโนมัติหรือที่เรียกว่า Automation

Data

คือส่วนจัดการข้อมูลโดยเฉพาะ มันมีหน้าที่ในการบริการให้ข้อมูลที่ถูกต้องและรวดเร็ว รองรับปริมาณผู้ใช้งานได้เป็นจำนวนมาก ทั้งนั้นก็ขึ้นอยู่กับการออกแบบและเลือกใช้เทคโนโลยีทางด้านการจัดการข้อมูล เช่น MySQL , Mongo เป็นต้น

Infrastructure

คือหัวใจสำคัญที่ทำให้ระบบทุก ๆ สิ่งทำงานได้บนสภาพแวดล้อมที่ถูกสร้างขึ้นมาให้เหมาะสมกับ TECH STACK นั้น ๆ และรองรับการประมวลผลที่เพียงพอต่อการใช้งาน ปัจจุบันก็มีหลายเทคโนโลยี เช่น Docker , Google Cloud , Amazon เป็นต้น

แนะนำ PaaS
PaaS
มันคือกรอบการพัฒนาที่ถูกสร้างขึ้นเพื่อช่วยให้นักพัฒนา สามารถนำเซอร์วิสที่มีอยู่ไปใช้ในการพัฒนาแอพพลิเคชัน นักพัฒนาจะต้องมีการลงทะเบียนเพื่อขอใช้งานเซอร์วิสที่มีอยู่เช่น บริการยืนยันตัวตน (PSU OAuth) , บริการส่งอีเมล เป็นต้น
Devportal

เป็นศูนย์รวมเครื่องมือของนักพัฒนาที่ต้องการขอใช้เซอร์วิสต่าง ๆ และยังมีเอกสารการนำไปใช้งาน พร้อมทั้ง code ตัวอย่างในการพัฒนา

7 services

บริการหลักของเราที่ได้ออกแบบและพัฒนาไว้จะมีอยู่ทั้งหมด 7 เซอร์วิส แบ่งเป็น 2 ประเภทคือ เซอร์วิสทั่วไป และเซอร์วิสภายใน

Devportal
ตัวอย่าง Devportal

Devportal หรืออาจะเรียกว่า Develop Console ก็ได้ ส่วนนี้มีความจำเป็นมากสำหรับนักพัฒนา เมื่อเซอร์วิสมีให้บริการมากขึ้นระบบจะสามารถสิบค้นเซอร์วิสที่ต้องการจะนำไปใช้ได้ง่าย และมีตัวอย่าง code เพื่อเป็นแนวทางในการเขียนในรูปแบบของภาษาต่าง ๆ เช่น PHP , Python , React JS เป็นต้น

7 Services
7 เซอร์วิสหลัก
เราได้ออกแบบเซอร์วิสหลักไว้ 7 เซอร์วิสที่สำคัญและมีเซอร์วิสย่อย ๆ อยู่ภายใน นักพัฒนาสารถเข้าถึงเซอร์วิสทั้งหมดนี้ผ่าน Devportal
Authorization Services

OAuth 2.0

ABAC Services

Attribute Based Access Controll

UI/UX Services

Automation User Interface

Accessories Services

Generate and helpful

API Gateway Service

Explorer and discovery

Monitoring Services

Checkup Availality

Log Services

Trancking and Debuging

previous arrow
next arrow
แนะนำ IaaS
IaaS
มันคือแหล่งทรัพยากรที่ทำให้แพลตฟอร์มทั้งหมดทำงานได้ เรามีเครื่องแม่ข่ายเสมือน(VM Server) ที่สามารถขยายความต้องการของทรัพยากรเพิ่มได้อย่างสะดวกและรวดเร็ว นอกจากนั้นเรายังมีซอฟต์แวร์ที่ใช้ในการจัดสรรทรัพยากรให้เหมาะสมกับความต้องการของแต่ละเซอร์วิส ด้วยเทคโนโลยี Container
virtual machine

เป็นเครื่องแม่ข่ายที่สามารถขยายความต้องการของทรัพยากรได้อย่างสะดวก รองรับเทคโนโลยีสมัยใหม่ มีระบบในการบริหารทัพยากรเพื่อให้เพียงพอต่อความต้องการใช้งานของระบบสารสนเทศ หรือแพลตฟอร์มต่าง ๆ ที่นำมาใช้งาน

Contaniner technology

เป็นเทคโนโลยีที่เข้ามาช่วยในการจัดการสภาพแวดล้อมของการพัฒนาแอพพลิเคชันได้อย่างสะดวกและรวดเร็ว มันสามารถสร้าง (Build) และนำไปใช้ (Deploy) กับเทคโนโลยีสมัยใหม่ได้โดยการกำหนดความต้องการที่จะติดตั้งเพคเกจ กำหนดความต้องการทรัพยากร เช่น CPU , MEMMORY , NETWORK เป็นต้น เพื่อให้เหมาะสมและเพียงพอต่อการใช้งาน

VM
VIRTUAL MACHINE

โครงสร้างของ VM ประกอบไปด้วยชั้นการทำงานหลัก ๆ ด้วยกัน 3 ชั้นดังนี้

Infrastructure

เป็นรากฐานของทรัพยากร ทุกสิ่งจำเป็นต้องอาศัยทรัพยากรในการทำงานทั้งหมด เช่น CPU , RAM , Hardisk และ Network เป็นต้น ชั้นการทำงานนี้ส่วนใหญ่แล้วจะมองเป็น Hardware ก็ว่าได้

Hypervisor

เป็นส่วนของการจัดสรรทรัพยากรต่าง ๆ เพื่อนำไปสร้างเป็นแม่ข่ายเสมือน ซึ่งมันสามารถเพิ่มได้เรื่อย ๆ ไปจนถึงขีดจำกัดของทรัพยากรที่มีอยู่ Hypervisor เปรียบเสมือนเป็นซอฟต์แวร์ที่คอยจัดสรรทรัพยากรได้อย่างชาญฉลาด เช่น Hyper-V , Vsphere เป็นต้น

Guest OS

ในชั้นนี้จะเป็นส่วนของการสร้างเป็นเครื่องแม่ข่ายเสมือนซึ่งแต่ละตัวจะมี OS ที่แตกต่างกันได้ เช่น Windows Server , Linux , Unix เป็นต้น ทั้งนั้นขึ้นอยู่กับความต้องการที่จะนำไปใช้งาน ภายใน Guest OS แต่ละตัวจะประกอบไปด้วย 2 ส่วนหลัก คือ
1. Bin/Lib เป็นไฟล์ประเภทbinary หรือ library ที่จำเป็นสำหรับ OS นั้น ๆ เพื่อทำหน้าที่เชื่อมต่อกันระหว่าง Guest OS และ Application
2. App หรือ Application เป็นส่วนของซอฟต์แวรประยุกต์ที่เราติดตั้งเพิ่มเติมเพื่อให้มันทำงานบน Guest OS นั้น ซึ่งอาจจะเป็น Application ที่เราพัฒนาขึ้นมาเองก็ได้

CONTAINER
CONTAINER TECHNOLOGY

โครงสร้างของ Container ประกอบไปด้วย 3 ชั้น หลักดังนี้

Infrastructure

เป็นรากฐานของทรัพยากร ทุกสิ่งจำเป็นต้องอาศัยทรัพยากรในการทำงานทั้งหมด เช่น CPU , RAM , Hardisk และ Network เป็นต้น ชั้นการทำงานนี้ส่วนใหญ่แล้วจะมองเป็น Hardware ก็ว่าได้

Operating System

เป็นส่วนของระบบปฏิบัติการที่จำเป็นต้องใช้เพื่อให้ Container Engine สามารถทำงานได้ ทั้งก็จะขึ้นอยู่กับว่าเราใช้เทคโนโลยี Container ของอะไร เช่น Kubernetes , Docker , Open Stack เป็นต้น

Container Engine

เป็นหัวใจสำคัญที่ทำให้แอพพลิเคชัน สามารถทำงานได้ตามสภาพแวดล้อมที่ต้องการ โดยตัวมันทำงานเป็นโปรเซสย่อย ๆ ที่คอยจัดการชุดคำสั่งหรือสร้างไฟล์ Bin/Lib ให้สามารถทำให้แอพพลิเคชันทำงานได้ โดยไม่จำเป็นต้องติดตั้งระบบปฏิบัติการใหม่ นั่นหมายถึงมันมีความสามารถในการใช้ชุดคำสั่ง Bin/Lib ร่วมกัน หรือ แยกจากกันก็สามารทำได้ ทำให้ App หรือ Application ที่ถูกนำมาใช้บน Container จึงมีการใช้ทรัพยากรที่ประหยัดกว่าแบบ Vitual Machine และการทำงานที่รวดเร็วขึ้นด้วย