performance comparison between monolith and …
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.