Trước khi Spring Boot ra đời, việc cấu hình một ứng dụng Spring thường đòi hỏi nhiều file XML hoặc các class Java cấu hình, sây khó khăn cho việc bảo trì và phát triển.. Sprine Boot đượ
Trang 1TRUONG DAI HOC GIAO THONG VAN TAI KHOA CONG NGHE THONG TIN
PHAN TICH THIET KE YEU CAU
So sánh hiệu suất và tính năng của Spring Boot và Quarkus trong phát triển web
Giảng viên hướng dẫn : GV Nguyễn Trọng Phúc
Trang 2II Giải) Ả , 4
In nh ố 5
2.2 LCch sử hình thành của Quarkus - - 22 2 2222222221203 23c n ng cv cv ren 7
® Spring Boot Starter (Câu hình các Sfarte) - + 22422 2 2121212121515 8121 15155252 12
® Auto-Configuration (Cấu hình tự động) - 2-2222 SE SE SESE5E2E25282E1E 1815121212121 c2 12
® _ Externalized Conñguration (Câu hình ngoài) -5- 5-2522 2 223252323318 21 5E xe c2 12
® Spring Boot Actuator (Theo dõi và Quản Ìý) - - nọ Tnhh HH ng He 13
® Annotation va Dependency ÏnJectiOH - 2S cece ce eeeeeeee cece eeseeaeeeseeeseeeeneneeeeeess
4.1.3 Tích hợp với Cơ sở dữ liỆu - Q2 vn TT TT HT TH TH nọ nh cv 15
4.1.4 Hỗ trợ phát triển phản ứng và kiểm thử 5252 2 S2323232121 2515311 E1 E211 815111211 xe, 15
Trang 3T7 /, nen - 17
Chương ễ: Phân tích thC trường - - -: 1 222222 Sv S121 1121111811 1111 11H11 HH như 19 PhTn ế: Tiêu chí so sánh hiệu năng giữa spring boot và quarkus - 22225222 S2 Sz2z2zss se 24
PhTn 7: Kết luận 5 - - S1 12123 Tx TY T131 5151111111111 1111215221515 11110111 TH HH 25
Trang 4Chuong 1: Introduction 1.1 TKng quan
Trong bối cảnh phát triển ứng dụng web hiện đại, việc lựa chọn công cụ và framework phù hợp là yếu tổ then chốt ảnh hưởng đến hiệu suất, khả năng mở rộng và
trải nghiệm phát triển Spring Boot đã lâu trở thành lựa chọn hàng đầu cho các nhà
phát triển Java nhờ vào sự phong phú trong tính năng và cộng đồng hỗ trợ mạnh mẽ Tuy nhiên, với sự xuất hiện của Quarkus, m6t framework moi noi duoc thiét ké cho môi trường đám mây và microservices, việc so sánh giữa hai công cụ nảy trở nên cần thiết hơn bao giờ hết
Đề tài này tập trung vào việc so sánh hiệu năng và tính nang cua Spring Boot va Quarkus trone phát triên web Mục tiêu là cung cấp cái nhìn sâu sắc về ưu và nhược điểm của từng công cụ, giúp các nhà phát triển có thể lựa chọn công cụ phủ hợp nhất cho nhu cầu của mình
Phần giới thiệu này sẽ bao gồm:
® Lý do tat sao Spring Boot va Quarkus duce so sánh
® Các tiêu chi chính được sử dụng để đánh giá hiệu năng và khả năng quản lý dự án của hai công cụ
e Tam quan trọng của việc lựa chọn công cụ phù hợp trong bối cảnh phát triển các dự án web hiện đại
Với sự phát triển nhanh chóng của các công cụ và công nghệ mới, việc cập nhật
và đánh giá các công cụ xây dựng web không chỉ giúp tối ưu hóa quy trình phát triển
mà còn tạo tiền đề cho những cải tiến trong tương lai
Trang 5Quarkus là một famework mã nguồn mở được phát triển bởi Red Hat, được thiết kế đặc biệt cho các ứng dụng cloud-native và serverless Nó có cách tiếp cận "siêu âm, cận nguyên tử" để phát triển lava, tập trung vào thời gian khởi động nhanh, tiêu thụ bộ nhớ thấp và sử dụng tài nguyên hiệu quả Quarkus đạt được những lợi ích hiệu suất này bằng cách tận dụng biên dịch trước thời đại
(AOT), GraalVM và tạo hình ảnh gốc Ngoài ra, Quarkus cung cấp hỗ trợ riêng
cho các tiêu chuẩn Java phô biến như Jakarta EE và MicroProfile
Trang 61.3 License cua Spring boot va Quarkus:
- Spring boot
spring-projects/spring-boot is licensed under the
us Apache License 2.0
A permissive license whose main conditions require preservation of
copyright and license notices Contributors provide an express grant of
patent rights Licensed works, modifications, and larger works may be
distributed under different terms and without source code
- Quarkus
quarkusio/quarkus is licensed under the
as Apache License 2.0
A permissive license whose main conditions require preservation of
copyright and license notices Contributors provide an express grant of
patent rights Licensed works, modifications, and larger works may be
distributed under different terms and without source code
Trang 7Chương 2: LCch sử hình thành
2.1 LCch sw hinh thanh cua Spring Boot
Spring Boot được phát triển bởi Pivotal Software, với phiên bản đầu tiên
(Spring Boot 1.0) được phát hành vào tháng 4 năm 2014 Muc tiéu ban dau cua Spring Boot là giải quyết những hạn chế và phức tạp trong việc cấu hình Spring Framework truyền thống Spring Framework, mặc dù rất mạnh mẽ và linh hoạt, nhưng yêu cầu nhiều cầu hình thủ công và có thé tro nên cồng kềnh khi xây dựng các ứng dụng phức
tạp
Trước khi Spring Boot ra đời, việc cấu hình một ứng dụng Spring thường đòi
hỏi nhiều file XML hoặc các class Java cấu hình, sây khó khăn cho việc bảo trì và phát triển Sprine Boot được giới thiệu như một cách tiếp cận đơn giản và hiệu quả
hơn, với các cấu hình tự động và các công cụ hỗ trợ như Spring Initializr, giúp nhả
phát triển bắt đầu dự án mới nhanh chóng chỉ với một vài cú nhấp chuột
Từ khi ra mắt, Spring Boot đã nhanh chóng trở thành một trong những framework phô biến nhất trong cộng đồng Java, được sử dụng rộng rãi trong nhiều loại ứng dụng khác nhau, từ các ứng dụng web đơn giản đến các hệ thống microservices phức tạp Sự phát triển và cải tiến liên tục của Spring Boot đã giúp nó
trở thành một phần không thê thiếu trong hệ sinh thái Spring, giúp các nhà phát triển
xây dựng các ứng dụng hiện đại một cách dễ đàng và nhanh chóng hơn
2.2 LCch sử hình thành của Quarkus
Quarkus được công bố lần đầu vảo tháng 12 năm 2019 Quarkus được phát triển bởi Red Hat, một công ty công nghệ lớn chuyên cung cấp giải pháp nguồn mở Nhóm phát triển Quarkus bao gồm nhiều kỹ sư và chuyên gia hàng đầu trong lĩnh vực Java va cloud-native.Quarkus duoc thiét ké dé đáp ứng nhụ cầu về hiệu suất và khả
năng mở rộng trong phát triển ứng dụng Java, nhắm đến môi trường microservices và
cloud-native
Khac voi Spring Boot, Quarkus chú trọng vào việc tối ưu hóa cho các ứng dụng chạy trong môi trường container và cloud, với tính năng hot reload và khả năng khởi động nhanh Quarkus tận dụng công nghệ như GraalVMI để biên dịch mã Java thành
mã máy, giúp cải thiện hiệu suất và giảm thời gian khới động
Trang 8Quarkus nhắm đến nhiều loại người dùng và đối tượng khác nhau trong lĩnh
vực phát triển phần mềm, bao gồm:
- Lập trình viên Java: Quarkus cung cấp một trải nghiệm phát triển mượt mà với tính năng hot reload, giúp lập trình viên phát triển nhanh chóng
- Nha phat trién Cloud-Native: Quarkus duoc tối ưu hóa cho môi trường cloud-
native, giup triên khai đễ dàng và hiệu quả hơn
- — Nhà kiến trúc sư hệ thống: Quarkus cho phép xây dựng các ứng dụng microservices linh hoạt và dễ mở rộng, phủ hợp với kiến trúc hiện đại
- _ Doanh nghiệp và Tổ chức: Quarkus giúp giảm chi phí vận hành và tối ưu hóa hiệu suất ứng dụng
- _ Cộng đồng nguồn mở: Quarkus là một dự án mã nguồn mở với cộng đồng đang phát triển, tạo cơ hội cho sự hợp tác và đổi mới
2.3 Các công nghệ trong cBng thời kỳ
Ngoai Spring boot va Quarkus, các công cụ khác như Micronaut và Dropw1zard
cũng đóng vai trò quan trọng trong quá trình phát triển ứng dụng web hiện đại
- _ Dropwizard là một khung Java mã nguồn mở được sử dụng để phát triển nhanh các dịch vụ web RESTful hiệu suất cao Nó tập hợp một số thư viện phổ biến
để tạo ra gói trọng lượng nhẹ Các thư viện chính mà nó sử dụng là ]etty, Jersey, Jackson, JUnit va Guava Hon ntra, no su dung thu vién néng cua minh được gọi là Metrics
- Micronaut Là một framework Java mới được thiết kế cho microservices, Micronaut cung cấp khả năng khởi động nhanh và tiêu thụ bộ nhớ thấp và tiêu
thụ ít tài nguyên hơn Hỗ trợ lập trình phản ứng, không cần Spring Container,
và có khả năng tích hợp tốt với các dịch vụ cloud
Mỗi công nghệ đều có những ưu điểm riêng, nhược điểm phù hợp với các mục đích và yêu cầu khác nhau trong quá trình phát triển ứng dụng Java Sự xuất hiện của các framework nhu Spring Boot va Quarkus da mang lại nhiều lựa chọn cho các nhà phát triển, iúp họ tôi ưu hóa quy trình làm việc và đáp ứng nhu cầu ngày càng cao của thị trường
Trang 9Cung cấp rất nhiều Cung câp các Co it modules/plugin
framework Java truyền thông
starter/modules san module /plugin dé sẵn có
có mở rộng chức năng Khởi động nhanh Khởi động cực Khởi động nhanh hơn hơn so với nhiêu nhanh (chỉ vài ms) Spring Boot
Tiêu tôn ít tài Tiêu tôn ít tài nguyên
Hiệu suất Tiêu tốn nhiễu tài
nguyên hơn các nguyén hon Spring hon Spring Boot framework Boot
"lightweight"
Xây dựng khá chậm Hỗ trợ HMR hạn chế Khả năng hỗ trợ Phong phú với nhiều Hệ sinh thái nhỏ hơn | Hệ sinh thái nhỏ hơn modules, thư viện hồ | so với Spring Boot, | so với Spring Boot và tro nhung dang phat Micronaut
tính năng
hợp sẵn
phí tài nguyên thâp
Trang 11
Chuong 3: TKng quan cong nghé
3.1 Các thành phTn cua Spring boot va Quarkus
3.1.1 Spring boot
Spring Boot la mét framework manh mé giup phat trién ing dung Java một
cách nhanh chóng và dễ dàng Một số thành phần chính của Spring Boot:
- _ Spring Boot Starter:Là các phụ thuộc đã được câu hình sẵn dé giúp bạn đễ dàng thêm các tính năng vào ứng dụng
Vi du: spring-boot-starter-web cho ing dung web, spring-boot-starter-data-jpa
cho truy cập cơ sở đữ liệu
- _ Auto Confipuration: Tự động cầu hình ứng dụng dựa trên các thư viện có sẵn
trong classpath Điều này giúp giảm thiểu mã cấu hình mà bạn cần viết
- Spring Boot CLI (Command Line Interface):Cung cap mét cach nhanh chong
dé chay va phat trién ung dung Spring Boot bang cach str dung dong lệnh
- Spring Boot Actuator:Cung cap cac endpoint dé theo déi va quan lý ứng dụng,
giup ban kiém tra tinh trạng, hiệu suất, và các thông tin khác
3.1.2 Quarkus
Quarkus là một ffamework Java hiện đại được thiết kế đề tối ưu hóa cho môi
trường cloud-native, đặc biệt là cho các ứng dụng microservices Một số thành
phần chính của Quarkus:
- _ Quarkus Extensions:Quarkus cung cấp nhiều tiện ích mở rộng (extensions) để
tích hợp với các công nghệ khác nhau như Hibernate, RESTEasy, Kafka, và
nhiều hơn nữa Mỗi extension giúp tối ưu hóa hiệu suất và giảm kích thước ứng dụng
- GraalVM Integration:Quarkus hé tro biên dịch thành ma may (native image)
với GraalVM, giúp giảm thời gian khởi động và tiêu thụ bộ nhớ, rất phù hợp
cho các ứng dụng microservices
- Live Reload:Tinh nang live reload cho phép lập trình viên thấy ngay những
thay đổi trong mã nguồn mà không cần phải khởi động lại ứng dụng, giúp tăng
tốc độ phát triển
- _ Confipuration Management:Quarkus cung cấp một cách đễ dàng để quản lý cấu hình ứng dụng thông qua cac file application.properties hoặc application.yml
Trang 123.2 Co ché hoat dong cua Spring boot va Quarkus
3.2.1 Spring boot
e Spring Boot Starter (Cau hinh cac Starter)
Cơ chế: Spring Boot sir dung cac Starter (vi dụ: spring-boot-starter-web,
spring-boot-starter-data-jpa) để tự động thêm các phụ thuộc (dependencies) cần
thiết cho dy an Cac Starter nay chứa các thư viện phô biến, giúp lập trình viên
không cần phải tự tìm và thêm từng thư viện riêng lẻ
Hoạt động: Khi bạn thêm một Starter vào dự án, Spring Boot sẽ kiểm tra các
thư viện cần thiết và cấu hình cho chúng hoạt động đồng bộ với nhau
e Auto-Configuration (Cau hinh ty déng)
Cơ chế: Spring Boot cung cap tinh năng cấu hình tự động thông qua annotation (@EnableAutoConfguration, cho phép framework tự động cấu hình các thành
phần dựa trên các phụ thuộc hiện có trong classpath của dự án
Hoạt động: Spring Boot kiêm tra các bean có sẵn và tự động đăng ký các cầu
hình mặc định cho từng thành phan Vi du, néu phát hiện thư viện spring-boot-
starter-data-Jpa, nó sẽ tự động, cầu hình datasource và JPA mà không cần bạn
viết mã cầu hình thủ công
e Embedded Server (Máy chủ nhúng)
Cơ chế: Spring Boot tích hợp các máy chủ nhúng như Tomeat, Jetty, và
Undertow
Hoạt động: Khi chạy ing dung, Spring Boot sẽ tự động khởi tạo may chu
nhúng và ứng dụng sẽ được triển khai trên đó Điều nảy giúp ứng dụng chạy
độc lập, giống như một ứng dụng Java bình thường, mà không cần triển khai
trên một máy chủ bên ngoài
e Exteralized Configuration (Cau hinh ngoai)
Cơ chế: Spring Boot hé tro doc cau hình từ nhiều nguén, bao gém file
application.properties hoặc application.yml, biến môi trường, và dòng lệnh
Hoạt động: Khi ứng dụng khởi động, Spring Boot sẽ đọc và tải các cầu hình
này, sau đó áp dụng cho các thành phần tương ứng trong ứng dụng Điều này
cho phép thay đối cầu hình mà không cần thay đổi mã nguồn
Trang 13e@ Spring Boot Actuator (Theo déi va Quan lý)
Co ché: Spring Boot Actuator cung cap cac endpoint dé kiém tra và giám sát
ứng dụng
Hoạt động: Actuator mo cac endpoint nhu /actuator/health, /actuator/info dé
theo dõi trạng thái của ứng dụng trong thời p1an thực Các endpoint này cung
cấp các thông tin về sức khỏe hệ thống, các bean đã được cấu hình, thông tin về
bộ nhớ, và các thông số khác
Annotation va Dependency Injection
Cơ chế: Spring Boot dya trén Dependency Injection cua Spring Framework,
giúp tự động quản lý các thành phần (bean) trong ứng dụng
Hoạt động: Các annotation nhu @Component, @Service, @Repository, va
@Controller giúp Spring Boot tự động phát hiện và đăng ký các thành phần
trong context Dependency Injection cho phép Spring Boot quản lý vòng đời
của các bean va tự động tiêm các phụ thuộc cho các đối tượng cần thiết
Tương tác với các hệ sinh thái khác của Spring
Spring Boot dễ dàng tích hợp với các hệ sinh thái khác như Spring Security,
Spring Data, Spring Batch, v.v
3.2.2 Quarkus
Ahead-of-Time Compilation (AOT): Quarkus tan dung GraalVM dé bién dich
mã nguồn Java thành mã máy trước khi chạy (native image) Điều này giúp ứng dụng có thê khới động nhanh hơn và sử dụng ít tài nguyên hơn so với mô hình JVM thông thường Native image giảm thiểu thời gian khởi động và lượng RAM tiêu thụ rất đáng kế, giúp cho các ứng dụng phù hợp với môi trường serverless
Extension Model: Quarkus cung cấp một hệ sinh thái các extension giúp tích hợp với các thư viện và công nghệ phô biến như Hibernate, Kafka, hoặc Vert.x Các extension này giúp tối ưu hiệu suất và cầu hình của các thư viện này trong môi trường cloud-native, cho phép các developer chỉ cần cầu hình tối thiêu ma vẫn đạt hiệu suất cao nhất