GIỚI THIỆU ĐỀ TÀI
Tổng quan
Hiện nay, với sự phát triển của công nghệ, thương mại điện tử đang ngày càng trở nên phổ biến Không chỉ có mua bán các sản phẩm tiêu dùng bình thường mà hiện nay nhu cầu mua bán, giao dịch bất động sản cũng trở nên rất sôi nổi trên mạng Internet Chính vì thế mà ngày càng có nhiều người môi giới hoặc ngay cả chủ sở hữu cũng đang tìm cách rao bán bất động sản thông qua các trang mạng
PRP được phát triển với mong muốn là tạo ra một môi trường mở, mà người dùng (môi giới, chủ sở hữu) có thể rao bán, quảng cáo bất động sản của mình đến những người quan tâm Hệ thống PRP vừa cung cấp các dịch vụ đăng tin, theo dõi bài đăng bất động sản, vừa có dịch vụ quản lý, kiểm soát dữ liệu từ khách hàng
Đối với người môi giới, sở hữu bất động sản:
Quản lý bài đăng của mình
Thanh toán khi đăng ký đăng tin
Nhận email thông báo về yêu cầu liên hệ, nhắc gia hạn tin
Đối với người tìm kiếm bất động sản:
Xem thông tin từng bài đăng bất động sản
Tìm kiếm bài đăng phù hợp
Gửi yêu cầu liên hệ đến chủ bài đăng
Theo dõi bài viết yêu thích
Theo dõi, cập nhật thông tin cá nhân
Tìm kiếm tin tức về bất động sản
Đối với quản trị viên của hệ thống:
Quản trị nội dung của hệ thống như tin tức, bất động sản, bài đăng
Xem thống kê của hệ thống, xem lịch sử thanh toán trên hệ thống
Nội dung thực hiện
Một số nội dung đã thực hiện trong quá trình hoàn thành hệ thống:
Nghiên cứu các hệ thống về đăng tin bất động sản
Nghiên cứu công nghệ và các nền tảng cần có để hiện thực hệ thống
Xây dựng giao diện trang đăng tin và trang quản trị
Hiện thực và kiểm thử hệ thống
Triển khai và đánh giá hệ thống đã hiện thực
Viết báo cáo về đề tài đã thực hiện
KIẾN THỨC NỀN TẢNG
Cơ sở lý thuyết
2.1.1 Mô hình Model – View – Controller (MVC)
Mô hình Model - View - Controller hay còn được gọi là mô hình MVC là mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính MVC chia thành ba bộ phận chính được kết nối với nhau Đó là Model(dữ liệu), View(Giao diện) và Controller(Bộ điều khiển) [1]
Model (M) là thành phần có chức năng lưu trữ dữ liệu được sử dụng bởi chương trình Đây là nơi chứa các nghiệp vụ tương tác với dữ liệu hay cơ sở dữ liệu; nó bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn, xử lý dữ liệu
View(V) là thành phần giao diện dành cho người dùng, nơi chứa những giao diện như nút bấm, khung nhập, menu, hình ảnh, Nó đảm nhận nhiệm vụ hiển thị thông tin, dữ liệu cho người dùng tương tác với hệ thống
Controller(C) là thành phần chịu trách nhiệm xử lý các yêu cầu của người dùng nhận từ lớp View(V) Nó sẽ gồm những class/function để xử lý nhiều nghiệp vụ logic, giúp lấy đúng dữ liệu nhờ những nghiệp vụ lớp Model(M) cung cấp và hiển thị thông tin đó ra cho người dùng thông qua View(V)
Luồng xử lý trong MVC:
Người dùng sử dụng một trình duyệt web bất kỳ (Firefox,Chrome, ) để truy cập vào Website của chúng ta Sau đó gửi yêu cầu kèm theo dữ liệu để
4 dữ liệu từ Model hay không Nếu có, nó sẽ điều hướng đến các thao tác xử lý tại Model, sau đó nhận lại dữ liệu từ Model trả về
Khi đã nắm được dữ liệu trả về từ Model thì Controller sẽ xử lý tập dữ liệu đó và trả ra View để hiển thị
Khi nhận được dữ liệu trả ra từ Controller, View sẽ xây dựng lại các thành phần hiển thị và trả về nội dung giao diện Controller sẽ đưa kết quả này lên trình duyệt web của người dùng
Trình duyệt web nhận giá trị trả về và hiển thị lên cho người dùng Đây cũng là bước kết thúc cho luồng xử lý trong mô hình MVC Ưu nhược điểm của MVC
Tiết kiệm băng thông vì không sử dụng kỹ thuật ViewState
Giúp phát triển ứng dụng nhanh hơn, có bố cục rõ ràng và riêng biệt cũng giúp cho việc kiểm tra lỗi phần mềm đơn giản
Phiên bản mới nhất của MVC hỗ trợ responsive website mặc định và các mẫu cho mobile Chúng ta có thể tạo công cụ View của riêng mình một cách đơn giản và nhanh chóng hơn
Không phù hợp cho các dự án nhỏ
REST (Representational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiến trúc để viết API và sử dụng phương thức HTTP đơn giản để tạo ra giao tiếp giữa các thiết bị Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, PUT đến một URL để xử lý dữ liệu
API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML
RESTful API là một tiêu chuẩn dùng cho việc thiết kế API cho các ứng dụng Web để quản lý các nguồn tài nguyên trên server RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để giao tiếp giữa ứng dụng trên các các nền tảng(web, mobile, ) [2]
REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc,
GET: Trả về một resource hoặc một danh sách resource
PUT: Cập nhật thông tin cho resource
RESTful API không sử dụng session và cookie, nó sử dụng một access_token với mỗi request Dữ liệu trả về thường có cấu trúc như sau:
200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE
201 Created – Trả về khi một resource vừa được tạo thành công
204 No Content – Trả về khi resource xoá thành công
304 Not Modified – Client có thể sử dụng dữ liệu cache
400 Bad Request – Request không hợp lệ
401 Unauthorized – Request cần có auth
403 Forbidden – Bị từ chối, không cho phép
404 Not Found – Không tìm thấy resource từ URI
405 Method Not Allowed – Phương thức không cho phép
410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ
415 Unsupported Media Type – Không hỗ trợ kiểu resource này
422 Unprocessable Entity – Dữ liệu không được xác thực
429 Too Many Requests – Request bị từ chối do bị giới hạn
Việc sử dụng RESTful API cần có một tài liệu ghi lại cấu trúc API Mỗi một API cần được miêu tả đầy đủ về biến được gửi, kiểu dữ liệu, bắt buộc gửi giá trị nào đó hay không, đưa ra một cấu trúc dữ liệu ban đầu Luôn sử dụng version để khi bạn cần nâng cấp API mà vẫn hỗ trợ các API cũ.
PHÂN TÍCH HỆ THỐNG
Khảo sát các hệ thống liên quan
Để hiểu rõ hơn mục đích tại sao cần xây dựng hệ thống PRP, nhóm đã tiến hành khảo sát một số hệ thống chuyên cung cấp các dịch vụ đăng tin bất động sản Nhóm đã khảo sát 2 hệ thống sau: https://batdongsan.com.vn và https://rever.vn
3.1.1 Hệ thống batdongsan.com.vn
Hệ thống batdongsan.com.vn cung cấp một website đăng tin bất động sản với nhiều tính năng hỗ trợ người dùng
Có giao diện bắt mắt, thân thiện với với người dùng
Có tính năng cho phép người dùng gửi bài đăng (có phí)
Giao diện được thiết kế có tính responsive cao, hiển thị tốt trên nhiều loại màn hình – Hỗ trợ SEO tốt
Hiển thị đầy đủ thông tin người dùng yêu cầu
Tích hợp tính năng chia sẻ qua mạng xã hội
Không cho đăng tin miễn phí
Hệ thống rever.vn là một website đăng tin bất động sản lớn, với nhiều dự án khủng, còn cung cấp nhiều dịch vụ khác hỗ trợ cho việc môi giới bất động sản tốt hơn
Có nhiều thông tin dự án lớn
Giao diện được thiết kế có tính responsive cao, hiển thị tốt trên nhiều loại màn hình – Hỗ trợ SEO tốt
Giao diện và tính năng dễ hiểu, dễ dùng
Tích hợp tính năng chia sẻ qua mạng xã hội
Chủ yếu vẫn là cho các dự án lớn, nhà phố
Đặc tả hệ thống PRP
Sau khi khảo sát các hệ thống liên quan, chúng tôi đi đến xây dựng hệ thống xoay quanh vấn đề đăng tin và quản lí tin gồm các phần:
Trang dành cho người dùng: là trang dành cho người dùng của hệ thống PRP tìm kiếm bất động sản, đọc tin tức về bất động sản Ngoài ra, người dùng còn có thể tạo tài khoản để đăng tin và quản lí tin đăng bất động sản của họ
11 người dùng, tin đăng của hệ thống PRP
THIẾT KẾ HỆ THỐNG
HIỆN THỰC HỆ THỐNG
Quản lí mã nguồn
5.1.1 Lưu trữ và quản lí mã nguồn bằng Git
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System) Giống với các ứng dụng quản lý phiên bản khác, Git giúp lưu trữ, quản lý code và các lịch sử thay đổi của nó Vì quản lý phân tán do đó mã nguồn có thể lưu trữ trên máy tính còn có ở các máy khách đã truy cập vào kho lưu trữ Tuy nhiên điểm khác biệt của Git so với các ứng dụng khác đó là cách thức mà Git lưu trữ thông tin Git sẽ lưu lại tất cả snapshot chứa các thông tin thay đổi trong các file Mỗi một snapshot sẽ là một tập hợp các dữ liệu cũ và dữ liệu các file thay đổi so với phiên bản của snapshot trước, trừ lúc khởi tạo dự án ban đầu Do đó Git có khả năng khôi phục lại phiên bản cũ khi không thể chỉnh sửa trên phiên bản hiện tại
Các lợi ích khiến Git trở nên là công cụ bắt buộc cần có trong quá trình hiện thực hệ thống:
Dễ sử dụng, thao tác nhanh và rất an toàn
Dễ dàng kết hợp các phân nhánh (branch), có thể giúp quy trình làm việc code theo nhóm đơn giản hơn rất nhiều
Chỉ cần clone mã nguồn từ kho chứa hoặc clone một phiên bản thay đổi nào đó từ kho
chứa, hoặc một nhánh nào đó từ kho chứa là bạn có thể làm việc ở mọi lúc mọi nơi
Lưu các phiên bản mã nguồn (hay snapshot) của hệ thống do đó có thể truy xuất được các phiên bản đã được lưu
Về kho lưu trữ mã nguồn, hiện nay các phát triển ứng dụng có thể sử dụng trang web GitLab hoặc GitHub để quản lý mã nguồn của mình Mỗi cá nhân có thể đăng ký tài khoản miễn phí và sử dụng các chức năng cơ bản nhưng đủ hiệu quả để quản lý dự án của mình
Cấu trúc mã nguồn của hệ thống gồm 2 phần chính Front-end và Back-end
Mã nguồn Front-end chia làm 2 phần: cms và client tương ứng là source code cho trang quản trị và website
Hình 5.1 Cấu trúc source code cms
Source code cms gồm các thành phần sau:
Folder src/assets: chứa các dữ liệu tĩnh như hình ảnh, logo
Folder src/components: chứa các React component có thể tái sử dụng trong nhiều UI
Folder src/hooks: chứa các custom hook tương tự như React hook do nhóm hiện thực
Folder src/repositories: chứa các hàm để gọi API tới backend
Folder src/routes: chứa định nghĩa routing, url của trang web
Folder src/views: chứa code hiện thực UI cho các màn hình
Hình 5.2 Cấu trúc source code client
Source code client gồm các thành phần sau:
Folder src/assets: chứa các dữ liệu tĩnh như hình ảnh, logo
Folder src/components: chứa các React component có thể tái sử dụng trong nhiều UI
Folder src/hooks: chứa các custom hook tương tự như React hook do nhóm hiện thực
Folder src/repositories: chứa các hàm để gọi API tới backend
Folder src/routes: chứa định nghĩa routing, url của trang web
Folder src/views: chứa code hiện thực UI cho các màn hình
Hình 5.3 Cấu trúc source code backend
Source code backend gồm các thành phần sau:
Folder authentication: code hiện thực các api liên quan đến xác thực, phân quyền user
Folder news: code hiện thực các api liên quan đến tin tức
Folder payment: code hiện thực các api liên quan đến thanh toán
Folder prp: core app của hệ thống
Folder realestates: code hiện thực các api liên quan đến bài đăng bất động sản
Folder ebextensions: chưa cấu hình dành cho deploy Django app lên AWS Elastic Beanstalk
Folder elasticbeanstalk: chứa cấu hình của ứng dụng Elastic Beanstalk
Tích hợp phương thức thanh toán MoMo
Quá trình tích hợp cổng thanh toán Momo vào hệ thống
Thực hiện đăng ký tài khoản doanh nghiệp tại website https://business.momo.vn của dịch vụ thanh toán ví điện tử MoMo
51 quan trọng để MoMo API nhận biết đang thực hiện giao dịch cho doanh nghiệp nào, đó là: PARTNER CODE, ACCESS KEY, SECRET KEY [7]
Hình 5.4 Thông tin để gọi MoMo API
Quá trình hiện thực một thanh toán diễn ra như Hình 5.5:
Hình 5.5 Quá trình thực hiện thanh toán trên website
KIỂM THỬ, TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG
Kiểm thử hệ thống
Sau khi hiện thực hệ thống, để đảm bảo tính sẵn sàng và ổn định của hệ thống web, nhóm đã tìm hiểu và sử dụng công cụ kiểm thử tự động đang được ứng dụng trong lĩnh vực kiểm thử phần mềm hiện nay
Bởi vì chỉ là tập sự trong lĩnh vực kiểm thử phần mềm nên nhóm sẽ chỉ chú trọng vào kiểm thử các chức năng chủ yêu, thực hiện tác vụ kiểm thử tự động Nên sẽ không tập trung trong việc hiện thực quá nhiều trường hợp cho từng tính năng
Phần mềm kiểm thử tự động nhóm sử dụng sẽ là Katalon, một phần mềm khá phổ biến trong lĩnh vực này
Công nghệ kiểm thử tự động – Katalon
Katalon Studio là công cụ kiểm thử tự động, được xây dựng dựa trên các khung tự động mã nguồn mở selenium, Appium với giao diện IDE chuyên dùng để test các api, web, mobile, PC Nó là một automation tool được sử dụng rộng rãi giúp dễ dàng tạo ra các plugin hỗ trợ các nhu cầu khách hàng khi test automation trong dự án
Katalon Studio cung cấp cho người sử dụng có một giao diện có thể hoán đổi để giúp tạo nên các trường hợp kiểm thử khác nhau, với các chế độ xem thủ công dành cho các đối tượng không chuyên và chế độ xem các tập lệnh hướng đến kiểm thử có kinh nghiệm, giúp tạo ra các kiểm thử tự động để đánh dấu các cú pháp và hoàn thành các mã thông minh
Katalon Studio theo mô hình đối tượng trang với các thành phần GUI trên các ứng dụng mobile, web, PC để ghi lại các tiện ích và lưu trữ trong kho đối tượng bạn có thể truy cập vào và sử dụng lại các trường hợp kiểm thử phần mềm khác nhau
Nó có thể thực thi từ xa và được kích hoạt bởi một hệ thống CI qua giao diện dòng lệnh và Container Docker
Lý do chọn sử dụng Katalon
Hỗ trợ viết test case nhanh, dễ thao tác
Hỗ trợ trên nhiều nền tảng khác nhau
Giao diện cực kì dễ dùng và dễ hiểu
Có hỗ trợ sử dụng các dạng external file : CSV, Excel,… Thuận tiện cho việc viết data source cho kiểm thử tự động
Một số thành phần cơ bản của Katalon:
Test case là đặc điểm đầu vào điều kiện thực thi, quy trình thử nghiệm và kết quả mong đợi xác định để đạt được mục tiêu thử nghiệm cụ thể Katalon hỗ trợ thư mục “Test cases”, đây sẽ là nơi lưu trữ toàn bộ test case dùng để kiểm thử
Test suite là một tập các test case sẽ được thực hiện để kiểm thử một chương trình phần mềm/ tính năng cụ thể nào đó Nhóm sẽ sử dụng từng Test suite để kiểm tra các test case cùng chung một mục tiêu Katalon hỗ trợ thư mục “Test Suites” để lưu trữ toàn bộ test suite
Object Repository là thư mục mà Katalon cung cấp để lưu trữ các đối tượng trang
Data Files là nơi import các external files để hỗ trợ các test case chạy nhiều trường hợp ( Login/ Register)
Reports là thư mục lưu trữ toàn bộ các reports trong quá trình thực hiện Các đối tượng trên sẽ được tổ chức tương tự như hình bên dưới:
Hình 6.1 Cấu trúc các thành phần cơ bản của Katalon
Kế hoạch và mục tiêu của quá trình kiểm thử
Kiểm tra các tính năng cơ bản trên website sau khi được triển khai có hoạt động đúng mong đợi hay không, từ đó để phát hiện ra các lỗi mà lúc hiện thực không phát hiện ra
Phạm vi Để dễ dàng theo dõi, nhóm đã định dạng các test case theo từng phần tính năng và cho 2 website ( client, admin) riêng biệt Kế hoạch kiểm thử này hiện tại chỉ đang áp dụng cho các tính năng cơ bản được hiện thực bao gồm:
Đăng nhập và đăng xuất tài khoản
Tin đăng (Yêu cầu đăng tin, xem chi tiết, xem danh sách, quản lý và chỉnh sửa)
Tin tức (Xem, tìm kiếm)
Thông tin cá nhân (Xem, chỉnh sửa)
Liên hệ lại (Gửi yêu cầu liên hệ lại)
Thanh toán (Gửi yêu cầu thanh toán khi đăng tin có phí)
Tin yêu thích (Thêm tin, xem danh sách tin, xóa tin)
Tin tức (Xem danh sách, thêm/ sửa/xóa tin , thêm/ sửa/ xóa danh mục)
Thanh toán (Xem lịch sử, tìm kiếm)
Tin đăng (Đổi trạng thái tin đăng, thêm/sửa/xóa danh mục tin)
Những yêu cầu về tài nguyên
Hệ điều hành Phiên bản Katalon Trình duyệt
Bảng 6.1 Thông tin môi trường kiểm thử trên Katalon
Võ Quốc Bảo Lập kế hoạch
Bảng 6.2 Nhân sự kiểm thử hệ thống
Tiến hành kiểm thử tự động một số tin năng quan trọng của hệ thống Mỗi thực thể sẽ được thực hiện bằng một Test Suite với những Test Case tương ứng Điều kiện chấp nhận vượt qua kiểm thử: Vượt qua tất cả các test case được định nghĩa cho từng thực thể
Danh sách các Test Suite và kết quả đạt được
Test Suite: Đăng nhập (Client)
Test case Dữ liệu kiểm thử Kết quả mong đợi Đánh giá kết quả đạt được Đăng nhập thành công với username
Thành công Đạt Đăng nhập thành công với email
Email: admin@email.com Password: secret
Thành công Đạt Đăng nhập thất bại với sai thông tin
Thông báo lỗi Đạt Đăng nhập thất bại do không điền username
Thông báo lỗi Đạt Đăng nhập thất bại do không điền pass
Bảng 6.3 Test suite Đăng nhập (client)
Hình 6.2 Kết quả kiểm thử đăng nhập (client)
Test Suite: Đăng ký (Client)
Test case Dữ liệu kiểm thử Kết quả mong đợi Đánh giá kết quả đạt được Đăng ký thất bại với trùng username
Thông báo lỗi Đạt Đăng ký thất bại với Password và confirm password không trùng
Thông báo lỗi Đạt Đăng ký thất bại với trùng email Username: admin1
Password: 123456 Email: admin@email.com
Thông báo lỗi Đạt Đăng ký thất bại do không điền thông tin địa chỉ
Thông báo lỗi Đạt Đăng ký thành công khi điền đầy đủ thông tin
81 toàn bộ thông tin Password: lỗi
Bảng 6.4 Test suite đăng ký (client)
Hình 6.3 Kết quả kiểm thử đăng kí (client)
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Thanh toán khi yêu cầu đăng tin Thành công Đạt
Bảng 6.5 Test suite thanh toán
Hình 6.4 Kết quả kiểm thử thanh toán
Test Suite Lịch sử thanh toán
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Xem lịch sử thanh toán Thành công Đạt
Tìm kiếm lịch sử thanh toán Thành công Đạt
Bảng 6.6 Test Suite Lịch sử thanh toán
Hình 6.5 Kết quả kiểm thử xem lịch sử thanh toán
Test Suite: Thông tin cá nhân
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Xem thông tin cá nhân Thành công Đạt
Sửa đổi thông tin Thành công Đạt
Bảng 6.7 Test Suite Thông tin cá nhân
Hình 6.6 Kết quả kiểm thử xem, thay đổi thông tin cá nhân
Test case Yêu cầu Kết quả mong đợi Đánh giá kết quả đạt được
Yêu cầu đăng tin Đăng nhập
Sửa đổi tin đăng Đăng nhập
Xóa bài đăng Đăng nhập
Thành công Đạt Xem chi tiết bài đăng Không Thành công Đạt
Xem danh sách bài đăng
Bảng 6.8 Test Suite Tin đăng
Hình 6.7 Kết quả kiểm thử tạo, sửa, xóa, xem bài đăng
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Xem chi tiết tin tức Thành công Đạt
Xem danh sách tin tức Thành công Đạt
Bảng 6.9 Test Suite: Tin tức
Hình 6.8 Kết quả kiểm thử xem tin tức
Test Suite: Liên hệ lại
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Tạo yêu cầu liên hệ lại Thành công Đạt
Bảng 6.10 Test Suite Liên hệ lại
Hình 6.9 Kết quả kiểm thử tạo yêu cầu liên hệ lại
Test Suite: Tin yêu thích
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Thêm tin yêu thích Thành công Đạt
Xem danh sách tin yêu thích Thành công Đạt
Xóa tin yêu thích Thành công Đạt
Bảng 6.11 Test Suite Tin yêu thích
Hình 6.10 Kết quả kiểm thử lưu tin đăng, xem tin đăng đã lưu
Test Suite: Thống kê (Admin)
Test case Kết quả mong đợi Đánh giá kết quả đạt được
Xem thống kê Thành công Đạt
Bảng 6.12 Test Suite: Thống kê (Admin)
Hình 6.11 Kết quả kiểm thử xem thống kê
Triển khai hệ thống
6.2.1 Triển khai hệ thống trên nền tảng Cloud
Hệ thống của nhóm được triển khai trên nền tảng Amazon Web Service (AWS) Đây là một nền tảng điện toán đám mây được phát triển và phân phối bởi Amazon Trong đó, nhóm chọn ra các dịch vụ sau để triển khai hệ thống:
Elastic Beanstalk: một dịch vụ dễ sử dụng để triển khai và mở rộng các ứng dụng web và dịch vụ được phát triển bằng Java, NET, PHP, Node.js, Python, Ruby, Go và Docker trên những máy chủ quen thuộc như Apache, Nginx, Passenger và IIS [8]
Elastic Compute Cloud (EC2): một dịch cho phép các nhà phát triển xây dựng và triển khai một cloud server
Simple Storage Service (S3): một dịch vụ cho phép sao lưu dữ liệu trực tuyến
Relational Database Service (RDS): một dịch vụ cho phép triển khai và quản lí các hệ cơ sở dữ liệu quan hệ như PostgreSQL, MySQL,…
Route 53: một dịch vụ về DNS giúp nhà phát triển định tuyến người dùng đến các ứng dụng Internet
CloudFront: một dịch vụ mạng phân phối nội dung (CDN)
Ngoài ra, nhóm còn sử dụng Namecheap để hỗ trợ cho quá trình triển khai hệ thống, cụ thể là dùng để mua một tên miền cho hệ thống website Namecheap là một trong những nhà cung cấp tên miền lớn và uy tín, cung cấp các dịch vụ đăng ký và chuyển đổi tên miền, ẩn thông tin miền, chứng chỉ số (SSL Certificate),
Hình 6.12 Kiến trúc triển khai của hệ thống
Các bước triển khai cho Front-end
Bước 1 Chạy lệnh npm run build cho 2 folder source code client và cms của Front-end Bước 2 Tạo 2 bucket prp-admin và prp-client trên AWS S3
Bước 3 Upload toàn bộ folder build của client lên bucket prp-client và folder build của cms lên bucket prp-admin
Hình 6 15 Một phần cấu hình CloudFront distribution của bucket prp-client
Hình 6.16 Một phần cấu hình CloudFront distribution của bucket prp-client
Hình 6.17 Một phần cấu hình CloudFront distribution của bucket prp-admin
Hình 6.18 Một phần cấu hình CloudFront distribution của bucket prp-admin
Bước 5 Tạo một hosted zone trên Route 53 với domain name là topprp.com
Bước 6 Trong hosted zone topprp.com, tạo 2 record với 2 domain topprp.com và cms.topprp.com lần lượt trỏ tới 2 CloudFront distribution đã tạo ở bước 4
Hình 6.19 Cấu hình Route 53 record cho website Distribution của prp-admin
Hình 6.20 Cấu hình Route 53 record cho trang quản trị
Các bước triển khai cho Back-end
Bước 1 Dùng dịch vụ RDS để tạo một PostgreSQL database instance
Hình 6.21 Cấu hình AWS RDS cho hệ thống
Bước 2 Dùng CLI tool awsebcli để triển khải Django app lên Elastic Beanstalk
Sau khi triển khai thành công, ta sẽ được một ứng dụng trên Elastic Beanstalk được kết nối đến một EC2 instance
Hình 6.22 Cấu hình backend trên AWS Elastic Beanstalk
Hình 6.23 Cấu hình backend trên AWS EC2
92 Bước 3 Trong hosted zone topprp.com, tạo một record với domain api.prp.com trỏ tới ứng dụng vừa triển khai trên Elastic Beanstalk ở bước 2
Hình 6.24 Cấu hình Route 53 record cho backend
TỔNG KẾT, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Tổng kết kết quả đạt được
7.1.1 Đối với nhiệm vụ đề tài
Tìm hiểu các nghiệp vụ và tính năng cơ bản, hữu ích để xây dựng hệ thống
PRP phục vụ các tính năng và tiện ích cho một website đăng tin bất động sản, nơi mà bất kì ai cũng có thể chủ động giới thiệu bất động sản đến với khách hàng
Tìm hiểu và vận dụng các kỹ năng về lập trình front-end website để tạo ra những giao diện dễ nhìn, dễ hiểu ngay cả với những người không rành về công nghệ
Tìm hiểu và vận dụng các kỹ năng lập trình back-end để xây dựng server cho hệ thống
Sử dụng các API được cung cấp bởi bên thứ ba như email để gửi các thông báo, nhắc nhở đến người dùng API của MoMo để thực hiện thanh toán trực tuyến trong hệ thống
Tìm hiểu và triển khai hệ thống trên nên tảng Amazon Web Services, sử dụng Namecheap để đăng ký domain
Website đạt chuẩn yêu cầu Google PageSpeed Insights (Google Lighthouse) trên 50 điểm, thời gian phản hồi từ hệ thống đạt mức ổn định
7.1.2 Đối với lợi ích kinh tế
Để đáp ứng nhu cầu giới thiệu, quảng bá bất động sản của người môi giới/ chủ sở hữu đến khách hàng
Khách hàng có thể quản lý các thông bất động sản mà mình đã cung cấp
Phân quyền vai trò khác nhau giữa khách hàng và quản lý hệ thống để bảo mật các thông tin tốt hơn
Từ những tính năng đăng bài, yêu cầu liên hệ, gửi email sẽ giúp cho nhà môi giới có thể nhận biết được sự quan tâm về bất động sản của mình
Bên cạnh đó, người quản lý hệ thống có thể nắm được tất cả các sự tương tác trên hệ thống, qua đó có thể đánh giá hệ thống và tìm hướng phát triển tốt hơn
7.1.3 Đối với cơ sở lý thuyết và công nghệ Để hiện thực hệ thống, nhóm tìm hiểu các công nghệ phù hợp với những yêu cầu nghiệp vụ Thông qua quá trình đó, nhóm có thêm cơ hội để hiểu biết, học hỏi thêm những công nghệ phát triển web, công nghệ hiện thực máy chủ, quá trình deploy một sản phẩm thực tế, có thể kể đến như sau:
98 tiến hành tích hợp thêm các API bên thứ ba cho các dịch vụ như:
Dịch vụ thanh toán: Momo API
Nhóm đã triển khai hệ thống lên môi trường đám mây thông qua các dịch vụ của AWS như: EC2, RDS, S3, Route 53, Elastic Beanstalk, CloudFront
Về vấn đề cải thiện hiệu suất hệ thống, nhóm đã tìm hiểu và áp dụng kỹ thuật gzip để tăng hiệu năng ứng dụng
7.1.4 Đối với quy trình phát triển phần mềm
Từ những nền tảng công nghệ, nhóm đã tiến hành thực hiện những bước để phát triển hệ thống như sau:
Tìm hiểu nghiệp vụ các như batdongsan.vn, rever.vn, Qua đó so sánh với những đề xuất để phát triển hệ thống
Thiết kệ giao diện người dùng trên Figma
Thiết kế cơ sở dữ liệu
Hiện thực hệ thống thông qua các nền tảng:
React: hiện thực giao diện ứng dụng web
Django: được sử dụng để hiện thực máy chủ
Kiểm thử hệ thống thông qua cách kiểm thử thủ công như việc kiểm thử API backend qua Postman, kiểm thử tự động qua ứng dụng Katalon
Triển khai hệ thống lên Cloud
Sau khi triển khai thì để hoàn thiện hệ thống, nhóm đã thực hiện đánh giá hiệu suất thông qua Google PageSpeed Insights (Google Lighthouse) Sau đó, nhóm cũng đã có những giải pháp để cải thiện hiệu suất của hệ thống.
Đánh giá kết quả đạt được
Cung cấp một số tính năng cơ bản cho phép đăng tin bất động sản, quản lý hệ thống hay là khách hàng tự quản lý các thông tin của mình trên hệ thống
Thiết kế giao diện dễ nhìn, thuận tiện cho cả khách hàng và quản lý sử dụng
Tài khoản trong hệ thống được phân quyền để hỗ trợ quản lý bảo mật thông tin
Tính thực tiễn, website được triển khai trên nền tảng AWS nên bất kì ai cũng có thể sử dụng
Chưa hỗ trợ đa ngôn ngữ trên hệ thống
Giao diện chưa thực sự sinh động để thu hút người dùng
Chưa có hệ thống mobile để dễ dàng cho việc sử dụng và quản lý
Các tính năng nâng cao cần được bổ sung như SMS, …
Chưa có hệ thống nhắn tin trực tuyến
99 Qua việc hiện thực và triển khai hệ thống, nhóm đã rút ra nhiều kinh nghiệm trong chuyên môn mà nhóm cần cải thiện Trong tương lai thì nhóm muốn phát triển mở rộng hệ thống thêm như sau:
Tích hợp thêm nhiều API tiện ích bên thứ ba như nhắn tin, định vị vị trí,
Nâng cấp giao diện để thu hút người dùng hơn
Hỗ trợ thêm việc các tính năng cho nhân viên có thể quản lý những bất động sản được cung cấp vào hệ thống, quản lý KPIs, doanh số,
Xây dựng hệ thống mobile để tiện ích trong việc quản lý, sử dụng