CodeGym /Các khóa học /JAVA 25 SELF /Mô hình sản phẩm CNTT

Mô hình sản phẩm CNTT

JAVA 25 SELF
Mức độ, Bài học
Có sẵn

1. Sản phẩm hiện đại

Ngày nay hầu như không ai còn gọi sản phẩm là “chương trình” nữa. Một sản phẩm hiện đại có thể bao gồm hàng chục chương trình, hàng trăm dịch vụ Internet và nhiều API do trung tâm dữ liệu đám mây cung cấp (còn được gọi là trung tâm xử lý dữ liệu), nơi nó được triển khai.

Nhiều sản phẩm hiện đại (nếu không muốn nói là tất cả) hoạt động theo mô hình Client-Server. Đó là khi trên thiết bị của bạn (điện thoại, laptop, máy tính) có một chương trình chịu trách nhiệm tương tác với người dùng (bạn), còn chức năng trọng yếu nằm trên máy chủ chuyên dụng, nơi mọi thứ quan trọng diễn ra ➡️🖥️

Đôi khi client của bạn có thể giao tiếp với nhiều server độc lập, hoặc server của một sản phẩm có thể gọi tới server của sản phẩm khác. Hình thành nên một mạng lưới toàn cầu gồm client và server, và tất cả chúng hoạt động cùng nhau.

Vì vậy, có lẽ mô hình phù hợp hơn để mô tả ứng dụng hiện đại là Client-Internet-Server. Có quá nhiều dạng giao tiếp phức tạp ở đó. Thậm chí đã xuất hiện các “kênh liên lạc thông minh”, có thể tự quyết định gửi yêu cầu của bạn cho ai và khi nào.🛰️📡

2. Client

Chương trình phía client có thể chia tạm thành 4 nhóm:

  • 🖥️ Desktop client — chương trình chạy trên máy tính để bàn.
  • 📲 Mobile client — ứng dụng cho iOS hoặc Android.
  • 🌐 Web client — website/ứng dụng web chạy trong trình duyệt.
  • 🌍 Server client — ứng dụng chạy trên một máy chủ khác.

Và mỗi nhóm lại có thể chia nhỏ tiếp. Ví dụ, web client — là website hoặc ứng dụng web, nghĩa là nó gồm Trình duyệt và Trang web được tải vào đó. Các trình duyệt cũng không giống nhau và có thể hoạt động khác nhau.

Ngay cả khi ta dùng trình duyệt phổ biến nhất, vẫn còn website được tải vào đó. Một website thường gồm ba phần:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

“Không có gì đơn giản hơn,” bạn sẽ nói. Chỉ là ngày nay chẳng ai viết website chỉ bằng HTML và JavaScript nữa. Để phát triển website, người ta dùng không chỉ thư viện mà là các framework hoàn chỉnh như React, Angular hoặc Vue ⚛️. Và giờ chúng cũng không còn chỉ là website, mà là các ứng dụng web hoàn chỉnh với quy trình build, test và các mô hình riêng.

CSS thuần nay cũng ít ai dùng. Đã có các bộ tiền xử lý CSS giúp sinh mã, và cả những framework CSS. Thậm chí ngay cả email cũng có các framework CSS chuyên dụng để thư của bạn trông đẹp trong trình duyệt lẫn hầu hết client email 💌.

Viết bằng JavaScript thuần cũng không còn phổ biến — các ứng dụng web lớn đều được tạo bằng TypeScript rồi biên dịch xuống JavaScript. Bạn hiểu ý rồi đó...

3. Internet và hạ tầng

Giao tiếp giữa client và server — còn gì đơn giản hơn? Nhưng ngay cả trong mối quan hệ đó, mọi thứ cũng đã thay đổi.

Sản phẩm của bạn rất có thể sẽ được đặt trong một trung tâm dữ liệu hiện đại. Nhiều công ty trên toàn thế giới cung cấp các dịch vụ hosting khác nhau cho sản phẩm của bạn, dù trên server của họ hay trên các server vật lý của chính bạn. Muốn gì cũng có, miễn là trả tiền.

Trung tâm dữ liệu

Máy chủ vật lý giờ đây không còn “vật lý” nữa. Tất cả trung tâm dữ liệu hiện đại đều cung cấp thuê máy chủ ảo. Máy chủ ảo là một máy tính ảo, và trên một server vật lý có thể có hàng chục máy như vậy. Bù lại, việc nâng cấp server trở nên tiện lợi. Nếu bạn cần thêm bộ nhớ, bạn có thể bổ sung cho máy chủ ảo của mình chỉ trong vài phút ⏱️.

Nhưng ngay cả cách tiếp cận này cũng đang dần lỗi thời; bây giờ xu hướng là chuyển lên đám mây — khi sản phẩm của bạn không chỉ triển khai trên một máy chủ ảo trong trung tâm dữ liệu, mà còn tận dụng tích cực bộ hạ tầng và dịch vụ phong phú của các trung tâm dữ liệu đó.

Bạn cần server để lưu trữ bản sao lưu — trong đám mây đã có sẵn hạ tầng tiện lợi. Bạn cần cơ sở dữ liệu với độ tin cậy 99.9999999%? Cũng có luôn. Kafka, RabbitMQ, NoSQL? Tất cả đều đã có và dễ cấu hình. Chỉ cần trả tiền.

Và các trung tâm dữ liệu và đám mây bắt đầu trở thành một phần của sản phẩm của bạn. Ví dụ, Amazon có vô số trung tâm dữ liệu trên khắp thế giới, vì thế họ cung cấp dịch vụ CDN: nội dung công khai của bạn sẽ được cache ở tất cả trung tâm dữ liệu của Amazon, và người dùng khắp nơi sẽ nhận được nhanh hơn 🛰️.

Hoặc các lời gọi tới API ứng dụng của bạn có thể đi qua dịch vụ Amazon Gateway API, cho phép cấu hình làm việc với các dịch vụ của bạn một cách rất linh hoạt. Có thể phân phối tải cho nhiều dịch vụ, chống DDoS, tự động hóa tải tệp, cấu hình cache thông minh, và còn rất nhiều thứ khác 🛡️.

Như vậy, giữa ứng dụng client và các dịch vụ của bạn xuất hiện vô số “kết nối thông minh”, mà bạn có thể và nên cấu hình. Dù bạn không bao giờ tự tay làm, bạn vẫn cần biết chúng tồn tại và có thể ảnh hưởng đáng kể đến hoạt động của chương trình.

Và đó là còn chưa đụng tới các chủ đề như router, trạm phát 5G, vệ tinh và cáp Internet dưới đáy đại dương. Bạn gửi luồng video từ server của mình tới client, nhưng nó trục trặc vì phía client kết nối kém và liên tục rớt mạng. Đoán xem ai sẽ giải quyết vấn đề này? Chính là bạn 😅

4. Server

Dưới từ “server” có thể ẩn chứa những khái niệm rất khác nhau. Sẽ hữu ích nếu bạn biết về những loại phổ biến nhất.

  • 🖥️ Máy chủ vật lý
    Máy chủ vật lý là phần cứng, một máy tính riêng có tài nguyên (CPU, bộ nhớ, lưu trữ) dùng để xử lý dữ liệu và vận hành các ứng dụng phần mềm khác nhau. Những server này được lắp đặt trong các trung tâm dữ liệu, nơi chúng cung cấp năng lực cho việc lưu trữ website, ứng dụng, cơ sở dữ liệu và các dịch vụ khác.
  • 🪐 Máy chủ ảo
    Máy chủ ảo là một server được mô phỏng bằng phần mềm và chạy trong môi trường của máy chủ vật lý. Nhờ công nghệ ảo hóa, một server vật lý có thể được chia thành nhiều server ảo độc lập, mỗi server có hệ điều hành riêng và có thể được khởi động lại, cấu hình độc lập.
  • 🕹️ Chương trình máy chủ (ví dụ, Nginx)
    Chương trình máy chủ như Nginx là phần mềm phía server dùng để xử lý các yêu cầu tới tài nguyên web. Nginx nổi tiếng là web server, đồng thời có thể đóng vai trò proxy thư điện tử và reverse proxy trong kiến trúc microservice, cũng như làm bộ cân bằng tải.
  • 💾 Máy chủ cơ sở dữ liệu
    Máy chủ cơ sở dữ liệu là server chuyên dụng dùng để quản lý cơ sở dữ liệu và xử lý các truy vấn tới đó. Nó cung cấp lưu trữ dữ liệu tập trung và xử lý dữ liệu, cho phép truy cập qua mạng. Các máy chủ cơ sở dữ liệu hỗ trợ xử lý giao dịch, tìm kiếm và chỉnh sửa dữ liệu, đồng thời đảm bảo độ tin cậy và an toàn thông tin. Ví dụ: MySQL, PostgreSQL, Oracle Database và Microsoft SQL Server.

Và ở đâu đó trong trung tâm dữ liệu, trên một trong các máy chủ ảo, dự án của bạn viết bằng C# và ASP.NET Core sẽ chạy. Nó sẽ làm việc với cơ sở dữ liệu, nhận request qua Nginx hoặc Azure Application Gateway, và gửi log hoạt động tới các hệ thống giám sát như Azure Monitor hoặc Splunk 📈.

Nhưng chính nhờ mã của bạn mà hàng triệu người dùng của sản phẩm sẽ hài lòng. Họ sẽ sử dụng dịch vụ, trả tiền cho nó, và cuối cùng chủ sở hữu sản phẩm cũng vui. Cổ phiếu công ty sẽ tăng, bạn nhận thưởng bằng cổ phiếu — và bạn sẽ hạnh phúc 💸. Vòng tuần hoàn hạnh phúc đích thực trong ngành :)

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION