hêlo xin chào các b đây là bài báo cáo môn kiến trúc và thiết kế phần mềm của mình trong thời gian học tại trường của mình. bài này mình đã báo cáo và đã đạt điểm cao trong lúc đấy này mình share lại cho các b b nào có mong muốn mua lại toàn bộ : code + word + pp thì liên hệ với mình qua zalo:0383817845 nhé facebook: fb.commink.logn.ad
Mục Lục MỞ ĐẦU Kiến trúc Microservice xu hướng kiến trúc phần mềm thảo luận nhiều thời điểm thay đổi mãi cách thức xây dựng ứng dụng doanh nghiệp Thay cách tiếp cận nguyên khối (monolithic) chậm chạp, phức tạp khứ, nhà phát triển công ty khắp nơi chuyển sang kiến trúc microservice để đơn giản hóa mở rộng cấu trúc họ Trên thực tế, công ty Amazon, Netflix, Spotify Uber thực trình chuyển đổi từ lâu Cho dù bạn muốn bắt đầu với microservice hay bạn tò mò tranh luận xung quanh nó, bạn nơi Hơm nay, hướng dẫn bạn thứ bạn cần biết microservice, từ ví dụ thực tế đến mẫu kiến trúc Bảng phân công công việc Họ tên Công việc Kết Trần Minh Long So sánh với kiến trúc Monolithic , khung nhìn usecase, khung nhìn quy trình, khung nhìn logic,khung nhìn thành phần Hồn thành Dương Văn Định ưu nhược điểm kiến trúc, khung nhìn triển khai, xây dụng demo Hoàn thành Nguyễn Văn Nghiệp đặc trưng đặc điểm kiến trúc microservice, xây dụng khung nhìn triển khai,khung nhìn logic Hồn thành Nguyễn Văn Hiếu thiết kế phần mềm theo kiến trúc Mcrosevice, xâu dụng khung nhìn quy trình Hồn thành Trần Đức Long Hồn thành Tổng quan kiến trúc Microservice, ứng dụng kiến trúc CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1.Tổng quan kiến trúc Microservice Cuối năm 2006, kiến trúc hướng dịch vụ (SOA) sốt Các công ty nhảy vào nắm lấy SOA trước hiểu hết ưu nhược điểm phong cách kiến trúc phức tạp Những công ty bắt tay vào dự án SOA thường gặp khó khăn liên tục với mức độ chi tiết dịch vụ, hiệu suất, di chuyển liệu đặc biệt thay đổi tổ chức xảy với SOA Do đó, nhiều công ty từ bỏ nỗ lực SOA họ xây dựng kiến trúc kết hợp không thực tất lời hứa SOA Mô hình kiến trúc microservices nhanh chóng chiếm vị ngành giải pháp thay khả thi cho ứng dụng nguyên khối kiến trúc hướng dịch vụ Bởi mơ hình kiến trúc phát triển, có nhiều nhầm lẫn ngành nội dung mơ hình cách triển khai Tài liệu cung cấp cho bạn khái niệm kiến thức tảng cần thiết để hiểu lợi ích (và đánh đổi) mẫu kiến trúc quan trọng liệu có phải mẫu phù hợp cho ứng dụng bạn hay không 1.2 Kiến trúc Mcoservice gì:? Khơng có định nghĩa phổ qt thuật ngữ microservice Định nghĩa đơn giản microservice, gọi kiến trúc microservice (microservice architecture), kiểu kiến trúc ứng dụng sử dụng dịch vụ liên kết lỏng lẻo Các dịch vụ phát triển, triển khai trì độc lập Chúng hoạt động với tốc độ nhanh đáng tin cậy nhiều so với ứng dụng nguyên khối, phức tạp truyền thống Sử dụng kiến trúc microservice, tổ chức có kích thước phát triển ngăn xếp cơng nghệ phù hợp với khả họ Có nhiều lợi ích hữu hình sử dụng microservice, thảo luận sau, số tranh cãi việc liệu cơng ty có nên chuyển từ kiến trúc nguyên khối sang kiến trúc microservice hay không Hãy xem xét khác biệt hai kiến trúc để hiểu tranh luận Các tính Microservices: • Tách biệt - Các dịch vụ hệ thống phần lớn tách biệt Vì vậy, tồn ứng dụng dễ dàng xây dựng, thay đổi mở rộng quy mơ • Thành phần hóa - Các dịch vụ vi mô coi thành phần độc lập dễ dàng thay nâng cấp • Khả kinh doanh - Dịch vụ vi mô đơn giản tập trung vào khả • Quyền tự chủ - Các nhà phát triển nhóm làm việc độc lập với nhau, tăng tốc độ • Phân phối liên tục - Cho phép phát hành phần mềm thường xun, thơng qua hệ thống tự động hóa việc tạo, kiểm tra phê duyệt phần mềm • Trách nhiệm - Microservices không tập trung vào ứng dụng dự án Thay vào đó, họ coi ứng dụng sản phẩm mà họ chịu trách nhiệm • Quản trị phi tập trung - Trọng tâm sử dụng công cụ cho công việc Điều có nghĩa khơng có khn mẫu tiêu chuẩn hóa khn mẫu cơng nghệ Các nhà phát triển có quyền tự lựa chọn cơng cụ hữu ích tốt để giải vấn đề họ • Nhanh nhẹn - Mọi tính phát triển nhanh chóng lại bị loại bỏ 1.3 Tại dùng kiến trúc Microservice Khi phát triển phiên ứng dụng, bạn thường không gặp phải vấn đề mà Microservices giải Hơn nữa, sử dụng kiến trúc phân tán, phức tạp làm chậm trình phát triển Đây vấn đề lớn start-up họ cần phát triển nhanh mơ hình kinh doanh ứng dụng kèm Vì vậy, theo tơi, trừ bạn có hệ thống q phức tạp để quản lý Monolithic Architecture, bạn xác định tương lai ứng dụng trở nên Thì kiến trúc Monolithic đủ tốt bạn 1.4 Cân nhắc lựa chọn Microservice Khi thực dự án microservice cần tính tốn thật kỹ kích thước microservice Về tính bảo mật: Khi người lập trình viên lựa chọn việc sử dụng mã nguồn mở hay sử dụng công cụ hỗ trợ khác Về hiệu năng: Các microservice thường (nên) triển khai bên docker container giao tiếp với qua REST API Việc làm hiệu toàn chương trình ứng dụng giảm xuống đáng kể giới hạn tốc độ truyền tải giao thức tốc độ mạng Hơn việc giao tiếp microservice bị lỗi kết nối bị lỗi Đây có phải sản phẩm phát triển lâu dài hay khơng ? Mức độ scale hệ thống có lớn không (scale lược người dùng liệu) ? Nhóm phát triển có sẵn sang đối đầu với khó khan chuyển sang mơ hình hay không ? Các đề phức tạp bao gồm bảo trì, bảo mật, tính khả dụng hệ thống từ xa, xác thực ủy quyền truy cập từ xa ? 1.5 Các đặc điểm mơ hình Microservice • Tập hợp nhóm nhỏ service: mức độ chi tiết service nhỏ service chịu trách nhiệm cụ thể (single responsiblity) tập trung vào nhiệm vụ Ví dụ: storage service chịu riêng trách nhiệm lưu trữ • Việc phát triển mở rộng service hồn tồn độc lập Điều mang lại tính linh hoạt cho hệ thống Quá trình deliver feature, release version dễ dàng nhanh chóng Hơn khơng cịn tình trạng bị block mơ hình monolithic • Giảm tải mối quan ngại công nghệ sử dụng Chọn công nghệ phù hợp với vấn đề doanh nghiệp giải dễ dàng Các service giáp tiếp với thông qua API, service dùng ngôn ngữ riêng biệt Service A dùng Java, Service B dùng Javascript • Đối với team, microservice đem lại tính độc lập tự quản lí cho team Một team có trách nhiệm tồn với life-cycle hay nhiều service Họ làm việc việc context biệt lập, tự quản lí định 1.6 Đặc Trưng Kiến trúc Microservice 1.6.1 Micro-service Đặc trưng thể từ tên kiến trúc Nó microservice khơng phải miniservice hay nanoservice Trên thực tế không tồn mơ hình kiến trúc cho miniservice hay nanoservice Từ microservice sử dụng để giúp người thiết kế có cách tiếp cận đắn Một ứng dụng lớn cần chia nhỏ thành nhiều thành phần, thành phần cần tách biệt mặt liệu (database) phải đủ nhỏ mặt kích cỡ độ ảnh hưởng hệ thống, thêm microservice vào hệ thống nên đảm bảo đủ nhỏ để dễ dàng tháo gỡ, xóa bỏ khỏi hệ thống mà không ảnh hưởng nhiều tới thành phần khác 1.6.2 Tính độc lập Các microservice hoạt động tách biệt hệ thống, việc build microservice độc lập với việc build microservice khác Thông thường, để tiện cho việc phát triển trì microservice, người phát triển nên viết built script khác cho microservice Do tính tách biệt mà microservice dễ dàng thay mở rộng Hơn nữa, cịn giúp việc phát triển microservice linh động hơn, microservice phát triển team khác nhau, dùng ngôn ngữ khác tiến độ phát triển dự án nhanh khơng có phụ thuộc team, team chủ động quản lý phần việc riêng 1.6.3 Tính chun biệt Mỗi microservice dịch vụ chuyên biệt, hoạt động độc lập, thông thường microservice đại diện cho tính mà cơng ty/ doanh nghiệp muốn cung cấp tới người dùng, người thiết kế hệ thống microservice cần hiểu rõ hoạt động kinh doanh công ty Các đầu vào đầu chức microservice cần định nghĩa rõ ràng 10 Service gửi thông tin đến database Lưu thông tin viết vào database Hiển thị tạo viết thành công Điều kiện sau - Tạo viết thành cơng, hiển thị viết Kịch cho chức sửa viết: Use case: Sửa viết Mục đích Lưu hiển thị viết sửa nội dung Mô tả Người dùng sửa lại nội dung viết, hệ thống lưu lại viết Tác nhân User Điều kiện trước Đăng nhập vào hệ thống Luồng kiện Điều kiện sau Chọn chức sửa viết Nhập nội dung cần sửa Chọn button xác nhận Hệ thống gửi thông tin đến API Gateway API Gateway gửi thông tin đến service Service gửi thông tin đến database Lưu thông tin viết vào database Hiển thị tạo viết thành công Sửa viết thành cơng, hiển thị viết 22 - Kịch cho chức xóa viết: Use case: Xóa viết Mục đích Xóa viết tạo Mơ tả Người dùng chọn xóa viết tạo trước Tác nhân User Điều kiện trước Bài viết tạo Luồng kiện Điều kiện sau Chọn chức xóa viết Chọn viết cần xóa Chọn button xóa Hệ thống gửi thơng tin đến API Gateway API Gateway gửi thông tin đến service Service gửi thơng tin đến database Xóa viết chọn database Hiển thị xóa viết thành cơng Xóa viết thành cơng Biểu đồ use case: 23 2.5 Khung nhìn logic Mơ tả khung nhìn logic kiến trúc Mô tả lớp quan trọng nhất, tổ chức chúng gói dịch vụ hệ thống con, việc tổ chức hệ thống thành lớp Biểu đồ lớp sử dụng để minh hoạ mối quan hệ lớp, hệ thống Biểu đồ lớp: 2.5 khung nhìn quy trình Mơ tả khung nhìn quy trình (động) kiến trúc Có thể sử dụng biểu đồ hoạt động biểu đồ trình tư/cộng tác để biểu diễn cho khung nhìn Biểu đồ hoạt động: - Biểu đồ hoạt động cho chức đăng nhập: 24 - Biểu đồ hoạt động cho chức tạo viết: 25 - Biểu đồ hoạt động cho chức sửa viết: - Biểu đồ hoạt động cho chức xóa viết: Biểu đồ trình tự : - Biểu đồ trình tự cho chức đăng nhập 26 - Biểu đồ trình tự cho chức tạo viết: 27 - Biểu đồ trình tự cho chức sửa viết: - Biểu đồ trình tự cho chức xóa viết 2.6 Khung nhìn triển khai Mơ tả khung nhìn triển khai kiến trúc Mô tả thành phần vật lý khác cho cấu hình tảng điển hình Cũng mô tả việc phân bổ nhiệm vụ cho 28 thành phần vật lý Kết hợp với biểu đồ thành phần để thành phần phân bổ node vật lý 2.7 Biểu đồ thành phần Biểu đồ thành phần (Component Diagram) biểu đồ mô tả thành phần phụ thuộc chúng hệ thống Các biểu đồ thành phần thường vẽ để giúp chi tiết việc triển khai mơ hình kiểm tra kỹ xem khía cạnh chức yêu cầu hệ thống bao phủ phát triển có kế hoạch 29 CHƯƠNG 3: XÂY DỰNG DEMO 3.1 Ngôn ngữ lập trình cơng cụ sử dụng 3.1.1 JavaScript JavaScript, theo phiên hành, ngôn ngữ lập trình thơng dịch phát triển từ ý niệm nguyên mẫu Ngôn ngữ dùng rộng rãi cho trang web (phía người dùng) phía máy chủ (với Nodejs) Nó vốn phát triển Brendan Eich hãng truyền thông Netscape với tên Mocha, sau đổi tên thành LiveScript, cuối thành JavaScript Giống Java JavaScript có cú pháp tương tự C, gần với Self Java .js phần mở rộng thường dùng cho tập tin mã nguồn JavaScript Phiên JavaScript ECMAScript ECMAScript phiên chuẩn hóa JavaScript Trình duyệt Mozilla phiên 1.8 beta có hỗ trợ khơng đầy đủ cho EX4- phần mở rộng cho JavaScript hỗ trợ làm việc với XML chuẩn hóa ECMA-357 3.1.2 NodeJs Nodejs tảng xây dựng “V8 Javascript engine” viết c++ Javascript Nền tảng phát triển Ryan Lienhart Dahl vào năm 2009.NodeJS tảng hỗ trợ xây dựng ứng dụng web NodeJS mã nguồn mở sử dụng rộng hàng ngàn lập trình viên tồn giới NodeJS chạy nhiều tảng hệ điều hành khác từ WIndow Linux, OS X nên lợi NodeJS cung cấp thư viện phong phú dạng Javascript Module khác giúp đơn giản hóa việc lập trình giảm thời gian mức thấp Khi nói đến NodeJS phải nghĩ tới vấn đề Realtime xử lý bất đồng Realtime xử lý giao tiếp từ client tới máy chủ theo thời gian thực Máy chủ Nodejs xử lý nhiều request thời điểm không chạy đa luồng 30 3.1.3 Express js Expressjs web framework xây dựng tảng Nodejs Nó cung cấp tính mạnh mẽ để phát triển web mobile Expressjs hỗ trợ method HTTP middleware tạo API vô mạnh mẽ dễ sử dụng Express js Framework nhỏ, linh hoạt xây dựng tảng Nodejs Nó cung cấp tính mạnh mẽ để phát triển web mobile Expressjs có vơ số package hỗ trợ lập trình viên nhanh Express cung cấp thêm tính (feature) để dev lập trình tốt khơng làm giảm tốc độ NodeJS Các Framework tiếng NodeJS sử dụng ExpressJS core function 3.1.3 Hệ quản trị sở liệu MongoDB MongoDB database hướng tài liệu thuộc loại NoSQL database viết C++ MongoDB tránh cấu trúc table-based relational database để thích ứng với tài liệu JSON có schema linh hoạt gọi BSON MongoDB sử dụng lưu trữ liệu dạng Document JSON nên collection các kích cỡ document khác Các liệu lưu trữ document kiểu JSON nên truy vấn nhanh Ngoài ra, MongoDB sở liệu đa tảng, hoạt động khái niệm Collection Document, cung cấp hiệu suất cao, tính khả dụng cao khả mở rộng dễ dàng 3.1.4 Visual Studio code Visual Studio Code sản phẩm Microsoft, mắt vào tháng năm 2015 hội nghị Build Đây Editor có đặc điểm bật đơn giản, gọn nhẹ, dễ dàng cài đặt Visual Studio Code cài đặt Windows, Linux Mac OS hỗ trợ nhiều ngơn ngữ lập trình Những lý để nên sử dụng VScode cho dự án lần này: 31 Có setting riêng cho Workspace Startup time nhanh tương đối Cross-platform support Tính linh hoạt cao thông qua extensions setting Giao diện thân thiện dễ sử dụng Có tích hợp Terminal cho lập trình nodejs 3.1.5 Docker Docker dự án mã nguồn mở giúp tự động triển khai ứng dụng Linux Windows vào container ảo hóa Docker cung cấp lớp trừu tượng tự động ảo hóa dựa Linux Docker tảng để cung cấp cách để building, deploying running ứng dụng dễ dàng cách sử dụng containers (trên tảng ảo hóa) Ban đầu Docker viết Python, chuyển sang Golang Sử dụng Docker cho phép lập trình viên dễ dàng triển khai ứng dụng mình, giải pháp hồn hảo cho việc thay máy ảo sử dụng nhiều phần cứng 32 3.2 Hình ảnh demo giao diện 3.2.1 Giao diện trang chủ 3.2.2 Giao diện tạo viết 33 3.2.3 giao diện quản lý viết 34 KẾT LUẬN Qua q trình tìm tịi học hỏi nghiên cứu, nhóm chúng em hiểu rõ kiến trúc phần mềm Microservice, nắm thành phần chính, nguyên lý hoạt động kiến trúc Cũng từ mà rút ưu nhược điểm kiến trúc sở lý thuyết cho việc áp dụng Microservice cho việc phát triển hệ thống Ngồi việc tìm hiểu kiến trúc Microservice, nhóm học cách viết tài liệu kiến trúc phần mềm, đặc tả kiến trúc phần mềm thơng qua + khung nhìn khác Từ tạo bước đệm cho việc phát triển kỹ thiết kế phần mềm sau Nhờ việc xây dựng demo thành viên tìm hiểu thêm ngơn ngữ lập trình, có thêm kinh nghiệm cho thân việc xây dựng hệ thống website Ưu điểm: • Hiểu nắm kiến trúc phần mềm Microservice • Học cách viết tài liệu kiến trúc phần mềm • Kiến thức ngơn ngữ lập trình, cơng cụ • Có thêm kinh nghiệm thiết kế phát triển hệ thống website Hạn chế: • Kiến thức hạn hẹp, tham khảo từ nhiều nguồn khác dẫn tới sai lệch • Tài liệu đặc tả kiến trúc cịn nhiều thiếu sót, khơng tránh khỏi sai lầm • Ứng dụng demo cịn mức bản, chưa thể mang áp dụng thực tế • Ngồi cịn nhiều thiếu sót hạn chế khác Từ nguồn kiến thức học tập được, nhóm chúng em cố gắng tiếp tục xây dựng, phát triển dự án lớn, có tính thương mại có ích cho cộng đồng tương lai 35 Q trình nghiên cứu nhóm khơng thể tránh khỏi thiếu sót Nhóm chúng em mong nhận ý kiến góp ý q thầy để hoàn thiện kiến thức Chúng em xin cảm ơn thầy cô TÀI LIỆU THAM KHẢO [1] https://tubean.github.io/2018/12/monolithic-vs-microservice/ [2] https://viblo.asia/p/doi-net-ve-microservice-architecture-va-monolithicarchitecture-XL6lAAvrlek [3] https://topdev.vn/blog/phat-trien-phan-mem-theo-kien-truc-microservice/ [4] Xây dựng Microservices Sam Newman [5] https://vi.wikipedia.org/wiki/Microservices [6] Giáo trình Kiến trúc thiết kế phần mềm (Khoa Cntt Trường đại học Công nghệ thông tin Truyền thông Thái Nguyên [7] https://www.edureka.co/blog/what-is-microservices/ [8] https://microservices.io/ [9] https://vi.wikipedia.org/wiki/Microservices 36 ... Sam Newman [5] https://vi.wikipedia.org/wiki/Microservices [6] Giáo trình Kiến trúc thiết kế phần mềm (Khoa Cntt Trường đại học Công nghệ thông tin Truyền thông Thái Nguyên [7] https://www.edureka.co/blog/what-is-microservices/... tiếp vào database, thay vào truy cập database thơng qua microservice1 Do việc thay đổi schema database không ảnh hưởng tới microservice2 Tuy nhiên với cách tiếp cận 15 microservice2 phụ thuộc vào... nhập thị trường, họ phát triển nhanh chóng Nó sớm bắt đầu tìm kiếm giải pháp hỗ trợ quy mơ cho hàng triệu người dùng, nhiều tảng xử lý quy tắc kinh doanh phức tạp Nhóm cơng nghệ họ tìm cách để