performance comparison between monolith and …

70
การเปรียบเทียบประสิทธิภาพระหว่างสถาปัตยกรรมแบบโมโนลิธ และไมโครเซอร์วิสโดยใช้ดอคเกอร์และคูเบอร์เนตส์ PERFORMANCE COMPARISON BETWEEN MONOLITH AND MICROSERVICES USING DOCKER AND KUBERNETES นภวิชญ์ ทุมวงษ์ บัณฑิตวิทยาลัย มหาวิทยาลัยศรีนครินทรวิโรฒ 2562

Upload: others

Post on 04-Dec-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

การเปรยบเทยบประสทธภาพระหวางสถาปตยกรรมแบบโมโนลธ และไมโครเซอรวสโดยใชดอคเกอรและคเบอรเนตส

PERFORMANCE COMPARISON BETWEEN MONOLITH AND MICROSERVICES USING DOCKER AND KUBERNETES

นภวชญ ทมวงษ

บณฑตวทยาลย มหาวทยาลยศรนครนทรวโรฒ 2562

การเปรยบเทยบประสทธภาพระหวางสถาปตยกรรมแบบโมโนลธ และไมโครเซอรวสโดยใชดอคเกอรและคเบอรเนตส

นภวชญ ทมวงษ

สารนพนธนเปนสวนหนงของการศกษาตามหลกสตร วทยาศาสตรมหาบณฑต สาขาวชาเทคโนโลยสารสนเทศ

คณะวทยาศาสตร มหาวทยาลยศรนครนทรวโรฒ ปการศกษา 2562

ลขสทธของมหาวทยาลยศรนครนทรวโรฒ

PERFORMANCE COMPARISON BETWEEN MONOLITH AND MICROSERVICES USING DOCKER AND KUBERNETES

NAPAWIT TOOMWONG

A Master’s Project Submitted in Partial Fulfillment of the Requirements for the Degree of MASTER OF SCIENCE

(Information Technology) Faculty of Science, Srinakharinwirot University

2019 Copyright of Srinakharinwirot University

สารนพนธ เรอง

การเปรยบเทยบประสทธภาพระหวางสถาปตยกรรมแบบโมโนลธ และไมโครเซอรวสโดยใชดอคเกอรและคเบอรเนตส

ของ นภวชญ ทมวงษ

ไดรบอนมตจากบณฑตวทยาลยใหนบเปนสวนหนงของการศกษาตามหลกสตร

ปรญญาวทยาศาสตรมหาบณฑต สาขาวชาเทคโนโลยสารสนเทศ ของมหาวทยาลยศรนครนทรวโรฒ

(รองศาสตราจารย นายแพทยฉตรชย เอกปญญาสกล)

คณบดบณฑตวทยาลย

คณะกรรมการสอบปากเปลาสารนพนธ

.............................................. ทปรกษาหลก (ผชวยศาสตราจารย ดร.วราภรณ วยานนท)

.............................................. ประธาน (ดร.สทธพงศ ธชยพงษ)

.............................................. กรรมการ (อาจารย ดร.วรยทธ เจรญเรองกจ)

บทคด ยอภาษาไทย

ชอเรอง การเปรยบเทยบประสทธภาพระหวางสถาปตยกรรมแบบโมโนลธ และไมโครเซอรวสโดยใชดอคเกอรและคเบอรเนตส

ผวจย นภวชญ ทมวงษ ปรญญา วทยาศาสตรมหาบณฑต ปการศกษา 2562 อาจารยทปรกษา ผชวยศาสตราจารย ดร. วราภรณ วยานนท

ปจจบนเทคโนโลยเขามามบทบาทในชวตประจ าวนของเรามากขน ประชากรสวน

ใหญสามารถเขาถงเทคโนโลยไดงายไมวาจะเปนคอมพวเตอรหรอโทรศพทมอถอ ซงปฏเสธไมไดเลยวาเทคโนโลยนนเขามามสวนเกยวของกบทกกจกรรมในการใชชวต แตในอกมมหนงนนในโลกของการพฒนาซอฟตแวรแลวถอวาไดรบผลกระทบเปนอยางมากจากการ ทแอปพลเคชนไมสามารถรองรบปรมาณผทสามารถเขาถงเวบไซตหรอแอปพลเคชนมอถอจ านวนมหาศาลเนองมาจากการออกแบบสถาปตยกรรมทไมรองรบในยคทเทคโนโลยมววฒนาการอยางรวดเรว ดงนนงานวจยน จงมงเนนในการศกษาและน าเสนอแนวคดเกยวกบการปรบปรงโคร งสรางสถาปตยกรรมเพอใหรองรบกบปรมาณผใชเพมขนโดยการจ าลองพฒนาแอปพลเคชนโดยการน าซอฟตแวรทถกใชกนอยางแพรหลายในองคกรชนน า เชน ดอคเกอรและคเบอรเนตสโดยพฒนารวมกบแนวคดโครงสรางสถาปตยกรรมแบบโมโนลธและไมโครเซอรวส โดยการทดสอบแบงออกเปน 2 รปแบบไดแก ทดสอบประสทธภาพของแอปพลเคชนทพฒนาดวยสถาปตยกรรมแบบโมโนลธดวยดอคเกอรและคเบอรเนตสและประสทธภาพของแอปพลเคชนทพฒนาดวยสถาปตยกรรมแบบไมโครเซอรวสดวยดอคเกอรและคเบอรเนตส ซงในแตละรปแบบถกทดสอบดวยการจ าลองสรางปรมาณการใชงานและวดการตอบสนองของแอปพลเคชน จากผลการวจยพบวาสถาปตยกรรมโมโนลธและไมโครเซอรวสทพฒนารวมกบคเบอรเนตสเพอท าใหแอปพลเคชนรองรบการประมวลผลแบบขยายนนสามารถชวยใหการตอบสนองของแอปพลเคชนนนรวดเรวยงขน โดยงานวจยในอนาคตมงเนนทจะศกษาและทดสอบกบแอปพลเคชนทมยเซอรใชงานจรงเพอพสจนวาแนวคดดงกลาวสามารถน าไปประยกตใชไดจรง

ค าส าคญ : โมโนลธ, ไมโครเซอรวส, ดอคเกอร, คเบอรเนตส

บทคด ยอภาษาองกฤษ

Title PERFORMANCE COMPARISON BETWEEN MONOLITH AND MICROSERVICES USING DOCKER AND KUBERNETES

Author NAPAWIT TOOMWONG Degree MASTER OF SCIENCE Academic Year 2019 Thesis Advisor Assistant Professor Dr. Waraporn Viyanon

Nowadays, various types of technology play more of a role in our daily lives;

for example, most people have easy access to technology via computers or mobile phones. It cannot be denied that technology is involved in all aspects in life. On the other hand, the world of software development can be affected by the inability of systems to accommodate the huge amount of people who access the website or application due to the design of architecture that no longer exists, in an age when technology has changed dramatically. In this paper, the performance comparison was tested and analyzed between a monolith and microservices using Docker and Kubernetes and by developing a simulation system based on these concepts. The performance comparison of web services in this study used the same scenarios with two different factors: using a monolith and microservices on Docker and Kubernetes. The results show that the monolith and microservices architecture developed with Kubernetes can reduce response times and increase throughput in the system. Moreover, it has explained the factors that made the system work in a more efficient way. Future studies may focus on studying and testing production systems to prove that these concepts can be applied.

Keyword : Monolith, Microservices, Docker, Kubernetes

กตตกรรมประ กาศ

กตตกรรมประกาศ

สารนพนธนส าเรจลลวงไดดวยความอนเคราะหจาก ผศ.ดร.วราภรณ วยานนท อาจารยทปรกษาทใหค าปรกษา ค าแนะน าในการท าสารนพนธ ตลอดจนสนบสนนขอมลทางวชาการและขอมลส าหรบท าสารนพนธน

ขอขอบคณคณะกรรมการสอบวทยานพนธไดแก ดร.สทธพงศ ธชยพงษ อ.ดร.วรยทธ เจรญเรองกจ และ ผศ.ดร.จนตรประเสรฐผล ทกรณารบเปนประธานและกรรมการสอบสารนพนธ และใหค าแนะน า ค าตชมสารนพนธเลมน ซงขอตชมเหลานนผจดท าไดน ามาปรบปรงสารนพนธฉบบนและเกบไวเปนความรในการศกษาตอไป

ขอขอบคณอาจารยและพนกงานประจ าภาควชาวทยาการคอมพวเตอรทใหความร ค าแนะน า และขอขอบพระคณเจาหนาทหองธรการประจ าภาควชาวทยาการคอมพวเตอรทกทานทอ านวยความสะดวกดานเอกสาร ตลอดจนค าปรกษาในขนตอนด าเนนการจนสารนพนธเลมนเสรจสมบรณ

นภวชญ ทมวงษ

สารบญ

หนา บทคดยอภาษาไทย ................................................................................................................ ง

บทคดยอภาษาองกฤษ ........................................................................................................... จ

กตตกรรมประกาศ .................................................................................................................. ฉ

สารบญ ................................................................................................................................. ช

สารบญตาราง ....................................................................................................................... ญ

สารบญรปภาพ ...................................................................................................................... ฎ

บทท 1 บทน า ........................................................................................................................ 1

1.1 ความเปนมาและความส าคญของปญหา ....................................................................... 1

1.2 วตถประสงคของการวจย .............................................................................................. 2

1.3 ประโยชนทคาดวาจะไดรบ ............................................................................................ 2

1.4 แผนการด าเนนการวจย ................................................................................................ 2

1.5 ขอบเขตของการวจย .................................................................................................... 2

1.6 ระยะเวลาด าเนนงานวจย ............................................................................................. 3

บทท 2 ทบทวนวรรณกรรม..................................................................................................... 4

2.1 Monolith ..................................................................................................................... 4

2.2 Microservices ............................................................................................................ 5

2.3 Container ................................................................................................................... 7

2.4 Kubernetes ................................................................................................................ 8

2.5 Cloud-native application (google cloud) ................................................................ 11

2.6 Autoscaling ............................................................................................................. 11

2.7 งานวจยทเกยวของ .................................................................................................... 12

บทท 3 วธการด าเนนการวจย ............................................................................................... 17

3.1 กระบวนการออกแบบซอฟตแวร .................................................................................. 17

3.1.1 การออกแบบสวนตอประสานผใช (User interface) ........................................... 18

3.1.2 การออกแบบสถาปตยกรรมแบบ Monolith ........................................................ 18

3.1.3 การออกแบบสถาปตยกรรมแบบ microservices ............................................... 20

3.1.3 การออกแบบวธการรบสงขอมล ......................................................................... 22

3.1.4 กระบวนการออกแบบ Cluster .......................................................................... 23

3.1.5 เครองมอทใชในการวจย ................................................................................... 24

3.2 กระบวนการพฒนาซอฟตแวร ..................................................................................... 26

3.2.1 การพฒนา ....................................................................................................... 26

3.2.2 การสรางและสงมอบ ........................................................................................ 27

3.2.3 การน าไปใชงาน ............................................................................................... 28

3.3 วธการทดลอง ............................................................................................................ 31

3.4 วธการวเคราะหผล ..................................................................................................... 32

บทท 4 ผลการศกษา ........................................................................................................... 33

4.1 ผลการทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Docker .................................. 33

4.2 ผลการทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Docker ......................... 36

4.3 ผลการทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes ........................... 40

4.4 ผลการทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes .................. 43

4.5 สรปผลการทดลอง ..................................................................................................... 47

บทท 5 สรป อภปรายผล และขอเสนอแนะ ............................................................................. 50

5.1 สรปผลงานวจย ......................................................................................................... 50

5.2 ขอจ ากดของงานวจย ................................................................................................. 50

5.3 ขอเสนอแนะ .............................................................................................................. 51

บรรณานกรม ....................................................................................................................... 52

ประวตผเขยน ....................................................................................................................... 54

สารบญตาราง

หนา ตาราง 1 ระยะเวลาการด าเนนงานวจย .................................................................................... 3

ตาราง 2 เครองมอทใชในการพฒนา ...................................................................................... 24

ตาราง 3 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Monolith ............................ 25

ตาราง 4 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Microservices ................... 25

ตาราง 5 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Cluster .............................. 26

ตาราง 6 ผลการทดลองของสถาปตยกรรมแบบ Monolith โดยใช Docker ................................ 35

ตาราง 7 ผลการทดลองของสถาปตยกรรมแบบ Microservices โดยใช Docker ....................... 39

ตาราง 8 ผลการทดลองของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes ......................... 42

ตาราง 9 ผลการทดลองของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ................ 46

สารบญรปภาพ

หนา ภาพประกอบ 1 สถาปตยกรรมแบบ Monolith .......................................................................... 4

ภาพประกอบ 2 สถาปตยกรรมแบบ Microservices ................................................................. 5

ภาพประกอบ 3 การแบง Domain ดวยการก าหนด Bounded context ...................................... 6

ภาพประกอบ 4 โครงสรางของ Docker container และ Virtual machine .................................. 8

ภาพประกอบ 5 ตวอยาง Kubernetes cluster ......................................................................... 9

ภาพประกอบ 6 Autoscaling model ..................................................................................... 12

ภาพประกอบ 7 สรปงานวจยทเกยวของ ................................................................................ 16

ภาพประกอบ 8 ขนตอนการด าเนนการวจย ............................................................................ 17

ภาพประกอบ 9 ตวอยางหนาจอของแอปพลเคชนสะสมแตมบนแอปพลเคชนมอถอ ................. 18

ภาพประกอบ 10 สถาปตยกรรมแบบ Monolith โดยใช Docker .............................................. 18

ภาพประกอบ 11 สถาปตยกรรมแบบ Monolith โดยใช Kubernetes ....................................... 19

ภาพประกอบ 12 ล าดบการท างานของสถาปตยกรรมแบบ Monolith ....................................... 20

ภาพประกอบ 13 สถาปตยกรรมแบบ Microservices โดยใช Docker...................................... 20

ภาพประกอบ 14 สถาปตยกรรมแบบ Microservices โดยใช Kubernetes .............................. 21

ภาพประกอบ 15 ล าดบการท างานของสถาปตยกรรมแบบ Microservices .............................. 22

ภาพประกอบ 16 รายการ อนสแตนท ประเภทตางๆ ทถกใชในงานวจยบน Amazon webservices ....................................................................................................................... 24

ภาพประกอบ 17 ตวอยางโคดทใชในการพฒนาแอปพลเคชน ................................................. 27

ภาพประกอบ 18 ขนตอนการสองมอบ Docker image ไปยง Amazon webservices .............. 28

ภาพประกอบ 19 ตวอยาง Dockerfile ................................................................................... 28

ภาพประกอบ 20 ตวอยาง docker-compose.yml ................................................................. 29

ภาพประกอบ 21 ตวอยาง example-deployment.yml ........................................................... 30

ภาพประกอบ 22 ตวอยาง example-deployment.yml ทมการก าหนดขนาดของ CPU ............ 31

ภาพประกอบ 23 หนาจอการตงคา Apache Jmeter .............................................................. 32

ภาพประกอบ 24 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Monolith โดยใช Docker ...... 33

ภาพประกอบ 25 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Monolith โดยใช Docker ...... 34

ภาพประกอบ 26 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Monolith โดยใช Docker ...... 34

ภาพประกอบ 27 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรม Monolith โดยใช Docker ..................................................................................................................... 35

ภาพประกอบ 28 Throughput และ Response time ของ Monolith ทใช Docker .................... 36

ภาพประกอบ 29 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Microservices โดยใช Docker ........................................................................................................................................... 37

ภาพประกอบ 30 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Microservices โดยใช Docker ........................................................................................................................................... 37

ภาพประกอบ 31 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Microservices โดยใช Docker ........................................................................................................................................... 38

ภาพประกอบ 32 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Docker ............................................................................................. 38

ภาพประกอบ 33 Throughput และ Response time ของ Microservices ทใช Docker ........... 39

ภาพประกอบ 34 จ านวนแอปพลเคชนทมการเพมขนในขณะจ าลองการสรางโหลดบนสถาปตยกรรมแบบ Monolith โดยใช Kubernetes ................................................................. 40

ภาพประกอบ 35 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes 40

ภาพประกอบ 36 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes 41

ภาพประกอบ 37 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes 41

ภาพประกอบ 38 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes ............................................................................................... 42

ภาพประกอบ 39 Throughput และ Response time ของ Monolith ทใช Kubernetes ............. 43

ภาพประกอบ 40 จ านวนแอปพลเคชนทมการเพมขนในขณะจ าลองการสรางโหลดบนสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ........................................................ 44

ภาพประกอบ 41 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ........................................................................................................................ 44

ภาพประกอบ 42 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ........................................................................................................................ 45

ภาพประกอบ 43 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ........................................................................................................................ 45

ภาพประกอบ 44 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes ...................................................................................... 46

ภาพประกอบ 45 Throughput และ Response time ของ Microservices ทใช Kubernetes .... 47

ภาพประกอบ 46 การเปรยบเทยบ Throughput และ Response time ของสถาปตยกรรมแบบตางๆ ................................................................................................................................... 48

ภาพประกอบ 47 การเปรยบเทยบ Throughput และ Response time ของการประมวลผลแบบเดยวและการประมวลผลแบบขยายบน Kubernetes .............................................................. 49

บทท 1 บทน า

1.1 ความเปนมาและความส าคญของปญหา ปจจบนเทคโนโลยตางๆ เขามามบทบาทในชวตประจ าวนของเรามากขน ประชากรสวน

ใหญสามารถเขาถงเทคโนโลยไดงายไมวาจะเปนคอมพวเตอรหรอโทรศพทมอถอ ซงปฏเสธไมไดเลยวาเทคโนโลยนนเขามามสวนเกยวของกบทกกจกรรมในการใชชวต สบเนองมาจากราคาตนทนการผลตทถกลงหรอการแขงขนในตลาดของผผลต แตในอกมมหนงนนในโลกของการพฒนาซอฟตแวรแลวถอวาไดรบผลกระทบเปนอยางมากจากการทแอปพลเคชนไมสามารถรองรบปรมาณผทสามารถเขาถงเวบไซตหรอแอปพลเคชนจ านวนมหาศาล เนองมาจากการออกแบบสถาปตยกรรมทไมรอบรบในยคทเทคโนโลยมววฒนาการอยางรวดเรว

ในโลกดจทลทกธนาคารตองมการปรบตวใหเขากบยคดจทลโดยการพฒนาชองทางอ านวยความสะดวกใหแกผใชงาน ซงทกคนสามารถใชบรการตางๆ ของธนาคารผานอนเทอรเนต โดยไมตองเดนทางไปยงสาขา แตเมอยอนกลบไปกอนทจะมเทคโนโลยทนสมยเหมอนปจจบนนน ในดานของแอปพลเคชน Core banking ของธนาคารตางๆ ไดถกพฒนามาเพอตอบโจทยการใชงานในยคนน ซงการท าธรกรรมตางๆ นนท าไดผานชองทางสาขาหรอตเอทเอมเทานน ซงการทธนาคารจะปรบโครงสรางของสถาปตยกรรมจากเดมใหเขาสยคดจทลนนมตนทนมหาศาลและมความเสยงตอภาพลกษณในดานความนาเชอถอท าใหผดแลแอปพลเคชนเลอกทจะแกไขปญหาในทางตรงขามคอการเพมทรพยากรของแอปพลเคชนคอมพวเตอรแทน แตอยางไรกตามกไมสามารถแกไขปญหาดงกลาวในระยะยาวไดเนองจากแอปพลเคชนคอมพวเตอรนนมขอจ ากดของตวมนเอง ซงผลกระทบคอทกๆ สนเดอนธนาคารหลายๆ แหงในประเทศไทยจะไมสามารถใชงานไดเนองจากแอปพลเคชนขดของ จากการเปดเผยสถตจากธนาคารแหงประเทศไทย ไมเพยงแตอตสาหกรรมการเงนเทานนทไดรบผลกระทบแอปพลเคชนตลาดซอขายออนไลนกไดรบผลกระทบไปดวยเชนกน ไมวาจะเปนแอปพลเคชนทไมสามารถรองรบผใชงานไดในชวงสนเดอน หรอผใชงานไมสามารถซอหรอขายของไดในชวงทแอปพลเคชนสารสนเทศของธนาคารขดของ ซงแนนอนวาจะสงผลกระทบไปยงอตสาหกรรมอนๆ ตอไปเปนวฏจกร

ในปจจบนไมสามารถปฏเสธไดเลยวาการออกแบบโครงสรางสถาปตยกรรมทดนนไมเพยงแตตองค านงถงเรองประสทธภาพของการใชงานแลว แตยงไปกวานนการออกแบบโครงสรางสถาปตยกรรมทดนนตองตอบโจทยดานการรองรบปรมาณของผใช และสามารถปรบตวไดงายกบววฒนาการทเปลยนแปลงไปอยางรวดเรวของเทคโนโลย ซงในงานวจยนผวจยจะน าเสนอแนวคด

2

สถาปตยกรรมการออกแบบ Monolith และ Microservices โดยพฒนารวมกบ Docker และ Kubernetes เพอแกไขปญหาทไดกลาวมาขางตน

1.2 วตถประสงคของการวจย 1.2.1. เพอเปรยบเทยบประสทธภาพการท างานของสถาปตยกรรมแบบ Monolith และ

Microservices โดยใช Docker และ Kubernetes 1.2.2. เพอศกษาแนวคดการออกแบบซอฟตแวรทรองรบการประมวลผลแบบกระจาย 1.2.3. เพอศกษาแนวคดการออกแบบสถาปตยกรรมใหเหมาะสมกบรปแบบของธรกจ

และองคกร

1.3 ประโยชนทคาดวาจะไดรบ 1.3.1. เพอใหทราบถงประสทธภาพของการท างานของสถาปตยกรรมทพฒนาดวย

แนวคดแบบ Monolith และ Microservices โดยใช Docker และ Kubernetes 1.3.2. เพอใหทราบถงวธการพฒนาสถาปตยกรรมทออกแบบเพอรองรบการประมวลผล

แบบกระจาย 1.3.3. เพอใหทราบถงแนวคดของการออกแบบสถาปตยกรรมใหเหมาะสมกบความ

ตองการทางธรกจ

1.4 แผนการด าเนนการวจย 1.4.1 ศกษาทฤษฏและงานวจยทเกยวของ 1.4.2 ศกษาวธการใชงานซอฟตแวรแบบตางๆ 1.4.3 พฒนาแอปพลเคชนตนแบบ 1.4.4 ทดลองและปรบปรงขนตอนวธเพอใหไดประสทธภาพมากขน 1.4.5 วเคราะหประสทธภาพของสถาปตยกรรมททดลองเชงเปรยบเทยบ

1.5 ขอบเขตของการวจย งานวจยนท าการเปรยบเทยบประสทธภาพการท างานของแอปพลเคชนสะสมแตมเพอ

แลกสนคาทพฒนาดวยแนวคดแบบ Monolith และ Microservices โดยมขอบเขตของการวจยดงตอไปน

3

1.5.1. จ าลองแอปพลเคชนสะสมแตมซงประกอบไปดวย 2 สถานการณ ไดแก S1. การเรยกดสนคา S2. การแลกสนคา

1.5.2. ทดสอบการจ าลองปรมาณผใชในระบบในรปแบบ Load testing เพอทดสอบ Quality of services (QoS) ของระบบ

1.5.3. ทดสอบดวยจ านวนโหลด 300 Transaction/second จ านวน 30 Threads ในรปแบบ Ramp-up ซงมการเพม Thread ทกๆ 10 วนาท โดยแบงการทดสอบเปรยบเทยบประสทธภาพไดเปน 4 แบบ โดยท าการทดสอบซ าจ านวน 3 ครงตอการทดสอบ โดยการทดสอบมดงตอไปน

1) พฒนาดวยแนวคดแบบ Monolith โดยใช Docker 2) พฒนาดวยแนวคดแบบ Monolith โดยใช Kubernetes 3) พฒนาดวยแนวคดแบบ Microservices โดยใช Docker 4) พฒนาดวยแนวคดแบบ Microservices โดยใช Kubernetes

1.6 ระยะเวลาด าเนนงานวจย งานวจยนใชระยะเวลาด าเนนการทงหมด 8 เดอน โดยแบงขนตอนและรายละเอยดตาม

ตารางท 1 ดงน

ตาราง 1 ระยะเวลาการด าเนนงานวจย

การด าเนนการวจย ระยะเวลาศกษา (เดอน)

1 2 3 4 5 6 7 8

ศกษาทฤษฏและงานวจยทเกยวของ

ศกษาวธการใชงานซอฟตแวรแบบตางๆ

พฒนาแอปพลเคชนตนแบบ

ทดลองและปรบปรงประสทธภาพ

วเคราะหประสทธภาพของสถาปตยกรรมททดลองเชงเปรยบเทยบ

4

บทท 2 ทบทวนวรรณกรรม

บทนจะกลาวถงสถาปตยกรรมการออกแบบของ Monolith และ Microservices เพอใหเหนถงคณลกษณะและแนวคดของการออกแบบสถาปตยกรรม รวมถงสวนประกอบทส าคญของ Docker และ Kubernetes ทจะชวยเพมประสทธภาพและความคงทนใหกบแอปพลเคชน

2.1 Monolith Monolith เปนแนวคดทรวบรวมทกฟงกชนการใชงานและ Business logic ไวในแอป

พลเคชนชดเดยวกน ซงขอดของแนวคดนคองายตอการพฒนาแอปพลเคชนและใชเวลาไมนานและขอจ ากดของแนวคดนคอการพฒนาแอปพลเคชนสถาปตยกรรมทความผกพนกนสงซงสงผลใหการพฒนาหรอแกไขบางสวนของแอปพลเคชนนนอาจสงผลกระทบตอทงแอปพลเคชน ยงไปกวานนการขยายแอปพลเคชนนนไมสามารถรองรบการขยายแอปพลเคชนเฉพาะสวนไดดงภาพประกอบ 1 (Newman, 2015)

ภาพประกอบ 1 สถาปตยกรรมแบบ Monolith

ทมา: Mazur, O. (2020). Retrieved from Monolithic architecture vs microservices. Retrieved from https://divante.com/blog/monolithic-architecture-vs- Microservices /

5

2.2 Microservices Microservices เกดจากแนวคดการออกแบบสถาปตยกรรมใหมขนาดเลกและมความ

เปนอสระตอกนโดยแตละเซอรวสสามารถท างานรวมกนได ซงการแบงเซอรวสนนตองมการก าหนด Bounded context ใหชดเจน ซงการออกแบบทดนนแตละเซอรวสนนจะตองมความผกพนกนนอยทสด(Loose coupling) และสามารถท างานดวยตวของมนเองไดโดยไมตองอาศยเซอรวสอน (High cohesion) ดงภาพประกอบ 2 โดยวธการแบงเซอรวสตางๆ นนจะใชเทคนคการก าหนด Bounded context โดยการจ ากดขอบเขตของแบบแผนธรกจและความตองการทางธรกจใหออกมาอยในรปแบบของ Context ดงภาพประกอบท 3 ซงจะชวยใหการออกแบบและพฒนาเซอรวสท าไดออกมาชดเและงายขน เมอสามารถก าหนด Bounded context ของแบบแผนธรกจทงหมดไดแลว ในสวนของการพฒนานนนกพฒนาสามารถเลอกใชภาษาหรอเทคโนโลยทเหมาะสมกบความตองการทางธรกจได (Newman, 2015)

ภาพประกอบ 2 สถาปตยกรรมแบบ Microservices

ทมา: Mazur, O. (2020). Retrieved from Monolithic architecture vs microservices. Retrieved from https://divante.com/blog/monolithic-architecture-vs- Microservices /

6

ภาพประกอบ 3 การแบง Domain ดวยการก าหนด Bounded context

ท ม า : Fowler, M. (2014). Retrieved from Fowler, M. Retrieved from https://martinfowler.com/bliki/BoundedContext.html

การท าใหเซอรวสตดตอกบเซอรวสอนๆ นนโดยท วไปจะท าการตดตอกนผาน REST (Representational state transfer) หรอ Message queue ซงขนอยกบการใชงาน ซงทงสองวธน สามารถพฒนาโดยใชภาษาไดอยางหลากหลายและมประสทธภาพทด

โดยการพฒนาสถาปตยกรรมแบบ Microservices ดวยวธการออกแบบดวย Bounded context (Vernon, 2016) ทดนนสถาปตยกรรมทถกพฒนาขนมาควรมคณสมบตดงตอไปน

1) ความหลากหลายของเทคโนโลย (technology heterogeneity) ในแอปพลเคชนสถาปตยกรรมทประกอบดวยเซอรวสทมขนาดเลกท างานรวมกน

ควรเลอกใชซอฟตแวรหรอภาษาทเหมาะสมกบเซอรวสนน เพอใหแอปพลเคชนสามารถรองรบปรมาณการเขามาใชงานไดอยางเหมาะสมตาม Context นนๆ

2) ความยดหยน (resilience) แอปพลเคชนทถกออกแบบมาดวยแนวคดแบบ Microservices เมอเซอรวสหนง

ไมสามารถใชงานไดเซอรวสอนๆ ควรท าหนาทตอได 3) การขยายขนาด (scaling)

ในแอปพลเคชนสถาปตยกรรมทวไปทถกพฒนาบนแนวคดแบบ Monolith นน การขยายแอปพลเคชนนนจะท าดวยการขยายทงแอปพลเคชนไปดวยกน แตสถาปตยกรรมทถกพฒนาดวย Microservices นนสามารถขยายแอปพลเคชนเฉพาะเซอรวสทมปรมาณผใชงานสงได

7

4) ความงายตอการสงมอบ (ease of deployment) สถาปตยกรรมแบบ Microservices สามารถพฒนาและสงมอบเฉพาะสวนทถก

ปรบปรงหรอพฒนาเพมเตมได 5) การจดการองคกร (organizational alignment)

การใชแนวคดแบบ Microservices ในองคกรใหญสามารถแบงทมพฒนาออกเปนทมเลกๆ ตามความถนดของทมนนๆ โดยไมตองเรยนรภาษาใหมๆ เพอน าพฒนาแอปพลเคชนทใชเพยงภาษาเดยว

6) การน ากลบมาใชใหม (composability) การน าเซอรวส ท ม ฟงกชนในการท างานคลายกนน ากลบมาใชใหม เพอ

จดประสงคอนได เชน การน าเซอรวสทมฟงกชนยนยนตวตนจากแบบแผนธรกจหนงไปใชในอกแบบแผนธรกจหนงโดยไมจ าเปนตองพฒนาแอปพลเคชนนนใหม

7) ความงายตอการแทนท (optimizing for replaceability) การเปลยนแปลงในบางเซอรวสนนตองท าไดงายและไมกระทบตอเซอรวสอน

2.3 Container Container เปนเทคนคในการจ าลองสภาพแวดลอมหรอแอปพลเคชนปฏบตการเสมอน

ขนมาเพอจดการกบซอฟตแวร ซงมลกษณะคลายกบ Virtual machine ซงซอฟตแวรทเปนทนยมและไดรบการยอมรบอยางกวางขวางคอ Docker

Docker เปนโอเพนซอรสทถกพฒนาขนเพอปรบปรงประสทธภาพจากการใช Virtual machine แบบเดมซงใชทรพยากรนอยกวาการใช Virtual machine ซง Docker สามารถตดตง Container ไดมากกวาหน ง Container บนแอปพล เคชน ท ม Operating System เดยวไดซ งแตกตางจาก Virtual Machine ทตองตดตงบน Operating System ของตวเองดงภาพประกอบ 4 ยงไปกวานนผใชสามารถจดการกบ Container ไดอยางงายผาน Docker engine ทเปนเครองมอส าหรบสราง (Build), สงมอบ (Ship), ใชงาน (Run) ซง Docker ถกน ามาเปนสวนหนงของการพฒนาระบบแบบสถาปตยกรรมทมแนวคดแบบ Microservices (Docker, 2019)

8

ภาพประกอบ 4 โครงสรางของ Docker container และ Virtual machine

ท ม า : Fong, J. (2018). Containers versus Virtual Machines. Retrieved from https://www.docker.com/blog/containers-replacing-virtual-machines/

Docker นนถกใชในหลายๆ บรษทเนองจากมขอดหลายประการ เชน การใชทรพยากรทนอย ตดตงซอฟตแวรหรอแอปพลเคชนปฏบตการไดอยางหลากหลายและอสระตอกน

2.4 Kubernetes Kubernetes เปนแอปพลเคชนโอเพนซอรสทชวยในการจดการปรบขนาดและจดการกบ

Container โดยออกแบบมาใหท างานรวมกบ Container โดย Kubernetes เปนซอฟตแวรทชวยเพมความทนทานใหแกแอปพลเคชนโดยใชคณสมบตท Kubernetes ม เชน การท าใหระบบกลบมามสภาพปกต (Self-healing) หรอ Horizontal scaling เปนตน ซงจากคณสมบตทกลาวมาขางตน Kubernetes สามารถชวยเพมหรอขยาย Container ทเกดจากการใชงานปรมาณและคนทรพยากรอยางอตโนมต โดยประโยชนของ Kubernetes นนมจดเดนดงตอไปน (Hightower, Burns, & Beda, 2017; Kubernetes, 2019)

1. ชวยใหใชทรพยากรทมจ ากดของฮารดแวรท างานไดอยางเตมประสทธภาพ 2. เพมลดหรอขยายทรพยากรของ Container ไดอยางอตโนมต 3. ชวยให Cluster ท างานอยางมประสทธภาพ 4. แอปพลเคชนสามารถจดการกบความผดปกตในเบองตนได 5. มซอฟตแวรส าหรบการตรวจสอบทรพยากรของแอปพลเคชน

9

โดยปกตแลวในแอปพลเคชนทวไปทใช Kubernetes จะประกอบไปดวย Master และ Nodes โดย Master ท าหนาทออกค าสงให Nodes ท างานตามค าสงและ Nodes ท าหนาทรองรบการท างานของ Container โดย Kubernetes architecture ประกอบไปดวยสวนตางๆ ดงภาพประกอบ 5

ภาพประกอบ 5 ตวอยาง Kubernetes cluster

ท ม า : Gerrard, A. (2019). a Kubernetes cluster. Retrieved from https://blog.newrelic.com/engineering/what-is-kubernetes/

จากภาพประกอบท 5 แสดงใหเหนวา Kubernetes มลกษณะการท างานแบบ Cluster ทประกอบไปดวย Master และ Node จ านวนมากทท างานรวมกน โดย Kubernetes cluster มสวนประกอบดงตอไปน

1) Master Master มหนาทควบคมการท างานของ Node ใน Cluster ซงทกกจกรรมทจะ

เกดขน จะถกสงงานผาน Master 2) Node

Node เปรยบเสมอนเครองคอมพวเตอรหรอ Virtual Machine ทท าหนาทจดเกบ Container โดยตดตอกบ Master ผานเครองมอทชอวา Kubelet

10

3) Pod Pod คอหนวยทเลกทสดของ Cluster ซง Pod ท าหนาทบรรจ Container และ

Resource ทใชในการตดตง เชน การก าหนดการเชอมตอเครอขาย (Network configuration), การก าหนดการจดเกบขอมล (Storage configuration) และการก าหนดคาอนๆ ทจ าเปน

4) Kube-proxy Kube-proxy คอสวนทใชในการจดการกบ Network ใน Cluster โดยมหนาท

มอบ Internet protocol ใหกบ Node ภายใน Cluster งานวจยนมการใชฟเจอรทส าคญของ Kubernetes คอ Horizontal pod autoscaling

ส าหรบการเพมและขยายจ านวน Pod ตามปรมาณการใชงาน โดย Horizontal pod autoscaling จะท าการตรวจสอบการใชงาน CPU วามคาสงเกนกวาคาทตงไวหรอไมและจะท าการเพมลดโดยอตโนมต (Zhao et al., 2019) ซงวธการค านวณการจดการเพมลดและขยายแสดงดงสมการ 1

𝑁 = 𝑐𝑢𝑟𝑟𝑒𝑛𝑡𝑅𝑒𝑝𝑙𝑖𝑐𝑎𝑠 ∗ (𝑐𝑢𝑟𝑟𝑒𝑛𝑡𝑀𝑒𝑡𝑟𝑖𝑐𝑉𝑎𝑙𝑢𝑒

𝑑𝑒𝑠𝑖𝑟𝑒𝑀𝑒𝑡𝑟𝑖𝑐𝑉𝑎𝑙𝑢𝑒) (1)

โดยท N คอ จ านวนของ Pod ทจะถกขยายเพมขน currentReplicasValue คอ จ านวน Pod ปจจบน currentMetricVallue คอ คาของ CPU ทแอปพลเคชนใชในขณะท างาน desireMetricValue คอ คาของ CPU ทตองการใหแอปพลเคชนขยายตว

โดยปกตแลว Kubernetes จะมหนวยทใชในการวดทรพยากรทใชเรยกวา millicores โดยท 1 Core CPU จะมคาเทากบ 1,000 millicores จากสมการท 1

ตวอยางการค านวณคา N สมมตใหในขณะทแอปพลเคชนก าลงท างาน Pod มการใชทรพยากร (currentMetricValue) 280 millicores โดยทผใชตงคาให HPA ใหท าการขยายตวเมอ CPU ถ ก ใช ง าน ม ากกว า 50% โดย ท Pod ม ท รพ ย าก รจ าก ด ท 500 millicores ด งน น desireMetricValue จะม ค า เท ากบ 250 millicores เม อ currentMetricValue ม ค ามากกวา desireMetricValue แลว Master จะท าการขยาย Pod ออกจ านวน 2 อนสแตนท เพอรกษาการใช CPU ไมใหเกน 50% ตามทผใชก าหนด

11

2.5 Cloud-native application (google cloud) Cloud-native application คอแนวคดหนงทใชในการออกแบบพฒนาแอปพลเคชน

สถาปตยกรรมทสามารถรองรบการเตบโตของธรกจ โดยใชเทคโนโลยทสามารถสรางและปรบเปลยนตามยคสมยไดในทกสภาพแวดลอม เชน Private cloud, Public cloud และ Hybrid cloud ซงแตละทจะมแนวคดทแตกตางกนออกไปแตเพอจดประสงคเดยวกนคอแอปพลเคชนนนจะตองรองรบความหยดหยนในดานการจดการทรพยากร การสอสารทไมจดจ ารปแบบการเขาใชงานครงกอน คาใชจายและการเพมลดขยายไดอยางอตโนมต

องคประกอบของ Cloud native มงเนนไปทการปรบตวและลดตนทนการผลตโดยแกไขปญหาดงตอไปน Loose coupling, High cohesion, Stateless และ Resilience เปนตน (Cloud, 2019)

2.6 Autoscaling Autoscaling เปนวธการทใชในการประมวลผลแบบคลาวดเพอปรบแตงทรพยากรของ

แอปพลเคชนตามความตองการเชน การปรบขนาดของทรพยากรโดยอตโนมตชวยใหแอปพลเคชนสามารถขยายหรอลดขนาดเพอใหทรพยากรเพยงพอส าหรบความตองการของผใชงาน นอกจากนเมอแอปพลเคชนเขาสภาวะปกต แอปพลเคชนจะท าการลดขนาดโดยอตโนมต ซงวธการน สามารถลดภาระในการตรวจสอบและดแลแอปพลเคชนทใชทรพยากรบคคล (Kleppmann, 2017) จากภาพประกอบ 6 ผใชตองก าหนดจ านวนทงหมดของอนสแตนท (Maximum size) และขนาดของอนสแตนทเรมตน (Desired capacity) เมอแอปพลเคชนไดรบปรมาณการใชงานทสงขนระบบจะท าการเพมปรมาณตามอนสแตนททผใชไดก าหนดโดยอตโนมต ซงผพฒนาจ าเปนตองเขาใจพฤตกรรมการใชงานของลกคาและปรบปรงการก าหนดคาตางๆ ของ Autoscaling ใหเขากบสถานการณอยเสมอ

12

ภาพประกอบ 6 Autoscaling model

ท ม า : Tudip (2018). Retrieved from Amazon Auto Scaling: Getting Started with AWS.Retrieved from https://tudip.com/blog-post/amazon-autoscaling/

2.7 งานวจยทเกยวของ การทบทวนวรรณกรรมของงานวจย น ไดท าการศกษางานวจย ท เกยวของกบ

สถาปตยกรรมแบบ Microservices และ Monolith มรายละเอยดดงตอไปน (1) บ ท ค ว า ม ว จ ย เ ร อ ง Evaluating the Monolithic and the Microservices

Architecture Pattern to Deploy Web Applications in the Cloud ( Villamizar et al., 2015) งานวจยนไดท าการเปรยบเทยบประสทธภาพและคาใชจายของการใชงานบน Amazon web services ของสถาปตยกรรมแบบ Monolith และ Microservices โดยการทดสอบแอปพลเคชนจากการใชงานจรงโดยสถาปตยกรรมแบบ Monolith ประกอบไปดวย Web application ทพฒนาดวย Play 2.2.2, Scala 2.10.2 และ Java 1.7.0 โดยใชฐานขอมล PostgreSql 9.3.6 และสวน Front-end application พ ฒ น าด ว ย Angular.js 1.3.14 (HTML5, CSS แ ล ะ JQuery) แ ล ะสถาปตยกรรมแบบ Microservices ประกอบไปดวย 2 อนสแตนทท แยกออกเปน Web application และ Front-end application ทใชซอฟตแวรเสมอนกบสถาปตยกรรมแบบ Monolith

13

ซงทงหมดท าการจ าลองแอปพลเคชนสนเชอ โดยแบงออกเปน 2 เซอรวสคอ การสรางสนเชอ การเรยกดสนเชอทเคยซอไปแลว

โดยผลลพธ ท ไดพบวาคาใชจายของแอปพล เคชนสถาปตยกรรม ทตดตง Microservices บน Amazon web services ส าม ารถลดค า ใชจ าย ไดม ากถ ง 17% แล ะ Response time ของสถาปตยกรรมแบบ Monolith นนมคาเฉลยทดกวาสถาปตยกรรมแบบ microservices

(2) บ ท ค ว า ม ว จ ย เ ร อ ง Infrastructure Cost Comparison of Running Web Applications in the Cloud using AWS Lambda and Monolithic and Microservices Architectures งานวจยนไดท าการเปรยบเทยบประสทธภาพและคาใชจายของการใชงานบน Amazon web services ของสถาป ตยกรรม แบบ Monolith ,Microservices แล ะ Amazon lambda โดยสถาปตยกรรมแบบ Microservices และ Monolith ถกพฒนาดวย Play และ Jax-RS และ Amazon lambda ถกพฒนาดวย Node.js ซงทงหมดท าการจ าลองแอปพลเคชนสนเชอ โดยแบงออกเปน 2 เซอรวสคอ การสรางสนเชอ การเรยกดสนเชอทเคยซอไปแลว (Villamizar et al., 2016) โดยผลลพธทไดจากการจ าลองเรยกขอมลจากแอปพลเคชนสนเชอทงหมด ไดผลลพธดงตอไปน

1. สถาปตยกรรมแบบ Microservices ทพฒนาดวย Play สามารถลดคาใชจายไดถง 9.50%, 13.81% และ 13.42% เมอเปรยบเทยบกบสถาปตยกรรมแบบ Monolith ทพฒนาดวย Jax-RS

2. สถาปตยกรรมแบบ Microservices ท ถกพฒ นาบน Amazon lambda สามารถลดคาใชจายไดถง 50.43%, 55.69% และ 57.01% เมอเทยบกบสถาปตยกรรมแบบ Microservices ทพฒนาดวย Play และ 55.14%, 61.81% และ 62.78% เมอเปรยบเทยบกบ Monolith ทพฒนาดวย Jax-RS ยงไปกวานนสามารถลดคาใชเพมขนอก 62.61%, 77.08% และ 70.23% เมอเปรยบเทยบกบสถาปตยกรรมแบบ Monolith ทพฒนาดวย Play

3. ส ถ า ป ต ย ก รรม แบ บ Microservices น น ม Response time ท ส ง ก ว าสถาปตยกรรมแบบอนๆ

(3) บทความวจยเรอง K8-Scalar: a workbench to compare autoscalers for container-orchestrated database clusters งานวจยน ไดท าการทดลองการวด

ประสทธภาพของ Cassandra database โดยการสรางจ านวนโหลดเขาสแอปพลเคชนทจ าลองข น ม าค อ K8-Scalar ท พฒ นาข น เพ อจะท าการวด Latency ของ Database ในขณ ะ ท

14

Kubernetes Horizontal pod autoscaling ท าการเพม Cassandra database อนสแตนท โดยการทดลองนใช OpenStack cloud โดยขนาดของคอมพวเตอรมคณสมบต 2.60 GHz Intel Xeon E5-2660 processors และ 128GB DDR3 โดยแตละ Virtual machine ท ใชในการท าวจยคอ Ubuntu 16.04 4 CPU cores และ 8GB memory โดยใหแตละ Pod สามารถใชงานได 50% ของทรพยากรทมอย โดยการทดลองนแบงออกเปน 4 รปแบบไดแก

1. เพม Database อนสแตนท เมอ CPU usage > 70% 2. เพม Database อนสแตนท เมอ CPU usage > Critical Point 3. เพม Database อนสแตนท เมอ CPU usage > Critical Point - 5% 4. เพ ม Database อนสแตนท เมอ CPU usage > Critical Point - 5% และ

Disk usage > 75% จาก ขอมลขางตน Critical Point ในการทดลองนคอ 67% ซงไดมาจากการหาจดตด

ของกราฟระหวาง Response time/จ านวน Request ใน 1 วนาทและงานวจยนไดก าหนด QoS ไวท 150 Millisecond จากการทดลองพบวาการจ าลองการขยายตวของ อนสแตนท ในแบบท 3 ม Latency ทมากกวา 150 Millisecond เพยง 30% ซงสามารถสรปไดวาการจ าลองแบบท 3 นนใหผลดทสดเนองจากเกดการขยายตวของ อนสแตนท เรวกวาแบบจ าลองอน (Delnat, Truyen, Rafique, Van Landuyt, & Joosen, 2018)

(4) บทความวจยเรอง A Cost-Efficient Container Orchestration Strategy in Kubernetes-Based Cloud Computing Infrastructures with Heterogeneous

Resourcesงานวจยนไดน า Cluster scheduler ของบรษทตางๆ มาเปรยบเทยบคาใชจายๆ โดย Cluster scheduler มดงตอไปน Kubernetes, COCA, Stratus และ HTAS โดยการจ าลองการทดสอบแบบ Batch processing เพอเปรยบเทยบหาคาใชจาย ซงแบงการเปรยบเทยบเปน 4 แบบไดแก Stable, Growing, Cycle และ On/Off จากผลการทดลองพบวา HITAS ใชคาใชจายนอยทสดและมการใชทรพยากรนอยทสดเมอเปรยบเทยบกนทง 4 แบบ (Chung, Park, & Ganger, 2018)

(5) บทความวจยเรอง Workload Characterization for Microservices งานวจยน ไดน าเสนอการเปรยบประสทธภาพของสถาปตยกรรมแบบ Monolith และ Microservices โดยท าการเปรยบเทยบประสทธภาพการท างานระหวาง Node.js และ Java โดยการจ าลองแอปพลเคชนท ชอวา Acme Air ซงการเปรยบเทยบแบงออกเปนการตดตงซอฟตแวรแบบ Bare mental

15

Docker-Host Configuration และ Docker-Bridge Configuration ซงการทดลองน ใช Apache JMeter ในการสรางโหลดเขาสแอปพลเคชน

โดยงานวจยนสรปผลวาการน าสถาปตยกรรม Microservices มาใชซงพฒนาโดยภาษา Node.js และ Java นนสงผลให Throughput ลดลงถง 79.2% และ 70.2% ตามล าดบและยงไปกวานน Microservices ม Path length หรอจ านวนครงท CPU สงการมากกวา Monolith 3-3.05 Times/Request (Ueda, Nakaike, & Ohara, 2016)

(6) บทความวจยเรอง Leveraging Microservices architecture by using Docker technology งานวจยน ไดอธบายถงแนวคดของสถาปตยกรรม Microservices และการน า Docker technology มาใชเพ อสนบสนนการสรางสถาปตยกรรมแบบ Microservices โดยงานวจยนไดกลาวถงขอดของการน ามา Docker มาใชกบสถาปตยกรรมแบบ Microservices โดยมรายละเอยดดงตอไปน

1. Accelerate automation Docker technology เหมาะแกการท าแอปพลเคชนทสามารถท างานไดอยาง

อตโนมต เชน การทดสอบแอปพลเคชนหรอการสงมอบแอปพลเคชน เนองจากสามารถเขยนอลกอลทมไดตามความตองการของผใชงาน

2. Accelerate the independency

Docker container มสภาพแวดลอมจ าลองทแยกออกจากกนชดเจน ซงท าใหทมพฒนานนสามารถจดการกบภาษาหรอซอฟตแวรไดอยางอสระ

3. Accelerate portability

Docker container จดการกบแอปพลเคชนโดยการน าแอปพลเคชนใสเขาไปใน Docker container ซงมสภาพแวดลอมจ าลองเปน Linux ซงทมพฒนาไมวาจะเปนผทดสอบหรอนกพฒนาสามารถน า Container ไปใชโดยอสระจากกน

4. Accelerate resource utilization

Docker technology ใชทรพยากรนอยกวาการใช Virtual machine แบบปกตชวยใหสามารถสราง อนสแตนท ไดจ านวนมาก

5. Secured

Docker เปดใหนกพฒนาสามารถจดการกบความปลอดภยของ Container ไดอยางอสระผาน Docker file และ Docker-compose (Jaramillo, Nguyen, & Smart, 2016)

16

(7) บทความวจย เร อ ง Deploying Microservices based Applications with Kubernetes: Experiments and Lessons learned งานวจยน ไดกลาวถงการน าแนวคดของสถาปตยกรรมแบบ Microservices มาใชรวมกบ Kubernetes เพอเพม High availability ใหกบแอปพลเคชน โดยงานวจยนไดท าการทดสอบเหตกการณจ าลองวา Kubernetes สามารถใชเวลาเทาใดในการ Self-healing เพอให Pods และ Nodes กลบมา Ready จากสถานะ Failure โดยการทดลองนแบงออกเปน 2 เหตการณ คอ การจดลองให Pods เกดสถานะ Failure และ Node เกดสถานะ Failure ซงเวลาทใชในการวดแบงออกเปน 4 ประเภทดงตอไปน

1. Reaction time เวลาท Kubernetes สามารถเรมตรวจจบไดวา Pods หรอ Node เกดการท างานไมปกต

2. Repair time เวลาตงแต Kubernetes เรมตรวจจบสถานะผดปกตจนถงเวลาท Nodes หรอ Pods ก าลงถกซอมแซม

3. Recovery time เวลาตงแต Kubernetes เรมตรวจจบสถานะผดปกตจนถงเวลาท Nodes หรอ Pods กลบมาเปนปกต

4. Outage time เวลารวมทงหมดท Pods หรอ Nodes ไมอยในสถานะ Ready จากการทดลองพบวา Kubernetes สามารถกคน Pods และ Node ทเกดจาก

การจ าลองเหตการณทท าใหสถานะของ Pods และ Nodes เกดความผดปกตกลบมาเปน Ready ไดในระยะเวลาอนสน (Vayghan, Saied, Toeroe, & Khendek, 2018)

งานวจยนประกอบไปดวยการทบทวนวรรณกรรมทงหมด 6 งานวจยและสามารถสรปทฤษฎทเกยวของดงภาพประกอบ 7

ภาพประกอบ 7 สรปงานวจยทเกยวของ

17

บทท 3 วธการด าเนนการวจย

จากปญหาและทฤษฏทไดกลาวมาในบทท 1 และ 2 นนในบทนอธบายถงขนตอนการออกแบบและวธการทดสอบเพอหาประสทธภาพการท างานของแตโครงสรางสถาปตยกรรมและซอฟตแวรทน ามาใชโดยกระบวนการตางๆ ดงภาพประกอบ 8

ภาพประกอบ 8 ขนตอนการด าเนนการวจย

3.1 กระบวนการออกแบบซอฟตแวร ซอฟตแวรทจะใชในการวดผลของการทดลองนนไดจ าลองเหตการณของแอปพลเคชน

สะสมแตมเพอแลกสนคาโดยจ าลองการเรยกดสนคาและการแลกสนคาดวยแตมประกอบไปดวยกระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนประสาน และลกษณะดานอนๆ ซงขนตอนนถอเปนหวใจหลกในการพฒนาซอฟตแวรโดยมรายละเอยดดงตอไปน

18

3.1.1 การออกแบบสวนตอประสานผใช (User interface) ในกระบวนการออกแบบนนประกอบไปดวย User interface โดยแบงออกเปน 2

สถานการณไดแก 1) เรยกดสนคา และ 2) การแลกสนคา เพอชวยใหผพฒนาสามารถเขาใจและพฒนาไดงายขนโดย User interface ของแอปพลเคชนสะสมแตมจะมลกษณะดงภาพประกอบ 9

ภาพประกอบ 9 ตวอยางหนาจอของแอปพลเคชนสะสมแตมบนแอปพลเคชนมอถอ

3.1.2 การออกแบบสถาปตยกรรมแบบ Monolith การออกแบบสถาปตยกรรมแบบ Monolith ส าหรบแอปพล เคชนสะสมแตม

ประกอบดวย 2 สวนไดแก Loyalty service และ MongoDB ซงแตละสวนตดตงบน Docker container โด ย Loyalty service น น ม ล ก ษณ ะ เป น Single codebase โด ย ม โค ร งส รา งสถาปตยกรรมดงภาพประกอบ 10

ภาพประกอบ 10 สถาปตยกรรมแบบ Monolith โดยใช Docker

19

เมอออกแบบสถาปตยกรรมแบบ Monolith เรยบรอยแลว ขนตอนถดไปคอการน าโครงสรางแบบ Monolith ทไดออกแบบมาขางตนมาพฒนารวมกบ Kubernetes โดยท าการออกแบบสราง Cluster จ านวน 4 อนสแตนท ไดแก Master จ านวน 1 อนสแตนท และ Nodeจ านวน 3 อนสแตนท ซงจะก าหนดให Pod แตละตวมขนาดของ CPU คดเปน 500 millicores และจะท าการ Scale out เมอ Node ทมจ านวนโหลดมากกวา 50% CPU ดงภาพประกอบ 11

ภาพประกอบ 11 สถาปตยกรรมแบบ Monolith โดยใช Kubernetes

โครงสรางสถาปตยกรรมแบบ Monolith ของแอปพลเคชนสะสมแตมนนประกอบไปดวยหลายฟงกชน ดงนนแอปพลเคชนจะมชอวา Loyalty service หรอแอปพลเคชนสะสมแตม เพอใหครอบคลมทกฟงกชนการท างานซงมล าดบขนตอนการท างานดงภาพประกอบ 12

20

ภาพประกอบ 12 ล าดบการท างานของสถาปตยกรรมแบบ Monolith

3.1.3 การออกแบบสถาปตยกรรมแบบ microservices แอปพลเคชนสะสมแตมเพอแลกสนคาบนแนวคดแบบโดยแบงออกเปน 3 โดเมนซง

แตละโดเมนมลกษณะเหมอนกบฟงกชนใน Monolith แตท าหนาทเฉพาะสวนทแตละโดเมนรบผดชอบเทานน ประกอบดวยโดเมน 1) Users 2) Catalogues และ 3) Redemption โดยตดตงบน Docker container ทมโครงสรางสถาปตยกรรมดงภาพประกอบ 13

ภาพประกอบ 13 สถาปตยกรรมแบบ Microservices โดยใช Docker

21

เมอท าการออกแบบสถาปตยกรรมแบบ Microservices เรยบรอยแลว ขนตอนถดไปคอการน าโครงสรางสถาปตยกรรมแบบ Microservices ทไดออกแบบมาขางตนมาพฒนารวมกบ Kubernetes โดยท าการออกแบบสราง Cluster จ านวน 4 อนสแตนท ไดแก Master จ านวน 1 อนสแตนท และ Node จ านวน 3 อนสแตนท ซงจะก าหนดให Pod แตละตวมขนาดของ CPU คดเปน 50% ของ 1 Core CPU และจะท าการ Scale out เมอ Node ทมจ านวนโหลดมากกวา 50% CPU เชนเดยวกบ Monolith ดงภาพประกอบท 14

ภาพประกอบ 14 สถาปตยกรรมแบบ Microservices โดยใช Kubernetes

สถาปตยกรรมแบบ Microservices นนประกอบไปดวย 3 เซอรวส ทท าหนาทแตกตางกนออกไปและถกแยกออกมาเปนซอฟตแวรคนละชด ไดแก

1) User service ท าหนาทจดเกบและอพเดทขอมลของลกคา ซงการเรยกใชจะผาน API (Application program interface)

2) Catalogues service ท าหนาทจดเกบสนคาซงผทตองการเรยกดสนคาตางๆจะตองเรยกมาใชบรการผาน API (Application program interface)

22

3) Redemption service ท าหนาทเปนตวกลางในการแลกสนคาโดยจะท าหนาทตดตอกบ Catalogues service และ User service เพอท าการตดแตมและตดสนคาผาน REST (Representational state transfer)

โครงสรางสถาปตยกรรมแบบ Microservices ของแอปพลเคชนสะสมแตมนนประกอบไปดวย S1. เรยกดสนคาทตองการจะแลกโดยแอปพลเคชนเรยกขอมลสนคาจาก Catalogues service และ S2. เมอลกคาแลกสนคาระบบจะท าการตดแตมของลกคาท User services หลงจากนนท าการตดสนคาออกจากคลงดงภาพประกอบท 15

ภาพประกอบ 15 ล าดบการท างานของสถาปตยกรรมแบบ Microservices

3.1.3 การออกแบบวธการรบสงขอมล การออกแบบสถาปตยกรรมโดยท วไปนนแอปพลเคชนทท าหนาท เปน User

interface หรอสวนทท าหนาทตดตอกบผใชงานจะตองท าการรบสงขอมลกบเซรฟเวอรผาน REST (Representational state transfer) โดยในขนตอนนจะอธบายถงการออกแบบ API (Application Program Interface) ของสถาปตยกรรมแบบ Monolith และ Microservices

3.1.3.1 Monolith API จากภาพประกอบ 11 แสดงใหเหนถงการรบสงขอมลระหวาง Client กบ Loyalty

service ซงประกอบไปดวย API (Application Program Interface) จ านวน 2 เซอรวส ไดแก @GET /v1/loyalty/catalogues ใชส าหรบเรยกขอมลสนคาจากเซรฟเวอร @POST /v1/loyalty/redeem ใชส าหรบแลกสนคา

23

3.1.3.2 Microservices API จากภาพประกอบ 14 แสดงใหเหนถงการรบสงขอมลระหวาง Client ทตดตอ

เซอรวสตางๆ โดยประกอบไปดวย API (Application Program Interface) ทรบสงขอมลจาก Client และ API ส าหรบรบสงขอมลระหวางเซอรวสดวยกนเอ งซ งประกอบไปดวย API (Application Program Interface) จ านวน 4 เซอรวส ไดแก

@GET /v1/loyalty/catalogues ซงอยในโดเมนของ Catalogue service ใชเพอท าการเรยกขอมลสนคาจากเซรฟเวอร

@POST /v1/loyalty/deductItem ซงอยในโดเมนของ Catalogue service ใชเพอท าการหกสนคาทถกแลกออกจากคลง

@POST /v1/loyalty/deductPoint ซงอยในโดเมนของ Users service ใชเพอท าการหกแตมหลงจากท าการแลกสนคา

@POST /v1/loyalty/redeem ซงอยในโดเมนของ Redemption service ใชเพอท าการแลกสนคา

3.1.4 กระบวนการออกแบบ Cluster การออกแบบและการสราง อนสแตนท บน Amazon webservices ซงในงานวจยน

ประกอบไปดวย EC2 ทงหมดจ านวน 7 อนสแตนท ไดแก Master node จ านวน 1 อนสแตนท โดยท าหนาทควบคม Cluster Node node จ านวน 3 อนสแตนท โดยท าหนาทเปนตวประมวลผล API Gateway จ านวน 2 อนสแตนท โดยท าหนากระจาย Request ไปยงสวน

ตางๆ Load test generator จ านวน 1 อนสแตนท โดยท าหนาทสราง Workload ใหแก

แอปพลเคชน การออกแบบโครงสรางของ Network ภายใน Cluster โดยใหทงหมดอยใน Private

subnet โดยมเพยง Load test generator อยใน Public subnet เทานน โดยรายละเอยดของประเภท อนสแตนท ทถกใชในงานวจยนถกแสดงดงภาพประกอบ 16

24

ภาพประกอบ 16 รายการ อนสแตนท ประเภทตางๆ ทถกใชในงานวจยบน Amazon webservices

3.1.5 เครองมอทใชในการวจย การจ าลองแอปพลเคชนสะสมแตมในงานวจยนประกอบไปดวยเครองมอทใชในการ

พฒนาซอฟตแวรโดยมรายละเอยดดงตาราง 2

ตาราง 2 เครองมอทใชในการพฒนา

เครองมอทใชในการพฒนา เวอรชน หนาท Node.js 8.6.0 ภาษาทใชพฒนาแอปพลเคชน

MongoDB 3.4.0 ฐานขอมลส าหรบแอปพลเคชน Docker 19.0.3 Container ส าหรบตดตงแอปพลเคชน

Kubernetes 1.15.0 เครองมอชวยจดการกบ Container

Apache JMeter 5.2.1 เครองมอในการจ าลองปรมาณการใชงาน

Grafana 6.7.3 แดชบอรดส าหรบตรวจสอบการใชงานทรพยากร

Prometheus 2.17.2 ฐานขอมลทใชจดเกบขอมลทรพยากร

การจ าลองแอปพลเคชนสะสมแตมแบบ Monolith ไดจดเตรยม Amazon web services โดยแตละอนสแตนทมคณสมบตดงตาราง 3

25

ตาราง 3 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Monolith

หนาท AWS

อนสแตนท คณสมบต

จ านวน (อนสแตนท)

Loyalty service T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1 API gateway T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

Test generator T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

การจ าลองแอปพลเคชนสะสมแตมแบบ Microservices ไดจดเตรยม Amazon web services โดยแตละอนสแตนทมคณสมบตดงตาราง 4

ตาราง 4 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Microservices

หนาท AWS

อนสแตนท คณสมบต

จ านวน (อนสแตนท)

Users service T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1 Catalogues

service T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

Redemption service

T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

API gateway T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1 Test generator T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

การจ าลองแอปพลเคชนสะสมแตมแบบ Cluster ไดจดเตรยม Amazon web services โดยแตละอนสแตนทมคณสมบตดงตาราง 5

26

ตาราง 5 คณสมบตของ AWS อนสแตนท ทใชในการทดสอบแบบ Cluster

หนาท AWS

อนสแตนท คณสมบต

จ านวน (อนสแตนท)

Master T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1 Nodes T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 3

Test generator T3.small 2 vCPUs, 2.5 GHz, 2 GiB memory 1

3.2 กระบวนการพฒนาซอฟตแวร หลงจากการออกแบบสถาปตยกรรมแบบ Monolith และ Microservices เรยบรอยแลว

ขนตอนถดไปคอกระบวนการพฒนาซอฟตแวร โดยกระบวนการพฒนาซอฟตแวรในงานวจยน ประกอบไปดวย 4 สวน ไดแก พฒนา (Develop), สราง (Build), สงมอบ (Ship) และ ใชงาน

(Deploy) 3.2.1 การพฒนา

ในสวนนเปนการพฒนาแอปพลเคชนฝง Backend ทแบงออกเปน 2 สถาปตยกรรมไดแก Monolith และ Microservices โดยซอฟตแวรทงหมดจะถกพฒนาดวย Node.js ดงภาพประกอบ 17 ซงประกอบไปดวยซอฟตแวรทงหมด 4 ชดจ าแนกตามสถาปตยกรรม

สถาปตยกรรมแบบ Monolith 1) Loyalty service (Monolith)

สถาปตยกรรมแบบ Microservices 1) Users service (Microservices) 2) Catalogue service (Microservices) 3) Redemptions service (Microservices)

27

ภาพประกอบ 17 ตวอยางโคดทใชในการพฒนาแอปพลเคชน

ขนตอนตอไปคอการเตรยมขอมลใน Database โดยท Database จะแบงออกเปน 2 ส วน ได แ ก Database ส าห รบ สถ า ป ต ยก รรม แบบ Monolith แล ะ Database ส าห รบสถาปตยกรรมแบบ Microservices โดยมการแบง Collection ดงตอไปน

1) Users collection จดเกบขอมลลกคาจ านวน 1,000 Documents 2) Products collection จดเกบขอมลสนคาจ านวน 3 Documents

3.2.2 การสรางและสงมอบ การพฒนาซอฟตแวรโดยใช Docker นนซอฟตแวรทเสรจแลวจะถกน าไปบรรจใส

Docker image ผาน Dockerfile เพอท าการสงมอบ Image ไปยง Docker hub ซงท าหนาทเปนศนยกลางในการจดเกบและเผยแพร Image โดยการสงมอบ Image นนสามารถอธบายไดดงภาพประกอบ 18

28

ภาพประกอบ 18 ขนตอนการสองมอบ Docker image ไปยง Amazon webservices

Dockerfile คอ text document ทใชในการเขยนค าสงเพอสราง Docker image โดยแสดงตวอยางดงภาพประกอบ 19

ภาพประกอบ 19 ตวอยาง Dockerfile

3.2.3 การน าไปใชงาน ขนตอนของการน าไปใชงานหลงจากสงมอบ Docker image ไปยง Docker hub

แลววธการ Deploy ในสวนของ Docker นนใช docker-compose.yml ซงเปน Configuration โดยท าการตงคาเกยวกบเวอรชนของซอฟตแวรทใชและการตดตอกนระหวางเครอขายโดยผใชจะตองเปนผก าหนด ส าหรบตดตง Docker image ดงตวอยางภาพประกอบ 20

29

ภาพประกอบ 20 ตวอยาง docker-compose.yml

ไฟล docker-compose.yml จะเปนการระบวา Docker image ทจะเรยกมาใชงานจาก Docker hub นนมชอวาอะไรและจะท าการตดตงดวย Port ใด เปนตน

วธการ Deploy โดยใช Kubernetes โดยการ Deploy ซอฟตแวรโดยใช Kubernetes นนจะไปประกอบไปดวย 2 สวน ไดแก Pod และ Services ดงภาพประกอบตวอยางท 21

30

ภาพประกอบ 21 ตวอยาง example-deployment.yml

การตดตง Pod และ service ของ Kubernetes งานวจยน ไดใชคณสมบตของ Kubernetes คอ Horizontal pod autoscaling ซงตดตงใหกบทก Pod ทอยใน Cluster โดยมการก าหนดกฏของการ Scale out เปนดงน

1) Pod มขนาดเปน 500 millicores ของ CPU ยกตวอยางเชน 500 millicores ของ 1 Core CPU จะเทากบ 50% ของ CPU ดงภาพประกอบ 22

31

ภาพประกอบ 22 ตวอยาง example-deployment.yml ทมการก าหนดขนาดของ CPU

2) Pod จะ Scale out กตอเมอมการใช CPU มากกวา 50% โดยก าหนดให Pod เรมตนมขนาดเทากบ 1 ตวและสามารถ scale out ไดมากทสด 10 ตว ดงตวอยางค าสงตอไปน

- kubectl autoscale deployment/app-monolith --min=1 —max=10 —cpu-percent=50

3.3 วธการทดลอง การเปรยบประสทธภาพของสถาปตยกรรมแบบ Monolith และ Microservices โดย

โห ล ด ผ า น REST (Representational state transfer) ไป ย ง แ อ ป พ ล เค ช น จ า น ว น 300 Transactions/second โดยมการเพม 1 Thread ทกๆ 10 วนาท จนถงจ านวน 30 Threads โดยการทดสอบใชระยะเวลา 10 นาท ทดสอบโดยใช Apache JMeter ซงแบงเปนการเรยกดสนคาและการท ารายการแลกสนคา โดยวธการวดผลแบงออกเปน 2 สวนดงน

32

1. เปรยบเทยบ Response time ระหวาง Monolith และ Microservices โดยใช Docker บน Amazon webservice โดยใช EC2 ท ม Ubuntu OS 1.8.4 T3.Small 2 vCPUs, 2.5

GHz, Intel Skylake P-8175, 2 GiB memory, EBS 2. เปรยบเทยบ Response time ระหวาง Monolith และ Microservices โดยใช

Kubernetes บน Amazon webservice ซ งท าการตดตง Kubernetes cluster ไวโดยมการท า Horizontal pods autoscaler เมอใช CPU เกน 50% ประกอบไปดวย EC2 จ านวน 4 อนสแตนท ซงมคณสมบตดงตอไปน Master node ทมคณสมบต Ubuntu OS 1.8.4 T3.Small 2 vCPUs, 2.5

GHz, Intel Skylake P-8175, 2 GiB memory, EBS แล ะ 3 Node nodes โด ย ม คณ สม บ ตเดยวกนกบ Master node

3.4 วธการวเคราะหผล การทดสอบใช Apache JMeter ในการทดสอบโหลดขนาด 300 Transactions/second

ระยะเวลา 10 นาท จ านวน 3 ครง โดยตวแปรทใชวดประสทธภาพการใชงานคอ Throughput และ Average response time ตวอยางการตงคาของ Apache JMeter แสดงดงภาพประกอบ 23

ภาพประกอบ 23 หนาจอการตงคา Apache Jmeter

33

บทท 4 ผลการศกษา

จากการทดลองการเปรยบเทยบประสทธภาพดวยสถาปตยกรรมแบบ Monolith และ Microservices โดยใช Docker และ Kubernetes เห นไดชดวาการน าสถาปตยกรรมและเทคโนโลยทน ามาประยกตใชรวมกนนนสามารถเพมความสามารถใหแอปพลเคชนทจ าลองขนมาท างานไดดยงขนและไมไดสงผลกบประสทธภาพของแอปพลเคชนเดม

4.1 ผลการทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Docker การทดสอบ Monolith โดยใช Docker จ านวน 3 ครง พบวา Response time และ

Throughput ของการทดสอบมคาเพมสงขนเรอยๆ เนองจากจ านวน Thread มการเพมขนทกๆ 10 วนาท และจะมจ านวนครบ 30 Threads ตามทก าหนดในนาทท 5 โดยผลการทดสอบทง 3 ครงแสดงดงภาพประกอบ 24-26

ภาพประกอบ 24 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Monolith โดยใช Docker

34

ภาพประกอบ 25 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Monolith โดยใช Docker

ภาพประกอบ 26 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Monolith โดยใช Docker

จากภาพประกอบขางตนจะสงเกตเหนไดวานาทท 5 ของการทดสอบทง 3 ครงจะเกด Response time ทเปลยนไปในแตละการทดลอง ซงปจจยทสงผลใหมการเปลยนแปลงนนพบวาการท างานของ Amazon webservices ของ T3.small ซ ง เปน อนสแตนท type ประเภท Burstable Performance อนสแตนท จะชวยเพมประสทธภาพใหกบแอปพลเคชนใหกบ CPU โดย

35

การใชคะแนน CPU credit usage โดยการทดสอบเกดขนในชวงเวลา 17.37 – 18.27 นาฬกา โดยแสดงการใชงาน CPU credit usage ดงภาพประกอบ 27

ภาพประกอบ 27 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรม Monolith โดยใช Docker

จากการจ าลองทดสอบแอปพลเคชนสะสมแตมทพฒนาดวยสถาปตยกรรมแบบ Monolith ด ว ย Docker บ น Amazon webservices โ ด ย ท า ก า ร ท ด ส อ บ โห ล ด 300 Transactions/second ซ ง ม Response time เฉ ล ย อ ย ท 7 Millisecond แ ล ะ Throughput 299.40 Transactions/second โดยผลการทดลองทง 3 ครงแสดงดงตาราง 6

ตาราง 6 ผลการทดลองของสถาปตยกรรมแบบ Monolith โดยใช Docker

Experimental Error % Throughput (tps)

Response time (ms)

ผลการทดลองครงท 1 0 299.4 9 ผลการทดลองครงท 2 0 299.3 6 ผลการทดลองครงท 3 0 299.5 6

เฉลย 0 299.40 7

36

จากตาราง 6 พบวา Throughput ของการทดลองแตละครงมคา ท เขาใกล 300 Transactions/second ซงหมายถงระบบทออกแบบยงคงรองรบการปรมาณการใชงานท 300 Transactions/second ตามทก าหนดไวและผลการเปรยบเทยบของการทดสอบแสดงดงภาพประกอบ 26

ภาพประกอบ 28 Throughput และ Response time ของ Monolith ทใช Docker

4.2 ผลการทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Docker ผลการทดลองของ Microservices โดยใช Docker นนพบวาพฤตกรรมการเพ ม

Response time มลกษณะคลายกบสถาปตยกรรมแบบ Microservices ซงเปนผลมาจากการเพมจ านวน Thread ทกๆ 10 วนาท โดยผลการทดสอบทง 3 ครงแสดงดงภาพประกอบ 29-31

299.4 299.3 299.5

9 6 60

50

100

150

200

250

300

350

ผลการทดลองครงท 1 ผลการทดลองครงท 2 ผลการทดลองครงท 3

ms

Throughput และ Response time ของ Monolith ทใช Docker

Throughput Average response time

37

ภาพประกอบ 29 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Microservices โดยใช Docker

ภาพประกอบ 30 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Microservices โดยใช Docker

38

ภาพประกอบ 31 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Microservices โดยใช Docker

จากการทดสอบพบวาในขณะทดลองการสรางปรมาณโหลดใหแกระบบ Amazon webservices มการใชงาน CPU credit usage โดยชวงเวลาทท าการทดสอบเรม 18.00 – 9.35 นาฬกา โดยแสดงดงภาพประกอบ 32

ภาพประกอบ 32 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Docker

จากการจ าลองทดสอบแอปพลเคชนสะสมแตมทพฒนาดวยสถาปตยกรรมแบบ Microservices ด ว ย Docker บ น Amazon webservices โด ยท า ก า รท ด ส อบ โห ลด 300

39

Transactions/second ซ ง ม Response time เฉ ล ย อย ท 30 Millisecond แล ะ Throughput 288.00 Transaction/second โดยผลการทดลองทง 3 ครงแสดงดงตาราง 7

ตาราง 7 ผลการทดลองของสถาปตยกรรมแบบ Microservices โดยใช Docker

Experimental Error % Throughput (tps)

Response time (ms)

ผลการทดลองครงท 1 0 291.2 25 ผลการทดลองครงท 2 0 291.7 27 ผลการทดลองครงท 3 0 281.1 38

เฉลย 0 288.0 30

จากตาราง 7 พบวา Throughput ของการทดลองแตละครง มคา ท ต ากวา 300

Transaction/second ซงหมายถงระบบทออกแบบดวย Microservices สงผลให Throughput ลดลงเมอเทยบกบปรมาณการใชงานท 300 Transaction/second ตามทก าหนดไวและผลการเปรยบเทยบของการทดสอบแสดงดงภาพประกอบ 29

ภาพประกอบ 33 Throughput และ Response time ของ Microservices ทใช Docker

291.2 291.7 281.1

25 27 38

0

50

100

150

200

250

300

350

ผลการทดลองครงท 1 ผลการทดลองครงท 2 ผลการทดลองครงท 3

ms

Throughput และ Response time ของ Microservices ทใช Docker

Throughput Average response time

40

4.3 ผลการทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes การทดสอบ Monolith โดยใช Kubernetes จ านวน 3 ครง พบวา Response time และ

Throughput ของการทดสอบมคาเพมสงขนและลดลงเนองจากจ านวน Thread มการเพมขนทกๆ 10 วนาท และมการใชงาน Horizontal pod autoscaling ซงจากการทดลองพบวาในขณะท Horizontal pod autoscaling ท าการ replicate จ านวนแอปพลเคชนนนท าให Response time ของแอปพลเคชนนนเพมขนโดยจ านวนแอปพลเคชนแสดงดงภาพประกอบ 34

ภาพประกอบ 34 จ านวนแอปพลเคชนทมการเพมขนในขณะจ าลองการสรางโหลดบนสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

จากท าการ replicate เสรจสนพบวา Response time ของการทดสอบทง 3 ครง มคาต าลงแสดงดงภาพประกอบ 35-37 เมอสงเกตนาทท 3 จะเหนไดวา Response time มคาสงขนและจะลดลงในเวลาตอมา

ภาพประกอบ 35 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

41

ภาพประกอบ 36 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

ภาพประกอบ 37 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

ในขณะทดลองพบวา Amazon webservices มการใช CPU credit usage เพอให อนสแตนท ท างานไดมประสทธภาพเพมขนโดยชวงเวลาของการทดสอบจะอยท 16.00 – 18.00 นาฬกาดงภาพประกอบ 38

42

ภาพประกอบ 38 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

จากการจ าลองทดสอบแอปพลเคชนสะสมแตมทพฒนาดวยสถาปตยกรรมแบบ Monolith ด ว ย Kubernetes บ น Amazon webservices โด ย ท า ก า รท ด ส อ บ โห ล ด 300 Transactions/second ซ ง ม Response time เฉ ลยอย ท 6.33 Millisecond และ Throughput 296.93 Transaction/second โดยขอมลทไดจากการทดลองแสดงดงตาราง 8

ตาราง 8 ผลการทดลองของสถาปตยกรรมแบบ Monolith โดยใช Kubernetes

Experimental Error % Throughput (tps)

Response time (ms)

ผลการทดลองครงท 1 0 297.8 6 ผลการทดลองครงท 2 0 297.1 6 ผลการทดลองครงท 3 0 295.9 7

เฉลย 0 296.93 6.33

จากตาราง 8 พบวา Throughput ของการทดลองแตละครง มคา ท ต ากวา 300

Transaction/second เพยงเลกนอยซงหมายถงระบบทออกแบบดวยสถาปตยกรรมแบบ Monolith โดยมการท างานแบบประมวลผลกระจายนนสามารถรองรบปรมาณการจ าลองโหลดได

43

เมอเทยบกบปรมาณการใชงานท 300 Transaction/second ตามทก าหนดไวและผลการเปรยบเทยบของการทดสอบแสดงดงภาพประกอบ 39

ภาพประกอบ 39 Throughput และ Response time ของ Monolith ทใช Kubernetes

4.4 ผลการทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes การทดสอบ Microservices โดยใช Kubernetes จ านวน 3 ครง พบวา Response time

และ Throughput ของการทดสอบมคาเพมสงขนเนองจากจ านวน Thread มการเพมขนทกๆ 10 วนาท และมการใชงาน Horizontal pod autoscaling ซ งจากการทดลองพบวาในขณะท Horizontal pod autoscaling ท าการ replicate จ านวนแอปพลเคชนนนจะท าให Response time ของแอปพลเคชนนนเพมขนโดยจ านวนแอปพลเคชนแสดงดงภาพประกอบ 40 ตามล าดบ

297.8 297.1 295.9

6 6 7

0

50

100

150

200

250

300

350

ผลการทดลองครงท 1 ผลการทดลองครงท 2 ผลการทดลองครงท 3

ms

Throughput และ Response time ของ Monolith ทใช Kubernetes

Throughput Average response time

44

ภาพประกอบ 40 จ านวนแอปพลเคชนทมการเพมขนในขณะจ าลองการสรางโหลดบนสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

จากภาพประกอบท 40 จะเหนไดวาการทดสอบแตละ Horizontal pod autoscaling จะท าการ Replicate จ านวนแอปพลเคชนแตกตางกนออกไป และเมอสงเกตท Targets จะเหนวา Horizontal pod autoscaling จดการ CPU ของแตละแอปพลเคชนไมใหเกน 50% ซงการเพมขนของแอปพลเคชนจะสงผลให Response time เกดอาการหนวงในขณะเรม replicate และผลการทดสอบ Response time ทง 3 ครงแสดงดงภาพประกอบ 41-43

ภาพประกอบ 41 ผลการทดสอบครงท 1 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

45

ภาพประกอบ 42 ผลการทดสอบครงท 2 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

ภาพประกอบ 43 ผลการทดสอบครงท 3 ของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

46

ในขณะทดลองพบวา Amazon web services มการใช CPU credit usage เพอให อนสแตนท ท างานไดมประสทธภาพเพมขนโดยชวงเวลาของการทดสอบจะอยท 14.00 – 16.00 นาฬกา ดงภาพประกอบ 44

ภาพประกอบ 44 การใชงาน CPU credit usage ในขณะทดสอบของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

จากการจ าลองทดสอบแอปพลเคชนสะสมแตมทพฒนาดวยสถาปตยกรรมแบบ Microservices ดวย Kubernetes บน Amazon web services โดยท าการทดสอบโหลด 300 Transactions/second ซงม Response time เฉลยอย ท 12.67 Millisecond และ Throughput 291.30 Transaction/second โดยขอมลทไดจากการทดลองแสดงดงตาราง 9

ตาราง 9 ผลการทดลองของสถาปตยกรรมแบบ Microservices โดยใช Kubernetes

Experimental Error % Throughput (tps)

Response time (ms)

ผลการทดลองครงท 1 0 290.80 12 ผลการทดลองครงท 2 0 291.40 14 ผลการทดลองครงท 3 0 291.70 12

เฉลย 0 291.30 12.67

47

จากตาราง 9 พบวา Throughput ของการทดลองแตละครงมคาท ใกลเคยง 300 Transaction/second ซงหมายถงระบบทออกแบบดวยสถาปตยกรรมแบบ Microservices โดยมการท างานแบบประมวลผลกระจายนนสามารถรองรบปรมาณการจ าลองโหลดไดเมอเทยบกบปรมาณการใชงานท 300 Transaction/second ตามทก าหนดไวและผลการเปรยบเทยบของการทดสอบแสดงดงภาพประกอบ 45

ภาพประกอบ 45 Throughput และ Response time ของ Microservices ทใช Kubernetes

4.5 สรปผลการทดลอง จากตารางทไดกลาวมาขางตนนน เมอน า Response time มาเปรยบเทยบกนแลวพบวา

สถาปตยกรรมแบบ Monolith และ Microservices ทใช Kubernetes ทรองรบการประมวลผลแบบขยายนนม Response time ทนอยกวาสถาปตยกรรมแบบ Monolith และ Microservices ทใช Docker ดงภาพประกอบ 46

290.8 291.4 291.7

12 14 12

0

50

100

150

200

250

300

350

ผลการทดลองครงท 1 ผลการทดลองครงท 2 ผลการทดลองครงท 3

ms

Throughput และ Response time ของ Microservices ทใช Kubernetes

Throughput Average response time

48

ภาพประกอบ 46 การเปรยบเทยบ Throughput และ Response time ของสถาปตยกรรมแบบตางๆ

จากแผนภมดงกลาวเหนไดวา Response time ของสถาปตยกรรมทใช Kubernetes ในการจดการกบ Cluster นนมคานอยกวาการใช Docker ผวจยจงท าการศกษาตอเพอหาสาเหต โดยท าการเปรยบเทยบการใชงานของ Kubernetes ใน Cluster ทมเพยง 1 Master และ 1 Node ทมการท างานแบบการประมวลผลแบบเดยวและการประมวลผลแบบขยาย หลงจากการทดลองพบวาการใชงานการประมวลผลแบบขยายทมทรพยากรจ านวนจ ากดท าใหประสทธภาพลดลงเนองจากการขยายตวของ Horizontal pod autoscaling ท มกระบวนการ Warm start ท ใชทรพยากรจ านวนหนงซงสงผลใหประสทธภาพการท างานลดลงเมอเทยบกบการประมวลผลแบบเดยว โดยตารางเปรยบเทยบแสดงดงภาพประกอบ 47

299.70 296.93 288 291.3

7.00 6.3330

12.67

0.00

50.00

100.00

150.00

200.00

250.00

300.00

350.00

ms

Throughput และ Response time ของ Monolith และ Microservices ทใช

Docker และ Kubernetes

Throughput Average response time

49

ภาพประกอบ 47 การเปรยบเทยบ Throughput และ Response time ของการประมวลผลแบบเดยวและการประมวลผลแบบขยายบน Kubernetes

จากการทดสอบสามารถสรปไดวาการใชสถาปตยกรรมใดๆ ในรปแบบของการประมวลแบบขยายนนทรพยากรทใชตองมความสมพนธกบปรมาณของผใชเนองจากการ Scale out ของ Kubernetes นนสงผลให Response time มคาสงเพมขนในขณะท Horizontal pod autoscaling มการสรางแอปพลเคชนในรปแบบ Warm start โดยททรพยากรสวนหนงถกน าไปใชในการสรางแอปพลเคชน ซงจากการทดลองยงพบอกวาพฤตกรรมของ Horizontal pod autoscaling นนจะท าการสรางแอปพลเคชนเมอเกด Burst workload ซงสงผลใหแอปพลเคชนถกสรางขนจ านวนมากและท าใหเกดปญหาคอขวดแกระบบอนเนองมาจากทรพยากรทมจ ากด ยงไปกวานนการทดลองของ Microservices เปนสถาปตยกรรมทมการประมวลผลแบบกระจายเมอใชรวมกบ Kubernetes สามารถชวยลด Response time ได

299.6 294.9

263.8247

3 6

4659

0

50

100

150

200

250

300

350

ms

Throughput และ Response time ของการประมวลผลแบบเดยวและการประมวลผลแบบ

ขยาย

Throughput Average response time

50

บทท 5 สรป อภปรายผล และขอเสนอแนะ

บทนน าเสนอผลการเปรยบเทยบประสทธภาพของการน าสถาปตยกรรมแบบ Monolith และ Microservices มาใชรวมกบ Docker และ Kubernetes โดยในบทนจะสรปผลทไดจากการท างานวจยและอธบายเกยวกบขอจ ากดและขอเสนอแนะทจะสามารถน าไปไปพฒนาตอยอดไดในอนาคต

5.1 สรปผลงานวจย งานวจยนไดพฒนาเพอหาประสทธภาพของการน าสถาปตยกรรมตางๆ มาใชรวมกบ

เทคโนโลยสมยใหม เชน Docker และ Kubernetes เพอศกษาแนวทางและประโยชนของการน าไปใชตอยอดในธรกจทตองพฒนาแอปพลเคชนทรองรบจ านวนผใชมหาศาล โดยงานวจยนไดท าการเปรยบเทยบเพอหาคา Response time และ Throughput ของสถาปตยกรรมและเทคโนโลยแบบเกาและแบบใหม งานวจยน ไดแบงการทดสอบออกเปน 4 รปแบบ ไดแก 1) ทดสอบแอปพลเคชนดวยสถาปตยกรรมแบบ Monolith ดวย Docker 2) ทดสอบแอปพลเคชนดวยสถาปตยกรรมแบบ Microservices ดวย Docker 3) ทดสอบดวยสถาปตยกรรมแบบ Monolith ดวย Kubernetes 4) ทดสอบแอปพล เคชนดวยสถาปตยกรรมแบบ Microservices ดวยสถาปตยกรรมแบบ Kubernetes โดยจ าลองการสรางโหลดขนาด 300 Transactions/second จ านวน 30 Threads โดยเพม 1 Thread ทกๆ 10 วนาท ดวยระยะเวลา 10 นาท เพอศกษขอดและขอดอยของการน าสถาปตยกรรมและเทคโนโลยแบบตางๆ มาประยกตใชรวมกน ซงการทดลองในการเปรยบเทยบนตองค านงถงการออกแบบสถาปตยกรรม ขนตอนการพฒนาและยงไปกวานนการเลอกคณสมบตฮารดแวรของใหเหมาะสมกบแอปพลเคชนเพอลดความเอนเอยงซงอาจจะท าใหเกดขอผดพลาดของผลลพธทได

5.2 ขอจ ากดของงานวจย จากการทดลองในครงนพบวาการผลการทดลองนนสามารถคลาดเคลอนไดเนองความ

เสถยรของอนเทอรเนต และการทดสอบตองใช Bandwidth ของอนเทอรเนตคอนขางสงจงไมส าม ารถ เพ ม Throughput ใหม ากกว า 300 Transactions/second ซ งอ าจจะท า ให เก ดขอผดพลาดในการทดสอบไดและการทดสอบในงานวจยนเปนเพยงการทดสอบกบแอปพลเคชนทถกจ าลองขนมาและเปนแอปพลเคชนทมขนาดเลก ซงจ านวนโหลด 300 Transactions/second

51

นนเปนตวเลขทก าหนดขนมาเพอทดสอบเทานน ในงานวจยนไมไดท าการเกบรวบรวมผลการใชงานทรพยากรของฮารดแวรซงเปนขอมลทส าคญทสามารถน ามาวเคราะหปญหาของแอปพลเคชนได และเพอใหผลการทดลองออกมาแมนย ายงขนการทดสอบนนควรเปนแอปพลเคชนทถกพฒนาเพอรองรบการใชงานจรงในธรกจและดวยจ านวนโหลดทอางองจากผใชงานจรงนนจะท าใหไดรบขอมลทแมนย ายงขน

จากการทดลองจะเหนไดวาสถาปตยกรรมแบบ Monolith นนสามารถท างานไดอยางมประสทธภาพมากกวา Microservices ทมการท างานแบบ Cluster การออกแบบสถาปตยกรรมนนมขอดและขอจ ากดในหลายๆ ดานทแตกตางกนออกไป โดยงานวจยนไดน าเสนอเพยงดานประสทธภาพของการท างานเพยงดานเดยวเทานนจงไมสามารถเปรยบเทยบไดอยางชดเจนวาสถาปตยกรรมแบบใดท างานไดดกวากนในภาพรวม

5.3 ขอเสนอแนะ ผวจยมความคาดหวงวาการน าเสนอแนวคดจากแอปพลเคชนทไดพฒนานจะสามารถ

น าไปใชในการประกอบการตดสนใจและเปนประโยชนตอผทสนใจในดานการออกแบบสถาปตยกรรม จงไดมการสรปขอเสนอแนะทสามารถน าไปใชในการพฒนาแอปพลเคชนตอไปเพอใหแอปพลเคชนมความยดหยนและปรบปรงใหแอปพลเคชนมประสทธภาพดขน สามารถระบรายละเอยดไดดงตอไปน

1) การพฒนาแอปพลเคชนเพอใหรองรบการประมวลแบบขยายนนสามารถท าใหแอปพลเคชนมการท างานเรวขนโดยทไมตองท าการเพมทรพยากรคอมพวเตอรแตเมอทรพยากรถกใชอยางเตมทแลวการท างานแบบดงกลาวจะสงผลใหประสทธภาพชาลง ดงนนการวางแผนการและประเมนทรพยากรถอเปนเรองทส าคญ

2) การออกแบบสถาปตยกรรมทดนนตองออกแบบเพอใหตอบโจทยลกษณะของธรกจและองคกรและรองรบการเปลยนแปลงไดงาย

3) การน าเทคโนโลย Container มาใชแทนเครองคอมพวเตอรหรอ Virtual machine สามารถชวยใหการพฒนาและสงมอบรวดเรวขน

บรรณาน กรม

บรรณานกรม

Chung, A., Park, J. W., & Ganger, G. R. (2018). Stratus: cost-aware container scheduling in the public cloud. Paper presented at the Proceedings of the ACM Symposium on Cloud Computing.

Cloud, G. (2019). 5 principles for cloud-native architecture-what it is and how to master it. Retrieved from https://cloud.google.com/blog/products/application-development/5-principles-for-cloud-native-architecture-what-it-is-and-how-to-master-it

Delnat, W., Truyen, E., Rafique, A., Van Landuyt, D., & Joosen, W. (2018). K8-Scalar: a workbench to compare autoscalers for container-orchestrated database clusters. Paper presented at the Proceedings of the 13th International Conference on Software Engineering for Adaptive and Self-Managing Systems.

Docker. (2019). What is a Container? Retrieved from https://www.docker.com/resources/what-container

Hightower, K., Burns, B., & Beda, J. (2017). Kubernetes: up and running: dive into the future of infrastructure: " O'Reilly Media, Inc.".

Jaramillo, D., Nguyen, D. V., & Smart, R. (2016, 30 March-3 April 2016). Leveraging microservices architecture by using Docker technology. Paper presented at the SoutheastCon 2016.

Kleppmann, M. (2017). Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems: " O'Reilly Media, Inc.".

Kubernetes. (2019). Concepts. Retrieved from https://kubernetes.io/docs/concepts/ Newman, S. (2015). Building microservices: designing fine-grained systems: " O'Reilly

Media, Inc.". Ueda, T., Nakaike, T., & Ohara, M. (2016). Workload characterization for microservices.

Paper presented at the 2016 IEEE international symposium on workload characterization (IISWC).

Vayghan, L. A., Saied, M. A., Toeroe, M., & Khendek, F. (2018, 2-7 July 2018). Deploying Microservice Based Applications with Kubernetes: Experiments and Lessons

53

Learned. Paper presented at the 2018 IEEE 11th International Conference on Cloud Computing (CLOUD).

Vernon, V. (2016). Domain-driven design distilled: Addison-Wesley Professional. Villamizar, M., Garcés, O., Castro, H., Verano, M., Salamanca, L., Casallas, R., & Gil, S.

(2015, 21-25 Sept. 2015). Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud. Paper presented at the 2015 10th Computing Colombian Conference (10CCC).

Villamizar, M., Garcés, O., Ochoa, L., Castro, H., Salamanca, L., Verano, M., . . . Lang, M. (2016, 16-19 May 2016). Infrastructure Cost Comparison of Running Web Applications in the Cloud Using AWS Lambda and Monolithic and Microservice Architectures. Paper presented at the 2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid).

Zhao, A., Huang, Q., Huang, Y., Zou, L., Chen, Z., & Song, J. (2019). Research on Resource Prediction Model Based on Kubernetes Container Auto-scaling Technology. Paper presented at the IOP Conference Series: Materials Science and Engineering.

ประวตผ เขยน

ประวตผเขยน

ชอ-สกล นายนภวชญ ทมวงษ วน เดอน ป เกด 27 เมษายน 2535 สถานทเกด แพร วฒการศกษา พ.ศ. 2554

วทยาศาสตรบณฑต สาขาวทยาการคอมพวเตอร มหาวทยาลยเชยงใหม พ.ศ. 2561 วทยาศาสตรมหาฑต สาขาวชาเทคโนโลยสารสนเทศ มหาวทยาลยศรนครนทรวโรฒ