1. Link tải xuống trực tiếp
LINK TẢI GG DRIVE: LINK TẢI 1
LINK TẢI GG DRIVE: LINK TẢI 2
LINK TẢI GG DRIVE: LINK DỰ PHÒNG
Nội dung
- I. 5 mẫu kiến trúc hệ thống và phần mềm phổ biến
- #đầu tiên. Kiến trúc phân lớp
- # 2. Máy khách – Máy chủ
- # 3. Mô hình – Chế độ xem – Bộ điều khiển (MVC)
- #4. Kiến trúc Microservices
- # 5. Kiến trúc sự kiện
- II. Phần kết
Xin chào các bạn, từ khi ra đời phần mềm đã được phát triển dưới nhiều hình thức khác nhau. Từ những trò chơi đen trắng đến những ứng dụng tuyệt vời mà chúng ta sử dụng hàng ngày như Facebook, Youtube…
Vì vậy, bạn đã bao giờ tự hỏi làm thế nào mọi người tạo ra những ứng dụng này? Làm cách nào để mọi người thiết kế ứng dụng có nhiều người dùng?
Trong bài viết hôm nay mình sẽ cùng các bạn tìm hiểu 5 mẫu kiến trúc hệ thống và phần mềm phổ biến nhất hiện nay. Có lẽ qua bài viết này, bạn sẽ phần nào hình dung được cách mà người ta đã tạo ra phần mềm mà chúng ta vẫn sử dụng hàng ngày ^^
I. 5 mẫu kiến trúc hệ thống và phần mềm phổ biến
Đọc thêm:
- KỸ SƯ PHẦN MỀM nên học gì?
- Các thành phần của máy tính là gì?
#đầu tiên. Kiến trúc phân lớp
Trong tiếng Anh, cụm từ “N-tier architecture” hoặc “Multi-tier architecture” thường được sử dụng để mô tả kiến trúc nhiều lớp.
Đây là một mẫu thiết kế khá phổ biến khi mã nguồn được chia thành nhiều tầng. Một số đặc điểm của kiểu kiến trúc này:
+ Lớp ngoài cùng sẽ là lớp nhận dữ liệu, dữ liệu sẽ được truyền (xử lý) qua các lớp ở giữa. Cuối cùng, khi quá trình xử lý hoàn tất, dữ liệu sẽ được lưu ở lớp cuối cùng (thường được gọi là lớp dữ liệu – lớp này làm việc trực tiếp với cơ sở dữ liệu).
+ Đơn giản nhất mà chúng ta thường thấy là mô hình 3-tier (ba tầng) bao gồm: tầng trình bày, tầng ứng dụng và tầng dữ liệu.
+ Trong đó mức trình bày thường là lớp giao diện, tương tác trực tiếp với người dùng để nhận dữ liệu. Tầng ứng dụng thường là tầng nhận dữ liệu và thực hiện xử lý logic nghiệp vụ (còn được gọi là tầng logic nghiệp vụ). Lớp dữ liệu là lớp tương tác với cơ sở dữ liệu.
Thuận lợi :
+ Quá trình bảo trì khá đơn giản vì mã rất nhiều lớp và các lớp hoàn toàn tách biệt.
+ Cấu trúc mã nguồn đơn giản, dễ hiểu cho người mới bắt đầu.
Lỗi:
+ Mã nguồn sử dụng lâu dài sẽ “phình to” tùy theo quy mô của dự án.
+ Phần lớn mã đôi khi chỉ có nhiệm vụ chuyển dữ liệu giữa các lớp, ảnh hưởng đến hiệu suất của ứng dụng.
# 2. Máy khách – Máy chủ
Mô hình máy khách – máy chủ (server-client) có lẽ không còn quá xa lạ với nhiều người. Mô hình này bao gồm một máy chủ và một số máy khách được kết nối với máy chủ này.
Một số tính năng của mô hình này là:
Máy khách gửi yêu cầu đến máy chủ và chờ phản hồi từ máy chủ.
Khi máy chủ chấp nhận yêu cầu từ máy khách, nó sẽ tạo kết nối với máy khách này thông qua giao thức mạng an toàn (thường là https).
Nhiều ứng dụng và dịch vụ sử dụng mẫu này. Điển hình, đây là dịch vụ gửi và nhận email.
Thuận lợi :
Máy khách có thể truy cập tài nguyên dữ liệu của máy chủ thông qua quyền truy cập an toàn. Điều này giúp bạn dễ dàng chia sẻ dữ liệu khi bạn đi vắng.
+ Với mô hình này, chúng ta không quá phụ thuộc vào công nghệ vì có thể sử dụng bất kỳ ngôn ngữ lập trình nào phù hợp.
+ Việc bảo trì sẽ diễn ra thuận lợi hơn nhờ sự phân chia rõ ràng trách nhiệm của máy khách và máy chủ.
Lỗi:
+ Nhược điểm lớn nhất của mô hình này là khả năng chịu tải của máy chủ khi có quá nhiều yêu cầu từ các máy khách khác nhau.
+ Ngoài ra, nếu mô hình này không đảm bảo an ninh đường truyền thì rất dễ bị đánh cắp dữ liệu.
# 3. Mô hình – Chế độ xem – Bộ điều khiển (MVC)
Tiếp theo, chúng ta sẽ tìm hiểu về một mẫu thiết kế phần mềm rất phổ biến khác, đó là mẫu MVC (Model – View – Controller).
Với mô hình này, chúng ta chia nó thành 3 thành phần: mô hình dữ liệu ứng dụng, lớp trình bày (view) và bộ điều khiển. Đặc điểm chung của mô hình này là:
+ Người dùng có thể tương tác với dữ liệu ứng dụng thông qua lớp xem. Nhưng ngược lại, lớp này không thể quyết định người dùng làm gì với dữ liệu.
Lớp điều khiển nằm giữa mô hình và khung nhìn. Lớp khung nhìn sẽ lắng nghe các sự kiện và lớp điều khiển sẽ thực thi các sự kiện đó. Thông thường hành động này sẽ gọi một hàm trên lớp mô hình và kết quả sẽ được trả về và hiển thị trong khung nhìn.
Có rất nhiều web framework triển khai mô hình này như Spring hoặc Rails. Đây là lý do tại sao nhiều ứng dụng vẫn sử dụng mô hình này.
Thuận lợi :
+ Mô hình này thúc đẩy sự phát triển phần mềm vì 3 thành phần view, model, controller có quan hệ mật thiết với nhau.
+ Do lớp khung nhìn chỉ có nhiệm vụ hiển thị và truyền dữ liệu nên có thể hiển thị nhiều khung nhìn khác nhau cho người dùng (trong khi dữ liệu không đổi).
+ Thay đổi giao diện người dùng là cực kỳ phổ biến đối với các ứng dụng web, nhưng với mẫu MVC, giao diện có thể được tùy chỉnh mà không ảnh hưởng
Lỗi:
+ Do 3 thành phần view, model, controller có quan hệ mật thiết và tương tác với nhau nên khi có class mới sẽ khó tích hợp.
+ Lập trình viên cũng phải tìm hiểu nhiều công nghệ nếu muốn làm chủ mô hình này.
#4. Kiến trúc Microservices
Trong những năm gần đây, với sự phát triển của các siêu ứng dụng, khái niệm Microservices cũng ngày càng được nhiều người biết đến.
Microservices là một mô hình kiến trúc trong đó các dịch vụ được thực hiện riêng biệt, trong đó mỗi dịch vụ có một nhiệm vụ chính. Các dịch vụ này thường sẽ độc lập với nhau, do đó nếu một dịch vụ bị lỗi, các dịch vụ khác sẽ tiếp tục hoạt động như bình thường.
Ví dụ, khi đặt xe trên ứng dụng đặt xe, bạn chỉ cần đăng nhập, đặt xe, hệ thống sẽ tìm tài xế gần bạn nhất …
Nếu theo mô hình mircoservice, kết nối có thể tách thành dịch vụ riêng, đặt xe có thể tách thành dịch vụ riêng …
Các dịch vụ này hoạt động độc lập, nếu chức năng đặt xe bị lỗi thì bạn vẫn đăng nhập bình thường, nhưng không đặt xe được nữa.
Thuận lợi :
+ Chia ứng dụng thành các chức năng nhỏ giúp tăng tốc quá trình phát triển, thử nghiệm và bảo trì, ít lỗi hơn.
+ Tránh được thực tế là khi ứng dụng “chết”, toàn bộ hệ thống “sụp đổ”, mà ngược lại là tăng tính linh hoạt và độc lập giữa các chức năng.
+ Có thể sử dụng lại các dịch vụ trong các ứng dụng khác
Lỗi:
+ Nó có thể tiêu tốn nhiều tài nguyên phần cứng hơn do phải tạo nhiều máy chủ để triển khai nhiều dịch vụ nhỏ.
+ Đội ngũ phát triển sẽ phải sử dụng nhiều công nghệ để hệ thống luôn hoạt động trơn tru, tránh tình trạng treo máy hoặc quá tải.
# 5. Kiến trúc sự kiện
Có những ứng dụng mà các thành phần (chức năng) chỉ hoạt động khi có xử lý dữ liệu và khi không có xử lý thì chúng không hoạt động.
Với kiến trúc hướng sự kiện này, chúng ta có thể nghĩ rằng các ứng dụng di động hoặc ứng dụng máy tính để bàn được thiết kế với kiến trúc này.
Thuận lợi :
Với xử lý sự kiện, ứng dụng có thể xử lý nhiều lôgic phức tạp
+ Đây là một kiến trúc khả năng mở rộng tốt vì nếu bạn muốn thêm một thành phần mới, chỉ cần thêm các sự kiện mới cho các thành phần đó.
Lỗi:
Có nhiều chức năng và thành phần phụ thuộc lẫn nhau khiến việc kiểm tra đôi khi trở nên khó khăn.
+ Nhiều chức năng khác nhau đôi khi xử lý cùng một sự kiện dẫn đến lỗi…
II. Phần kết
Trên đây là 5 mẫu thiết kế kiến trúc và phần mềm mà mình thấy rất phổ biến hiện nay. Mỗi mẫu thiết kế đều có ưu và nhược điểm riêng.
Trên thực tế, sẽ có nhiều thiết kế ứng dụng và phần mềm khác như Blackboard, Intercept, Peer-to-Peer, v.v.
Khi phát triển ứng dụng hoặc xây dựng hệ thống, việc lựa chọn thiết kế và kiến trúc phù hợp sẽ giúp tối ưu hóa nhiều chi phí và tạo điều kiện mở rộng trong tương lai. Hẹn gặp lại các bạn trong những bài viết tiếp theo.
CTV: Nguyễn Đức Cảnh – Blogchiasekinthuc.com