Kiến trúc ứng dụng web mô tả bố cục của tất cả các thành phần của ứng dụng web và cũng làm nổi bật sự tương tác giữa các thành phần ứng dụng khác nhau, hệ thống phần mềm trung gian của bên thứ ba, dịch vụ web và cơ sở dữ liệu. Điều này cung cấp cái nhìn toàn cảnh về sự tương tác giữa một số ứng dụng hoạt động đồng thời với nhau để cung cấp dịch vụ cho người dùng cuối.
Sự khác biệt giữa kiến trúc phần mềm và thiết kế phần mềm
- Kiến trúc phần mềm là làm nổi bật tất cả các thành phần cấp cao của một hệ thống và sự tương tác bên trong chúng.
- Thiết kế phần mềm là thiết kế cấp độ code tập trung vào việc phân phối logic của ứng dụng thành các mô-đun khác nhau với các mục đích cụ thể của riêng nó. Điều này giúp xây dựng và quản lý logic của ứng dụng.
Sơ đồ kiến trúc ứng dụng web
User Agent
User-Agents (Tác nhân người dùng) chủ yếu là các công cụ giúp người dùng tương tác với máy chủ. Người dùng chính tương tác với máy chủ bằng trình duyệt web – Google Chrome, Firefox, Microsoft Edge, Safari và các ứng dụng di động trên nền tảng Android và IOS. User-Agents gửi một yêu cầu đến máy chủ và nhận được phản hồi sau đó được hiển thị cho người dùng.
DNS
Domain Name Servers (Máy chủ tên miền) giống như một sổ địa chỉ cho các trang web. Bất cứ khi nào người dùng gửi yêu cầu đến địa chỉ web bằng trình duyệt, trình duyệt sẽ sử dụng DNS để tìm địa chỉ thực của máy chủ web (Địa chỉ IP) trước khi có thể gửi yêu cầu. Trình duyệt cần tìm ra máy chủ mà trang web đang lưu trữ, để có thể gửi các yêu cầu HTTP đến đúng nơi.
Load Balancer
Load Balancer (bộ cân bằng tải) chủ yếu xử lý tỷ lệ theo chiều ngang. Nó hướng các yêu cầu đến đến một trong nhiều máy chủ và sau đó bộ cân bằng tải sẽ gửi phản hồi mà nó nhận được từ các máy chủ này tới người dùng. Thông thường, các máy chủ ứng dụng web tồn tại dưới dạng nhiều bản sao phản chiếu lẫn nhau để cung cấp tính nhất quán và tính khả dụng. Bộ cân bằng tải phân phối các nhiệm vụ giữa chúng. Nó hoạt động tốt cùng với tính năng tự động mở rộng quy mô của máy chủ.
Máy ảo (Virtual Machine)
Máy ảo (VM) làm nhiệm vụ ảo hóa/giả lập hệ thống máy tính. Máy ảo dựa trên kiến trúc máy tính và cung cấp chức năng của một máy tính vật lý. Việc triển khai chúng có thể liên quan đến phần cứng, phần mềm chuyên dụng hoặc kết hợp cả hai.
Web Server
Webserver xử lý yêu cầu của người dùng và gửi phản hồi bao gồm dữ liệu (HTML, JSON, XML,…) trở lại trình duyệt. Máy chủ web được lưu trữ trên máy ảo sử dụng sức mạnh tính toán do máy ảo cung cấp để thực hiện các tác vụ của chúng. Webserver thường liên quan đến cơ sở hạ tầng back-end như cơ sở dữ liệu, máy chủ bộ nhớ cache, hàng đợi công việc và những cơ sở khác.
Databases
Cơ sở dữ liệu (database ) cung cấp các công cụ để tổ chức, thêm, tìm kiếm, cập nhật, xóa và thực hiện các phép tính trên dữ liệu. Nói chung có các cơ sở dữ liệu quan hệ – MySQL, PostgreSQL, Microsoft SQL Server, Cơ sở dữ liệu Oracle và Microsoft Access,…. và cơ sở dữ liệu không quan hệ – MongoDB, Dynamo DB,…
Caching Service
Dịch vụ bộ nhớ đệm (Caching service) cung cấp khả năng lưu trữ dữ liệu, cho phép lưu trữ và tìm kiếm dữ liệu. Bộ nhớ đệm cho phép bạn tham khảo kết quả trước đó để thực hiện tính toán nhanh hơn nhiều. Bộ nhớ đệm có thể được áp dụng và tận dụng trong các lớp công nghệ khác nhau bao gồm Hệ điều hành, các lớp Mạng bao gồm Mạng phân phối nội dung (CDN) và DNS, ứng dụng web và Cơ sở dữ liệu.
Client-Side — HTTP Cache Headers, Browsers
DNS — DNS Servers
Web — HTTP Cache Headers, CDNs, Reverse Proxies, Trình tăng tốc web, kho dữ liệu Key/Value
App — Kho dữ liệu Key/Value, Bộ nhớ đệm cục bộ
Database — Database Cache, bộ đệm, kho dữ liệu Key/Value
Content Delivery Network(CDN)
Mạng phân phối nội dung (CDN), là một mạng được phân phối theo địa lý của các máy chủ proxy và các trung tâm dữ liệu của chúng. Mục tiêu là cung cấp tính khả dụng và hiệu suất cao bằng cách phân phối dịch vụ theo không gian liên quan đến người dùng cuối. CDN phục vụ một phần lớn nội dung Internet bao gồm các đối tượng web (văn bản, đồ họa và tập lệnh), các đối tượng có thể tải xuống (tệp phương tiện, phần mềm, tài liệu), ứng dụng (thương mại điện tử, cổng thông tin), phương tiện phát trực tiếp, phương tiện phát trực tuyến theo yêu cầu , và các trang web truyền thông xã hội.
External Storage
Kho lưu trữ bên ngoài được sử dụng để lưu trữ nội dung bao gồm hình ảnh, video, tài liệu và các tệp lớn khác. Trong nhiều trường hợp, cũng có các thao tác được thực hiện trên các tệp này. Ví dụ – Youtube tự động chuyển đổi video do người dùng tải lên ở nhiều độ phân giải. Facebook chuyển đổi hình ảnh và video của người dùng sang định dạng thân thiện với thiết bị di động. Bởi vì việc lưu trữ những dữ liệu này trên đĩa cục bộ VM có thể tốn kém và tiêu tốn nhiều tài nguyên tính toán, chúng thường được lưu trữ trong bộ nhớ ngoài. Lưu trữ đám mây là một trong những tùy chọn phổ biến nhất.
Lưu trữ đám mây là một mô hình điện toán đám mây lưu trữ dữ liệu trên Internet thông qua một nhà cung cấp dịch vụ điện toán đám mây quản lý và vận hành dịch vụ lưu trữ dữ liệu. Nó được cung cấp theo dung lượng và chi phí phù hợp, đồng thời loại bỏ qua việc mua và quản lý cơ sở hạ tầng lưu trữ dữ liệu của riêng bạn.
Web Services
Các dịch vụ web cung cấp một nền tảng chung cho phép nhiều ứng dụng được xây dựng trên các ngôn ngữ lập trình khác nhau có khả năng giao tiếp với nhau.
Các dịch vụ web sử dụng SOAP (Simple Object Access Protocol) để gửi dữ liệu XML giữa các ứng dụng. Dữ liệu được gửi qua HTTP Request. Dữ liệu được gửi từ dịch vụ web tới ứng dụng được gọi là SOAP message. SOAP message không là gì ngoài một tài liệu XML. Vì tài liệu được viết bằng XML nên ứng dụng khách gọi dịch vụ web có thể được viết bằng bất kỳ ngôn ngữ lập trình nào.
Chủ yếu có hai loại dịch vụ web.
- Simple Object Access Protocol hoặc các dịch vụ web SOAP.
- Representational State Transfer hoặc REST.
Data Warehouse
Data Warehouse là một hệ thống được sử dụng để báo cáo và phân tích dữ liệu và được coi là một thành phần cốt lõi của kinh doanh. Mọi ứng dụng hiện đại đều thu thập, lưu trữ và phân tích dữ liệu. DW là kho lưu trữ trung tâm của dữ liệu tích hợp từ một hoặc nhiều nguồn khác nhau. Chúng lưu trữ dữ liệu quá khứ và hiện tại ở một nơi duy nhất được sử dụng để thực hiện thông tin kinh doanh và tạo báo cáo phân tích cho doanh nghiệp.
Hai cách tiếp cận chính được sử dụng để xây dựng hệ thống kho dữ liệu là Trích xuất, biến đổi, tải (ETL) và trích xuất, tải, biến đổi (ELT).
Ba quy trình bắt buộc này là:
- Trích xuất: Trích xuất dữ liệu từ nhiều nguồn.
- Chuyển đổi: Chuyển đổi dữ liệu bao gồm làm sạch, lọc và phân loại.
- Tải: Tải dữ liệu trong bộ lưu trữ để nhập kho dữ liệu.
Mô hình của các thành phần ứng dụng web
Chỉ có ba mô hình thành phần ứng dụng web. Nó liên quan chặt chẽ đến số lượng dịch vụ và cơ sở dữ liệu được sử dụng cho một ứng dụng web.
- Một máy chủ web, một cơ sở dữ liệu
- Nhiều máy chủ web, một cơ sở dữ liệu
- Nhiều máy chủ web, nhiều cơ sở dữ liệu
- Dịch vụ ứng dụng
Ba mô hình được gọi là “Nguyên khối” là do tính chất ổn định và cứng nhắc của máy chủ của chúng. Ngược lại, các dịch vụ ứng dụng (microservices và serverless) có xu hướng nhanh nhẹn hơn vì chúng đơn giản hóa việc nâng cấp và mở rộng quy mô. Áp dụng mô hình này cho phép chia các máy chủ web thành các phần nhỏ hơn: ‘dịch vụ’ trong microservices và ‘chức năng’ trong serverless. Do đó, việc sửa đổi và mở rộng quy mô một cách độc lập bằng cách sử dụng từng loại sẽ dễ dàng hơn.
Các tiêu chí chính để xây dựng một kiến trúc ứng dụng đáng tin cậy
- Hiệu quả
- Linh hoạt
- Có thể tái sử dụng
- Dễ dàng kiểm tra
- Giải quyết vấn đề một cách nhất quán và thành công
- Code có cấu trúc tốt và dễ hiểu
- Có thể mở rộng trong quá trình phát triển
- Có thời gian phản hồi nhanh
- Đơn giản
- Sử dụng các tiêu chuẩn bảo mật