Trang 8 DANH MỤC HÌNH ẢNHHình 2.1: Mơ hình kiến trúc Docker...6Hình 2.2: Ưu và nhược điểm của Docker...8Hình 2.3: Firebase...13Hình 3.1: Biểu đồ phân rã chức năng...29Hình 3.2: Biểu đồ l
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VĂN HIẾN
KHOA KỸ THUẬT – CÔNG NGHỆ
-
-ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG WEBSITE ĐẶT VÉ XEM
PHIM ONLINE GVHD: ThS QUÁCH ANH DŨNG SVTH: LÊ THỊ KIM THIÊN – 181A010147
NGUYỄN ĐỔ HIỀN ANH – 181A010139 LỚP: 181A01032
TP HỒ CHÍ MINH - 2022
Trang 2MỤC LỤ
L I C M N Ờ Ả Ơ 1
DANH M C HÌNH NH Ụ Ả 3
KÍ HI U CÁC T VIẾẾT TẮẾT – THU T NG ANH – VI T Ệ Ừ Ậ Ữ Ệ 5
CH ƯƠ NG 1: T NG QUAN VẾỀ H THỐẾNG Ổ Ệ 2
1.1 M t sốố vấốn đềề đ t vé xem phim ộ ặ 2
1.2 M c đích và ý nghĩa c a đềề tài ụ ủ 2
1.2.1 M c đích ụ 2
1.2.2 Ý nghĩa 2
1.3 Gi i pháp ả 3
1.4 Mối tr ườ ng phát tri n ể 4
CH ƯƠ NG 2: CỐNG NGH S D NG Ệ Ử Ụ 5
2.1 T ng quan vềề Docker ổ 5
2.1.1 Khái ni m ệ 5
2.1.2 Kiềốn trúc c a Docker ủ 5
2.1.3 Các đ c tr ng c a Docker ặ ư ủ 7
2.1.4 Các u và nh ư ượ c đi m c a Docker ể ủ 8
2.1.5 Tri n khai PostgreSQL d ể ướ ạ i d ng Docker Container 11
2.2 Khái ni m vềề Firebase ệ 13
2.3 T ng quan vềề ReactJS ổ 15
CH ƯƠ NG 3: PHÂN TÍCH THIẾẾT KẾẾ H THỐẾNG Ệ 17
Trang 33.1 Ng ườ ử ụ i s d ng h thốống ệ 17
3.2 Yều cấều c a h thốống và giao di n c a web ủ ệ ệ ủ 17
3.2.1 Yều cấều c a h thốống ủ ệ 17
3.2.2 Yều cấều vềề giao di n web ệ 18
3.3 Đ c t yều cấều ng ặ ả ườ i dùng 18
3.3.1 Đốối v i khách xem ớ 18
3.3.2 Đốối v i khách hàng ớ 20
3.3.3 Đốối v i Admin ớ 22
3.4 Mố hình phấn rã ch c năng ứ 27
3.5 Bi u đốề luốềng d li u ể ữ ệ 29
3.5.1 Bi u đốề phấn m c ch c năng c a h thốống ể ứ ứ ủ ệ 31
3.6 Bi u đốề tuấền t bi u diềễn quá trình đ t vé ể ự ể ặ 35
3.7 Thiềốt kềố c s d li u ơ ở ữ ệ 36
3.7.1 Chi tềốt các b ng ả 36
3.7.2 Mố hình quan h c s d li u ệ ơ ở ữ ệ 40
CH ƯƠ NG 4: KẾẾT QU CÀI Đ T CH Ả Ặ ƯƠ NG TRÌNH 41
4.1 Ch c năng dành cho khách hàng ứ 41
4.2 Ch c năng dành cho qu tr viền ứ ả ị 46
4.3 Ki m th ể ử 50
4.3.1 Ki m th h p đen ể ử ộ 50
4.3.2 Ki m th t ể ử ươ ng thích 52
CH ƯƠ NG 5: CÁC GI I PHÁP VÀ ĐÓNG GÓP N I B T Ả Ổ Ậ 53
Trang 45.1 Đ t vấốn đềề ặ 53
5.2 Gi i pháp ả 53
CH ƯƠ NG 6: KẾẾT LU N VÀ H Ậ ƯỚ NG PHÁT TRI N Ể 54
6.1 Kềốt lu n ậ 54
6.2 H ướ ng phát tri n ể 54
TÀI LI U THAM KH O Ệ Ả 55
Trang 6LỜI CẢM ƠN
Để hoàn thành được đề tài đồ án tốt nghiệp này, trước hết em gửi lời cảm ơn chân thành nhất đến các thầy cô giáo trong trường Đại học Văn Hiến nói chung, các thầy cô trong Khoa Công Nghệ Thông Tin nói riêng đã dạy dỗ cho em kiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập để em có được ngày hôm nay
Đặc biệt, em xin gửi lời cảm ơn chân thành về sự chỉ dạy, hướng dẫn tận tình của thầy Quách Anh Dũng, Trưởng bộ môn khoa Công Nghệ Thông Tin trong suốt thời gian thực hiện đồ án
Mặc dù trong quá trình làm đồ án em đã rất cố gắng tuy nhiên cũng không tránh khỏi những thiếu sót Em hy vọng rằng là sẽ nhận được những ý kiến nhận xét, góp ý của các thầy cô giáo về những vấn đề được triển khai trong bài báo cáo đồ án tốt nghiệp của
em được hoàn thiện và giúp em có thêm những kinh nghiệm quý báu
Cuối cùng, em xin kính chúc các thầy cô giảng viên trường Đại học Văn Hiến nói chung, các thầy cô Khoa Công nghệ thông tin nói riêng luôn luôn dồi dào sức khỏe và thành công trong sự nghiệp giảng dạy cao quý
Em xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày tháng năm
Sinh viên thực hiệnLỜI CAM ĐOAN
Trang 7Tôi cam đoan đây là công trình nghiên cứu của riêng tôi, do tôi tự thực hiê ̣n, khôngsao chép, vay mượn từ các công trình nghiên cứu khoa học khác Đảm bảo mọi tài liệutham khảo đều được trích dẫn, ghi chú đầy đủ
Tp Hồ Chí Minh, ngày tháng năm
Sinh viên thực hiện
Trang 8DANH MỤC HÌNH ẢNH
Hình 2.1: Mô hình kiến trúc Docker 6
Hình 2.2: Ưu và nhược điểm của Docker 8
Hình 2.3: Firebase 13
Hình 3.1: Biểu đồ phân rã chức năng 29
Hình 3.2: Biểu đồ luồng dữ liệu mức ngữ cảnh 31
Hình 3.3: Biểu đồ luồng dữ liệu mức ngữ đỉnh 32
Hình 3.4: Biểu đồ luồng dữ liệu mức 2 (chức năng xem thông tin) 32
Hình 3.5: Biểu đồ luồng dữ liệu mức 2 (chức năng xem đặt vé) 33
Hình 3.6: Biểu đồ luồng dữ liệu mức 2 (chức năng quản lý hệ thống) 33
Hình 3.7: Biểu đồ luồng dữ liệu mức 2 (chức năng tìm kiếm) 33
Hình 3.8: Biểu đồ luồng dữ liệu mức 3 (chức năng kiểm tra người dùng) 34
Hình 3.9: Biểu đồ luồng dữ liệu mức 3 (chức năng quản lý thành viên) 34
Hình 3.10: Biểu đồ luồng dữ liệu mức 3 (chức năng quản lý thông tin) 35
Hình 3.11: Biểu đồ tuần tự biểu diễn quá trình đặt vé 36
Hình 3.12-3.13: Mô hình quan hệ cơ sở dữ liệu 40
Hình 4.1: Giao diện trang chủ 41
Hình 4.2: Giao diện đăng ký tài khoản 41
Hình 4.3: Giao diện đăng nhập tài khoản 42
Hình 4.4: Giao diện xem nội dung phim 42
Hình 4.5: Giao diện xem demo phim 43
Hình 4.6: Giao diện lịch chiếu phim 43
Hình 4.7: Giao diện xem chỗ xem phim 44
Hình 4.8: Giao diện thanh toán 44
Hình 4.9: Giao diện đặt vé xem phim thành công 45
Hình 4.10: Giao diện phim đang chiếu 45
Hình 4.11: Giao diện phim sắp chiếu 46
Hình 4.12: Giao diện đăng nhập admin 46
Hình 4.13: Giao diện quản lý các phim đang chiếu 46
Trang 9Hình 4.14: Giao diện quản lý khách hàng 47
Hình 4.15: Giao diện quản lý các rạp chiếu phim 47
Hình 4.16: Giao diện thêm phim chiếu rạp 47
Hình 4.17: Giao diện quản lý vé đã đặt 48
Hình 4.18: Giao diện lịch chiếu tại rạp phim 48
Hình 4.19: Giao diện doanh thu lợi nhuận 49
Trang 10KÍ HIỆU CÁC TỪ VIẾT TẮT – THUẬT NGỮ ANH – VIỆT
Thuật ngữ/ Từ viết tắt Cụm từ đầy đủ Ý nghĩa
API Application Programming
Interface
Giao diện lập trình ứng dụng
APK Android Package Kit Gói ứng dụng Android
DOM Document Object Model Giao diện lập trình ứng dụng
CPU Central Processing Unit Bộ xử lý trung tâm
CI Continuous Integration Tích hợp liên tục
DOM Document Object Model Mô hình các đối tượng trong tài
liệu HTML
phát triển và sử dụng bởi các nhà phát triển để xây dựng các ứng dụng
GUI Graphical User Interface Giao diện đồ họa người dùng
Language
Ngôn ngữ đánh dấu siêu văn bản
IDE Integrated Development
Environment
Môi trường phát triển tích hợp
IE Internet Explorer Một trình duyệt web
một phần của chương trình
Trang 11QA Quality Assurance Những công việc nhằm đảm bảo
chất lượng của quy trình phát triển một hệ thống phần mềm
SMS Short Message Services Giao thức truyền thông cho
SOC Endpoint Detection and
Response
Phát hiện và phản hồi điểm cuối
Test Script Test Script Kịch bản kiểm thử
Trang 12LỜI NÓI ĐẦU
Trong thời đại ngày nay, cuộc cách mạng công nghiệp 4.0 đang phát triển mạnh
mẽ, công nghệ thông tin đang dần phục vụ nhu cầu của con người trong mọi lĩnh vực củađời sống và xã hội Hiện nay mọi công việc trước đây được làm trên giấy tờ thì nó dầndần được thay thế bởi các phần mềm hay các website nhằm mục đích dễ dàng cho người
sử dụng và thuận tiện hơn cho người quản lý, với sự phát triển của Internet như bây giờ,thì người dùng có thể dễ dàng truy cập vào website để thực hiện các công việc khác nhau
ở mọi lúc, mọi nơi Mà không cần trực tiếp đến tận nơi để đăng ký, giao dịch, muahàng…vì vậy việc tạo ra một website để phục vụ và đáp ứng nhu cầu của con người làmột việc rất cần thiết, giúp nhanh chóng, thuận tiện và dễ dàng hơn nữa còn tiết kiệmđược thời gian cũng như công sức trong thời đại công nghệ số này
Hiện nay, mọi nhu cầu về dịch vụ, thương mại mà trước đây chỉ giao dịch bằng tay,người dùng phải đến tận nơi để giao dịch hay đơn giản như việc mua vé xem phim, ngườidùng phải đến tận nơi để có thể mua vé, phải xếp hàng chờ đợi đến lượt để được mua vé,khách hàng còn phải mất thời gian để đứng ở bảng tin để chọn phim, với nhu cầu đó thìngày nay tất cả đã được đơn giản hóa bằng vài thao tác kích chuột
Vì những lý do trên, nên em đã chọn đề tài: “XÂY DỰNG WEBSITE XEM PHIM
HỖ TRỢ ĐẶT VÉ” nhằm đáp ứng nhu cầu và đem lại sự thuận tiện cho mọi người
Trang 13CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG1.1 Một số vấn đề đặt vé xem phim
Giả sử bạn muốn đi xem một bộ phim nhưng việc chờ đợi mua vé tại rạp lại khiếnbạn mất nhiều thời gian và đôi khi lại không như mong muốn vì có thể không chọn đượcxuất chiếu như ý Việc này khiến bạn chán nản và gây lười biếng khi nghĩ đến việc đi xemphim tại rạp Để khắc phục tình trạng này, em mang đến cho bạn giải pháp nhanh chóng
và tiện lợi, ngay từ bây giờ, bạn có thể ngồi ngay tại nhà, tại công ty, hay tại một nơi nào
đó và chỉ với 1 cú click chuột, bạn hoàn toàn có thể an tâm vì bạn đã có chỗ ngồi tại rạpchiếu phim và được xem bộ phim theo ngày và giờ chiếu bạn mong muốn
Ở Việt Nam, bây giờ có rất nhiều rạp chiếu phim như rạp chiếu phim quốc gia, rạpmegatar và có rấy nhiều chuỗi siêu thị có các rạp chiếu phim nhỏ Hình thức đặt vé onlinecòn khá mới mẻ chính vì vậy đây là thị trường đầy tiềm năng Hơn nữa, ngày nay ở ViệtNam, công nghệ thông tin được áp dụng rộng rãi và hiệu quả tới nhiều lĩnh vực hoạt độngcủa xã hội Với thực tế về phát triển công nghệ và thực tiễn ứng dụng ở Việt Nam, cùngvới sự quyết tâm của Đảng và Chính phủ trong định hướng thúc đẩy phát triển ứng dụngCông nghệ thông tin (CNTT) vào đời sống và nền kinh tế đã làm tăng cao tốc độ ứngdụng và số lượng người làm việc trực tiếp trên Internet Cùng với hạ tầng CNTT đã đượcđầu tư rất nhiều để sẵn sàng cho các ứng dụng tin học hóa Số lượng người thường xuyêntruy cập Internet để làm việc cập nhật và tìm kiếm thông tin ngày càng nhiều với tốc độtăng trưởng 48%/năm
1.2 Mục đích và ý nghĩa của đề tài
1.2.1 Mục đích
Xây dựng được website giúp các rạp phim có thể bán vé cũng như quản lý rạpmột cách tốt, thuận tiện và nhanh chóng hơn Ngoài ra, hệ thống cũng có thể giúp các bạnmuốn xem phim có thể ở nhà an tâm đặt vé, lựa chọn những bộ phim yêu thích với xuấtchiếu thích hợp
1.2.2 Ý nghĩa
Trang 14Qua việc xây dựng website này, em có thể áp dụng những kiến thức được bồidưỡng trong quá trình học tập tại trường vào công việc thực tế Từ đó, em đã tích lũy chobản thân những kinh nghiệm quý báu mà sau này sẽ là nền tảng giúp cho việc lập nghiệpcủa bản thân.
Ngoài ra nếu website được tiếp tục hoàn thiện, mang vào áp dụng thực tế, em tin rằng sảnphẩm tạo thành sẽ giúp ích rất lớn cho các nhà quản lý rạp phim lẫn người đi xem
1.3 Giải pháp
Từ những thuận lợi trên, Website bán vé xem phim có hỗ trợ đặt vé online của em
ra đời với phương châm mang đến sự tiện lợi và hiện đại cho người tiêu dùng Việt Nam.Khi quyết định kinh doanh trên lĩnh vực này, em xác định việc cạnh tranh với nhữngthương hiệu nổi tiếng, đã tạo dựng được thương hiệu như Megastar, Rapphimquocgia… làrất khó
Để khắc phục được điều này và biến nó thành lợi thế cạnh tranh, Website em tạo ra
sự khác biệt: hướng tới một phân khúc thị trường nhỏ với đối tượng khách hàng là giớitrẻ, những bộ phim bom tấn cũng như các phim yêu thích sẽ được cập nhật thường xuyên,đón đầu xu hướng giới trẻ Đặc biệt em còn đưa ra những chiêu Marketing độc đáo,đường truyền nhanh và ổn định
Hệ thống website bao gồm những hoạt động chính sau:
Đối với khách hàng:
Xem và tìm kiếm danh sách các phim và các thông tin liên quan đếnphim
Xem thông tin lịch chiếu phim
Xem và tìm kiếm danh sách các sự kiện khuyến mãi đang và sắp cótại rạp phim
Xem các câu hỏi thường gặp và câu trả lời
Đăng ký thành viên
Trang 15 Đặt vé, xem thông tin vé đã đặt
Đối với người quản trị
Cập nhập các thông tin cần thiết phim, nội dung phim, tin tức, sựkiện khuyến mãi
Xuất vé
Cập nhập thông tin khách hàng để có dịch vụ chăm sóc khách hàngtốt hơn
1.4 Môi trường phát triển
Môi trường phát triển
CPU: Intel Core I3 hoặc cao hơn
RAM: Tối thiểu 1GB
HDD: Dung lượng trống tối thiếu 20GB
Môi trường phần mềm
Hệ điều hành: Windows XP hoặc cao hơn
Net Framework: Máy phải cài Net Framework 2.0 trở lên
Công cụ phát triển: Visual Studio Code
Trang 16CHƯƠNG 2: CÔNG NGHỆ SỬ DỤNG2.1 Tổng quan về Docker
2.1.1 Khái niệm
Docker là một nền tảng nguồn mở cung cấp cho người sử dụng những công cụ để
có thể đóng gói, vận chuyển và chạy container một cách đơn giản và dễ dàng trên các nềntảng khác nhau một cách nhanh nhất với tiêu chí - “Build once, run anywhere” Dockerthực hiện ảo hóa ở mức hệ điều hành Mỗi container là cô lập (isolated) với nhau nhưngđều dùng chung một số bin/lib và kernel của Host OS Docker có thể làm việc trên nhiềunền tảng khác nhau như Linux, Microsoft Windows và Apple OS X Ngoài ra, Docker còn
hỗ trợ nhiều dịch vụ điện toán đám mây nổi tiếng như Microsoft Azure hay Amazon WebServices
Docker hoạt động bằng cách chạy mã bằng cung cấp phương thức tiêu chuẩn Nógiống như cách máy ảo – ảo hóa phần cứng của máy chủ nhằm loại bỏ nhu cầu trực tiếpquản lý, lúc này các container sẽ ảo hóa hệ điều hành của máy chủ Khi được cài đặt trêntừng máy chủ, docker cung cấp các lệnh cơ bản để bạn có thể build, khởi tạo hay dừngcontainer
2.1.2 Kiến trúc của Docker
Docker là một ứng dụng client-server, có 2 phiên bản phổ biến:
Docker Community Edition (CE): là phiên bản miễn phí và chủ yếu dựa vào các
sản phẩm nguồn mở khác
Docker Enterprise (EE): phiên bản dành cho các doanh nghiệp, khi sử dụng
phiên bản này sẽ nhận được sự support của nhà phát hành, ngoài ra còn có thêm các tínhnăng quản lý và bảo mật
Trang 17Hình 2.1: Mô hình kiến trúc Docker
Các thành phần của Docker Engine gồm có:
Docker Deamon: chạy trên host, đóng vai trò là server, nhận các RESTful request
từ Docker Client và thực thi nó Là một lightweight runtime giúp build, run và quản lý cáccontainers và các thành phần liên quan khác Docker Deamon quản lý 4 đối tượng chính:image, container, network, volume
Docker Client (CLI): cung cấp giao diện dòng lệnh (command line) cho người sử
dụng, đồng thời cũng gửi request đến Docker deamon
Sơ đồ minh họa các lệnh phổ biến của Docker client và mối quan hệ của Image,
Container, Network, Volume
Docker Registry: nơi lưu trữ Docker image Docker Hub là một registry công khai
mà bất cứ ai cũng có thể sử dụng và Docker được cấu hình để tìm kiếm image trên
Trang 18Docker Hub theo mặc định Bạn thậm chí có thể chạy registry riêng Có hai loại registry
là public hoặc private registry
2.1.3 Các đặc trưng của Docker
Tiện lợi: Khi bạn được phân bổ vào dự án mới, bạn đọc file README, thấy dự
án hiện tại cần cài rất nhiều thứ, nào là ruby, rồi rails, redis, mysql, nginx, mỗi thứ lạiphải kèm theo version bao nhiêu, Bạn lên google search cách cài đặt, config những thứnày sẽ mất một khoảng thời gian khá lâu Chưa hết, có thể chưa cài xong đã conflic tùmlum, cái nọ xung đột cái kia chẳng hạn, lại còn ảnh hưởng tới những chương trình cũ đãcài đặt trong máy nữa chứ, thôi cài lại luôn cả hệ điều hành cho máy Thế là mất thời gian,mệt mỏi với nhưng thao tác phụ mà chưa tập trung được vào việc chính Nhưng vớidocker mọi thứ đơn gian hơn nhiều, chỉ vài dòng lệnh thôi, bạn sẽ có thể nhanh chóng tạođược môi trường ảo hóa chứa đầy đủ những cài đặt cần thiết cho project rồi
Dễ dàng sử dụng: Docker rất dễ cho mọi người sử dụng từ developers, systems
admins, architects…v…v nó tận dụng lợi thế của container để build, test nhanh chóng
Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, privatecloud v.v… “Build once, run anywhere”
Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker
container trong vài giây so sánh với VMs thì mỗi lần chạy VMs cần rất nhiều thời giankhởi động
Khả năng di động: môi trường develop được dựng lên bằng docker có thể chuyển
từ người này sang người khác mà không làm thay đổi cấu hình ở trong
Chia sẻ: DockerHub là một “app store for docker images” Trên DockerHub có
hàng ngàn public images được tạo bởi cộng đồng Dễ dàng tìm thấy những image mà bạncần và chỉ cần pull về và sử dụng với một số sửa đổi nhỏ
Môi trường chạy và khả năng mở rộng: Bạn có thể chia nhỏ những chức năng
của ứng dụng thành các container riêng lẻ Ví dụng Database chạy trên một container và
Trang 19Redis cache có thể chạy trên một container khác trong khi ứng dụng Node.js lại chạy trênmột cái khác nữa Với Docker, rất dễ để liên kết các container với nhau để tạo thành mộtứng dụng, làm cho nó dễ dàng scale,
2.1.4 Các ưu và nhược điểm của Docker
Hình 2.2: Ưu và nhược điểm của Docker
Những service bên cạnh tạo nên ưu điểm cho Docker
Service chia sẻ image
Khi phát triển trên nhiều môi trường, bạn cần một service có thể chia sẻ image giúp bảo đảm tính đồng nhất
Docker Hub: Service host và build image
o Pricing | Docker
Google Container Registry: Service host image
o Giúp lưu image và tag vào Google Cloud Storage
o Chi phí sẽ bao gồm phí sử dụng Google Cloud Storage và lượng data truyền tải
o Do image sẽ được build bởi CI cho nên nếu các bạn chỉ muốn host mà thôi sẽ rất rẻ
Ngoài ra còn rất nhiều thứ khác nữa: Chọn Docker Register dựa trên việc nhìn thấu quá trình vận hành Production - Qiita
CI service
Trang 20Vận dụng tính linh động, đây là những service test môi trường giống với môi trường của container được sử dụng khi phát triển.
CircleCI : Docker support
oDo có hệ thống cache cho nên có thể cache image đã build và chỉ build khi có sự thay đổi
oFollow up version mới nhất
Service vận hành server của nhiều container
Service phát huy tính linh động để deploy image lên server và khởi động giúp ta
Tutum : Service liên kết với các loại IaaS (Infra as a service), có thể build – deploy quản lý nhiều container
o Kể cả với các Iaas không liên kết đi chăng nữa, nó vẫn setup được cho ta bằng việc cài đặt thông tin login qua SSH
o Về chi phí sẽ phụ thuộc vào các IaaS Dịch vụ này cho tới ngày 14 tháng 1 năm
2016 vẫn đang miễn phí với bản β
o Việc setup rất đơn giản và công học cũng không nhiều
Google Container Engine : Service setup Kubernetes tại Google Compute Engine
o Clustering (kỹ thuật tổng hợp nhiều server để nâng cao năng lực xử lý như một
hệ thống thống nhất, phòng tránh việc service bị ngừng) nhiều node thành 1 platform
o App tương tác với nhiều container dưới đơn vị pod, thực hiện replication , quản
lý xử lý chết, auto scaling, rolling update
o Do có thể deploy nhiều service trong cluster đã được cấu trúc, trong các trường hợp dựng nhiều service thì tuỳ lúc có thể giảm thiểu được chi phí
o Các thứ khác có lợi từ Google Cloud Platform
o Chi phí phụ thuộc vào giá của Google Compute Engine Nếu clustering quá 6 node sẽ phát sinh giá riêng
o Mất rất nhiều công để học nếu muốn vận hành thực tiễn
Những hạn chế bởi nhược điẻm
Trang 21Hiện tại, theo như em thấy nhược điểm duy nhất của docker là không thể chạy trựctiếp trên Windows và MAC OS Chính vì thế, khi các bạn sử dụng Docker trên Windowshay MAC OS thì Docker sẽ phải run một máy ảo linux rồi mới có thể thực thi được.
Bảng 2-1: Ưu và nhược điểm của Docker
– Gi l p môi trả ậ ường trên server dở ưới
máy local
– V i dockerớ ta có th gi l p hoàn toànể ả ậ
môi trường server dưới local m t cáchộ
hoàn h o mà không lo vi c lúc ch y demoả ệ ạ
thì được nh ng lúc xuấất lên server l i báoư ạ
– Docker thu n t n và đ n gi n cho cácậ ệ ơ ả
thành viên trong team trong vi c tm hi uệ ể
vêề môi trường h thôấng khi join vào dệ ự
án và nó giúp gi m đả ược quá n aử
document setup môi trường
– Test song song
– Bằềng cách t o ra nhiêều Container giôấngạ
nhau, ta có thể chia task ra cho chúng
th c hi n cùng 1 lúc seỗự ệ têất ki m đệ ược
th i gian và t n d ng đờ ậ ụ ược tài nguyên
– Nó không cung cấấp m t tùy ch n l uộ ọ ư
tr ữ– Theo dõi tôềi t ệ– Không có l p trình l i t đ ng các nútậ ạ ự ộkhông ho t đ ng.ạ ộ
– Các hành đ ng ph i độ ả ược th c hi nự ệtrong CLI
– Qu n lý th công nhiêều trả ủ ường h p.ợ– B n cấền hôỗ tr các công c khác.ạ ợ ụ– Tri n khai c m th công ph c t p.ể ụ ủ ứ ạ– Không hôỗ tr ki m tra s c kh e.ợ ể ứ ỏ– Docker là m t công ty ho t đ ng vì l iộ ạ ộ ợnhu n và m t sôấ thành phấền quan tr ngậ ộ ọ
c a nó, ch ng h n nh Docker Engine vàủ ẳ ạ ưDocker Desktop, không ph i là mã nguôềnả
m ở– Tôấn th i gian h c t p : ờ ọ ậ+ Đo n đấều (ch y 1 container) seỗ kháạ ạtho i mái và c m thấấy nh làm ch c thêấả ả ư ủ ả
gi i, tuy nhiên các b n seỗ nhanh chóngớ ạ
g p khá nhiêều vấấn đêề khi th c têấ áp d ngặ ự ụ
nó vào môi trường phát tri n, nh ng cấuể ữ
Trang 22c a server.ủ
– Test app trên m t h điêều hành khácộ ệ
– Khi app c a b n đã ch y đủ ạ ạ ượ trênc
Ubuntu và b n muôấn xem th tnh tr ngạ ử ạ
c a nó trên CentOS hãy th dùngủ ử Docker
– Tính đôềng nhấất : Khi nhiêều người cùng
phát tri n trong cùng m t d án seỗ khôngể ộ ự
b s sai khác vêề m t môi trị ự ặ ường
– Đóng gói : Có th n môi trể ẩ ường bao
gôềm c app vào trong m t gói đả ộ ược g i làọ
container Có th test để ược các container
Vi c b hay t o l i container rấất dêỗ dàng.ệ ỏ ạ ạ
– Linh đ ng (tnh nhấất quán) : Có th testộ ể
container được dùng đ phát tri n bằềngể ể
CI Có th deploy container đã để ược test
bằềng CI lên server Có th scale containerể
đã được deploy
h i nh "đo n này làm thêấ nào nh ?", hayỏ ư ạ ỉ
"không biêất cài đ t bằềng cách nào thì tôấtặ
h n nh ?" seỗ xuấất hi n và đòi h i kiêấnơ ỉ ệ ỏ
th c chuyên sấu.ứ+ Trong m t đ i phát tri n không cấền tấấtộ ộ ể
c ph i có kiêấn th c chuyên sấu vêềả ả ứDocker, tuy nhiên ít nhấất cũng cấền m tộ
người nằấm v ng nh ng kiêấn th c đ cóữ ữ ứ ể
th gi i quyêất để ả ược vấấn đêề nêấu g p ph i.ặ ả– Công cấền thiêất đ biêất viêất code t i m tể ạ ộmôi trường gấền nh không kém h n soư ơ
v i phát tri n trên local.ớ ể
2.1.5 Triển khai PostgreSQL dưới dạng Docker Container
PostgreSQL, còn được gọi là Postgres, là hệ thống cơ sở dữ liệu quan hệ đối tượngchính Nó phổ biến do mức độ tuân thủ cao với tiêu chuẩn SQL và bao gồm các tính năng
bổ sung giúp làm việc dễ dàng hơn với các bộ dữ liệu quy mô lớn phức tạp
PostgreSQL sử dụng kiến trúc máy khách-máy chủ truyền thống, vì vậy bạn nênchạy nó độc lập với mã ứng dụng của bạn Trong hướng dẫn này, bạn sẽ triển khai mộtphiên bản máy chủ PostgreSQL làm vùng chứa Docker Điều này tránh thêm các gói vàomáy chủ của bạn và giúp cô lập cơ sở dữ liệu của bạn với các phần khác trong ngăn xếpcủa bạn Đảm bảo rằng Docker đã được cài đặt trước khi tiếp tục
Việc quyết định xem có chạy cơ sở dữ liệu trong Docker hay không có thể rất khókhăn Bộ chứa của PostgreSQL giúp thiết lập dễ dàng hơn, nhưng đôi khi khó bảo trì hơn
Trang 23Bạn cần phải cẩn thận khi quản lý vùng chứa để tránh mất dữ liệu trong tương lai Dockercũng bổ sung chi phí hiệu suất khiêm tốn đáng xem xét khi bạn mong đợi cơ sở dữ liệulưu diễn hoạt động với khối lượng dữ liệu rất lớn.
Ưu điểm của Docker là tăng tính di động, dễ mở rộng và hiệu quả của nhà phát triển.Việc chứa cơ sở dữ liệu của bạn cho phép bất kỳ ai khởi chạy phiên bản mới bằng Docker
mà không cần cài đặt và định cấu hình PostgreSQL theo cách thủ công trước Do đó, viếtDockerfile cho cơ sở dữ liệu PostgreSQL của bạn để thêm tệp cấu hình của bạn và các tậplệnh khởi động SQL là một cách tốt để giúp các nhà phát triển bắt đầu môi trường mớimột cách nhanh chóng
PostgreSQL là một công cụ cơ sở dữ liệu dựa trên SQL nâng cao bổ sung các khảnăng quan hệ đối tượng Mặc dù bạn có thể chọn chạy triển khai truyền thống trong sảnxuất, nhưng việc sử dụng phiên bản được chứa trong vùng chứa sẽ đơn giản hóa việc thiếtlập và giúp các nhà phát triển nhanh chóng xây dựng cơ sở hạ tầng của riêng họ
Khía cạnh quan trọng nhất của triển khai Tài liệu hóa là đảm bảo rằng bạn sử dụng mộtlượng lớn để lưu trữ dữ liệu Điều này sẽ cho phép bạn dừng, thay thế và cập nhật vùngchứa lên phiên bản hình ảnh mới hơn mà không làm mất cơ sở dữ liệu của bạn Ngoàidung lượng lưu trữ, bạn nên xem xét cách bạn sẽ kết nối với Postgres và tránh ràng buộccác cổng với máy chủ của bạn trừ khi cần thiết Khi kết nối từ một vùng chứa khác, tốtnhất là sử dụng mạng Docker được chia sẻ để dễ truy cập
– Do không thu c quyêền qu n lý c a bấấtộ ả ủ
kỳ t ch c nào nên gấy khó khằn choổ ứ
người dùng khi muôấn têấp c n v i đấềy đậ ớ ủtnh nằng
– T p trung vào kh nằng tậ ả ương thích nênkhi th c hi n thay đ i đ c i thi n tôấc đự ệ ổ ể ả ệ ộnên seỗ yêu cấều nhiêều công vi c h n so v iệ ơ ớMySQL
Trang 24tri n khai tùy theo nhu cấềuể
– Có kh nằng đôấi tả ượng hóa d li uữ ệ
Được hôỗ tr b i m t c ng đôềng đông đ oợ ở ộ ộ ả
và nhiêều kinh nghi mệ
– Gi m thi u vi c b o trì h thôấngả ể ệ ả ệ
– M t sôấ ng d ng nguôền m không hôỗộ ứ ụ ở
tr PostgreSQL dù có hôỗ tr MySQLợ ợ
Trang 25Đồng bộ hóa trong thời gian thực giúp người dùng dễ dàng truy cập dữ liệu của họ
từ bất kỳ thiết bị nào, có thể là web hoặc thiết bị di động Cơ sở dữ liệu thời gian thựccũng giúp người dùng có khả năng cộng tác với nhau
Một lợi ích tuyệt vời khác của Cơ sở dữ liệu thời gian thực là nó chứa mobile vàweb SDKs, cho phép bạn tạo ứng dụng mà không cần máy chủ
Khi người dùng của bạn ngoại tuyến, Realtime Database SDKs sử dụng bộ nhớcache cục bộ trên thiết bị để phân phát và lưu trữ thay đổi Khi thiết bị trực tuyến, dữ liệucục bộ sẽ tự động được đồng bộ hóa
Realtime Database cũng có thể tích hợp với Firebase Authentication để cung cấpquy trình xác thực đơn giản và trực quan
mã, bao gồm cả các hoạt động phức tạp như hợp nhất tài khoản
Bạn có thể xác thực người dùng ứng dụng của bạn thông qua các phương pháp sau:
Trang 26ReactJS là thư viện JavaScript được sử dụng để xây dựng các thành phần UI có thểtái sử dụng Theo tài liệu chính thức của React, sau đây là định nghĩa:
React là một thư viện để xây dựng giao diện người dùng có thể kết hợp Nó khuyếnkhích việc tạo ra các thành phần giao diện người dùng có thể tái sử dụng, hiển thị dữ liệuthay đổi theo thời gian Rất nhiều người sử dụng React làm V trong MVC React trừutượng hóa DOM khỏi bạn, cung cấp mô hình lập trình đơn giản hơn và hiệu suất tốthơn React cũng có thể hiển thị trên máy chủ bằng Node và nó có thể cung cấp nănglượng cho các ứng dụng gốc bằng React Native React triển khai luồng dữ liệu phản ứngmột chiều, điều này giúp giảm bớt phần soạn sẵn và dễ lý luận hơn so với ràng buộc dữliệu truyền thống
Tính năng React
JSX – JSX là phần mở rộng cú pháp JavaScript Không nhất thiết
phải sử dụng JSX trong phát triển React, nhưng nó được khuyến khích
Các thành phần – React là tất cả về các thành phần Bạn cần nghĩ
mọi thứ như một thành phần Điều này sẽ giúp bạn duy trì mã khi làm việc trêncác dự án quy mô lớn hơn
Luồng dữ liệu một chiều và Flux – React triển khai luồng dữ liệu
một chiều giúp bạn dễ dàng suy luận về ứng dụng của bạn Flux là một mẫugiúp giữ dữ liệu của bạn không theo hướng
Giấy phép – React được cấp phép theo Facebook Inc Tài liệu được
cấp phép theo CC BY 4.0
Ưu điểm của React
Sử dụng DOM ảo là một đối tượng JavaScript Điều này sẽ cải thiệnhiệu suất ứng dụng, vì DOM ảo JavaScript nhanh hơn DOM thông thường
Có thể được sử dụng trên máy khách và máy chủ cũng như với cáckhuôn khổ khác
Các mẫu thành phần và dữ liệu cải thiện khả năng đọc, giúp duy trìcác ứng dụng lớn hơn
Trang 27 Thiết lập môi trường
Trong chương này, em sẽ hướng dẫn bạn cách thiết lập một môi trường để pháttriển React thành công Lưu ý rằng có nhiều bước liên quan nhưng điều này sẽ giúp đẩy
nhanh quá trình phát triển sau này Em sẽ cần NodeJS, vì vậy nếu bạn chưa cài đặt nó,
hãy kiểm tra liên kết từ bảng sau
Sr.No Phần mềm & Mô tả
1 NodeJS và NPMNodeJS là nền tảng cần thiết để phát triển
ReactJS Kiểm tra Thiết lập Môi trường NodeJS
Sau khi cài đặt thành công NodeJS, ta có thể bắt đầu cài đặt React trên đó bằngnpm Bạn có thể cài đặt ReactJS theo hai cách
Sử dụng webpack và babel.
Sử dụng lệnh create-react-app.
Trang 28CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG3.1 Người sử dụng hệ thống
Có 3 đối tượng sử dụng hệ thống là: nhà quản trị (Admin), thành viên và kháchxem
Admin: là thành viên quản trị của hệ thống, có các quyền và chức năng như:quản lý tài khoản, quản lý phim, xử lý đặt vé, quản lý tin tức, quản lý sựkiện khuyến mãi
Khách xem: là thành viên chưa có tài khoản, có chức năng như: đăng ký tàikhoản, xem và tìm kiếm thông tin phim, không có chức đặt vé, nếu kháchxem muốn đặt vé thì phải đăng nhập vào hệ thống
Thành viên: là khách xem đã có tài khoản, có tất cả các chức năng củakhách xem và có thêm các chức năng khác như: đặt vé
3.2 Yêu cầu của hệ thống và giao diện của web
3.2.1 Yêu cầu của hệ thống
Hệ thống bán vé xem phim xây dựng trên cơ sở thõa mãn các yêu cầu sau:
Hệ thống hướng tới nhiều đối tượng nên phải thiết kế đơn giãn, đẹp mắt và dễhiểu thuận tiện cho người mua để giảm bớt cảm giác phức tạp rắc rối cho họ.Tuy nhiên Thiết kế giao diện người sử dụng (HCI) vẫn phải đảm bảo các quytắc và tiêu chuẩn thiết kế, tạo sự thuận tiện và dễ dàng nhất cho người sử dụng
Các chức năng phải được thực hiện một cách dễ dàng, nhanh chóng và chínhxác Đảm bảo các chức năng quan trọng nhất: đặt vé cho đối tượng muốn muavé
Việc tìm kiếm, tra cứu thông tin về phim, lịch chiếu, thông tin giảm giá theomột đặc điểm nào đó phải được thực hiện một cách nhanh chóng và chính xác Sau khi tìm hiểu và khảo sát thực tế tại các rạp chiếu phim, em đã xác định các tácnhân sử dụng website như sau:
Admin: Người quản lý hệ thống
Khách xem: Khách chỉ xem website mà không đăng ký thành viên tại website
Trang 29 Thành viên: Khách xem online và thực hiện đăng ký thành viên tại website thìtrở thành thành viên.
3.2.2 Yêu cầu về giao diện web
Giao diện người dùng
Website có giao diện ưa nhìn, có sự bố trí và phối hợp hài hòa giữa các màusắc và các thành phần trên website (Layout tốt)
Các chức năng dễ sử dụng, tiện dụng
Có sử dụng các thư viện JQuery để tạo hiệu ứng làm đẹp cho website
Giao diện nhà quản lý
Giao diện đơn giản, dễ quản lý
Hiển thị được tất cả các danh mục quản lý
Phải được bảo vệ bằng tài khoản và mật khẩu riêng của nhà quản trị
3.3 Đặc tả yêu cầu người dùng
3.3.1 Đối với khách xem
3.3.1.1 Chức năng đăng ký thành viên
Mô tả Để thực hiện chức năng mua hàng thì khách hàng cần phải đăng
nhập vào hệ thống Nếu chưa có tài khoản thì khách hàng cần phảiđăng ký thành viên
Đầu vào Nhập các thông tin đăng đăng ký với (*) là phần thông tin bắt
buộc
Xử lý Kiểm tra thông tin nhập, nếu thông tin chính xác sẽ lưu thông tin
vào CSDL và thêm thông tin của thành viên đó vào CDSL
Đầu ra Đưa ra thông báo thành công hoặc yêu cầu nhập lại nếu thông tin
không hợp lệ
3.3.1.2 Chức năng tìm kiếm thông tin phim
Mô tả Có 2 cách tìm kiếm thông tin sản phẩm:
Trang 30-Tìm kiếm theo tên phim: khách hàng chọn phim cần tìm kếm-Tìm kiếm theo ngày chiếu:khách hàng chọn ngày chiếu để xem cácphim chiếu trong ngày đó
Đầu vào Thông tin tìm kiếm của phim
Xử lý Lấy thông tin sản phẩm từ CSDL theo các trường tìm kiếm
Đầu ra Liệt kê tất các phim phù hợp với yêu cầu tìm kiếm
3.3.1.3 Xem danh sách phim theo danh mục
Mô tả Danh mục là tên gọi nhằm phân loại ở mức cao nhất của phim
Đầu vào Click vào vào danh mục
Xử lý Lấy thông tin phim từ cơ sở dữ liệu
Đầu ra Liệt kê tất các phim của chuyên mục
3.3.1.4 Chức năng xem thông tin chi tiết phim
Mô tả phim là tên gọi nhằm phân loại ở mức thấp nhất
Đầu vào Clik vào ảnh phim, tên phim hoặc click vào xem chi tiết
Xử lý Lấy thông tin phim từ CSDL theo đúng ID (phim)
Đầu ra Hiển thị thông tin chi tiết của phim như hình ảnh, tên phim, bai
viết,trailer
3.3.1.5 Chức năng xem tin tức
Mô tả Là thông tin mới nhất về bộ phim sắp và sữ đưa vào khởi chiếu trong
tương lai nhưng chưa có trailerĐầu vào Clik vào tin tức muốn xem
Xử lý Lấy thông tin từ CSDL theo đúng ID (tin tức)
Đầu ra Hiển thị thông tin chi tiết của tin như hình ảnh, tiêu đề, bai viết……
3.3.1.6 Chức năng xem sự kiện
Mô tả Là thông tin khuyến mãi trong thời gian đó
Đầu vào Clik vào sự kiện muốn xem
Xử lý Lấy thông tin sự kiện từ CSDL
Trang 31Đầu ra Hiển thị thông tin chi tiết của các sự kiện như hình ảnh, tiêu đề,
bai viết……
3.3.1.7 Chức năng xem FAQ (câu hỏi và câu trả lời thường gặp)
Mô tả Là những câu hỏi và câu trả lời thường gặp có liên quan tới rạp
chiếu phim
Đầu ra Trả về các câu hỏi và câu trả lời thường gặp cho khách xem
3.3.2 Đối với khách hàng
* Đối tượng khách hàng có tất cả các chức năng của đối tượng khách xem và còn có một
số chức năng khác như sau:
3.3.2.1 Chức năng đăng nhập thành viên
Mô tả Đăng nhập vào hệ thống để thực hiện chức năng đặt vé
Đầu vào Thành viên nhập tên đăng nhập và mật khẩu để đăng nhập hệ
thống
Xử lý : Kiểm tra tên đăng nhập và mật khẩu của người dùng nhập
vào và so sánh với tên đăng nhập và mật khẩu trong CSDL
Đầu ra Nếu thông tin đăng nhập đúng thì sẽ hiện lời chào tên đăng
nhập trên hệ thống, nếu sai sẽ hiện ra thông báo thông tinđăng nhập không chính xác
3.3.2.2 Chức năng đăng xuất
Mô tả Cho phép người dùng đăng xuất khỏi hệ thống khi không còn
nhu cầu sử dụng hệ thống
Đầu vào Người dùng click vào nút thoát trên hệ thống
Xử lý Tiến hành xóa session lưu thông tin đăng nhập để dừng phiên
làm việc của tài khoản thành viên trong hệ thống
Đầu ra Quay trở lại trang hiện hành, ẩn hết các chức năng của thành
Trang 32viên
3.3.2.3 Chức năng đặt vé
Mô tả Cho phép người dùng được thực hiện giao dịch đặt vé
Đầu vào Người dùng click vào giờ chiếu để thực hiện đặt vé
Xử lý Hệ thống truy nhập CSDL với id tương ứng của xuất chiếu
đó
Đầu ra Chuyển sang trang đặt vé với tên phim, ngày chiếu va giờ
chiếu tương ứng để khách hàng chọn số vé,
3.3.2.4 Chức năng xem sơ đồ ghế
Mô tả Cho phép người dùng có thể xem sơ đồ ghế và chọn
Đầu vào Người dùng click vào số ghế chưa bán
Xử lý Hệ thống sẽ ghi nhận lại vị trí của số ghế đó vào cơ sở dữ
liệuĐầu ra Trả về thông tin vé cho khách hàng
3.3.3 Đối với Admin
-Admin là người quản lý và vận hành Website.
-Admin có tất cả các chức năng của khách vãng lai và khách hàng và có thêm cácchức năng sau:
3.3.3.1 Chức năng đăng nhập Admin
Mô tả Để sử dụng chức năng của 1 người quản trị (Admin) thì người
dùng phải đăng nhập thành công vào hệ thống website với tàikhoản là Admin
Đầu vào Người dùng nhập tên đăng nhập và mật khẩu theo tài khoản admin
để đăng nhập hệ thống
Xử lý Kiểm tra tên đăng nhập và mật khẩu của người dùng nhập vào và