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

Mô hình sản phẩm

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

2.1 Sản phẩm hiện đại

Sản phẩm ngày nay không ai gọi 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, được cung cấp bởi trung tâm dữ liệu đám mây (còn gọi là data center), 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 Khách-Chủ. Tức 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 phụ trách giao tiếp với người dùng (bạn), còn các chức năng quan trọng thì nằm trên một server riêng biệt, nơi diễn ra mọi thứ quan trọng.

Đô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ể giao tiếp với server của sản phẩm khác. Tạo ra một mạng lưới to lớn từ các client và server, và tất cả đều làm việc với nhau.

Vì vậy, mô hình ứng dụng hiện đại có thể được mô tả tốt hơn bằng mô hình Khách-Internet-Chủ. Vì nó đã trở nên quá phức tạp với nhiều loại giao tiếp khác nhau. Thậm chí đã xuất hiện các "kênh truyền thông thông minh", tự quyết định khi nào và cho ai gửi yêu cầu của bạn.

2.2 Khách hàng

Các chương trình khách hàng có thể chia thành 4 loại:

  • Desktop-client — chương trình chạy trên máy tính.
  • Mobile-client — ứng dụng trên iOS hoặc Android.
  • Web-client — trang web/ứng dụng web chạy trong trình duyệt.
  • Server-client — ứng dụng chạy trên server khác.

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

Nhưng dù chúng ta có sử dụng trình duyệt phổ biến nhất, vẫn còn trang web, thứ mà được tải vào. Trang web thường gồm ba phần:

  • HTML
  • CSS
  • JavaScript

"Không có gì dễ hơn," bạn sẽ nói. Chỉ là bây giờ không ai viết trang web chỉ bằng HTML và JavaScript nữa. Để phát triển trang web, giờ đây người ta sử dụng các framework đầy đủ như React, Angular hoặc Vue, chứ không chỉ là thư viện đơn giản. Đó không phải là trang web đơn thuần nữa, mà là ứng dụng web hoàn chỉnh với các bản build, test và mô hình của chúng.

CSS thuần cũng không ai dùng nữa. Đã có các CSS-preprocessor giúp tạo ra CSS, và cả những CSS-framework hoàn chỉnh. Thậm chí cho email còn có các CSS-framework đặc biệt để bức thư của bạn trông đẹp dù trên trình duyệt hay trên hầu hết email client.

Trên JavaScript thuần cũng không ai viết nữa — tất cả các ứng dụng web lớn đều được viết bằng TypeScript, sau đó được biên dịch thành JavaScript. Bạn hiểu rồi đó...

2.3 Internet và hạ tầng

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

Sản phẩm của bạn, có lẽ, sẽ được đặt trong một trong các data center hiện đại. Rất 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ù là trên server của họ hay trên server vật lý của chính bạn. Bất kỳ yêu cầu nào cho tiền của bạn.

Server vật lý không còn vật lý nữa. Tất cả các data center hiện đại cung cấp thuê các server ảo. Server ả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 server ảo. Tuy nhiên, điều này thuận tiện trong việc nâng cấp server. Nếu bạn cần thêm bộ nhớ, bạn có thể thêm vào server ảo của bạn chỉ trong vài phút.

Nhưng ngay cả cách này cũng đã lỗi thời, giờ đây di chuyển lên đám mây là xu hướng — nghĩa là sản phẩm của bạn không chỉ được triển khai trên một server ảo trong data center, mà còn sử dụng một loạt hạ tầng và dịch vụ lớn của các data center đó.

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

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

Hoặc việc gọi API của ứng dụng của bạn có thể thông qua dịch vụ Amazon Gateway API, cho phép cấu hình linh hoạt việc làm việc với các dịch vụ của bạn. Có thể phân bố tải cho các dịch vụ khác nhau, phản ánh các cuộc tấn công DDoS, tự động hóa tải file, cấu hình cache thông minh, và 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 phát sinh rất nhiều "giao tiếp thông minh", mà có thể và cần phải cấu hình. Dù bạn có thể không bao giờ làm điều này trực tiếp, bạn nên biết rằng chúng tồn tại và có thể ảnh hưởng lớn đến hoạt động của chương trình của bạn.

Và chúng ta vẫn chưa chạm vào các chủ đề như router, towers 5G, vệ tinh và cáp internet dưới đáy biển. Bạn gửi một luồng video từ server của bạn tới client, nhưng nó bị gián đoạn, vì client có kết nối kém và kết nối liên tục bị ngắt. Đoán xem ai sẽ giải quyết vấn đề này?

2.4 Server

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

Server vật lý

Server vật lý — đó là thiết bị, một máy tính riêng biệt với các tài nguyên (vi xử lý, 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. Các server này được cài đặt trong các trung tâm dữ liệu, nơi chúng cung cấp sức mạnh cho việc hosting website, ứng dụng, cơ sở dữ liệu và các dịch vụ khác.

Server ảo

Server ảo — là server mô phỏng bằng phần mềm, hoạt động trong môi trường server vật lý. Nhờ vào công nghệ ảo hóa, một server vật lý có thể được chia thành nhiều server ảo riêng biệt, mỗi cái có hệ điều hành của riêng nó và có thể được khởi động lại và cấu hình độc lập.

Chương trình-server (ví dụ, Nginx)

Chương trình-server, như Nginx, là phần mềm server, được sử dụng để xử lý các yêu cầu tới tài nguyên web. Nginx được biết đến rộng rãi như một web-server, mà cũng có thể thực hiện chức năng proxy-server và reverse proxy-server trong kiến trúc microservices, cũng như là một load balancer.

Server cơ sở dữ liệu

Server cơ sở dữ liệu — là server chuyên dụng, được sử dụng để quản lý cơ sở dữ liệu và xử lý các yêu cầu tới chúng. Nó cung cấp lưu trữ dữ liệu tập trung và xử lý chúng, cung cấp quyền truy cập tới dữ liệu qua mạng. Các server cơ sở dữ liệu hỗ trợ xử lý giao dịch, tìm kiếm và thay đổi dữ liệu, đồng thời đảm bảo độ tin cậy và bảo mật thông tin lưu trữ. Các ví dụ về server cơ sở dữ liệu bao gồm MySQL, PostgreSQL, Oracle Database và Microsoft SQL Server.

Và đâu đó trong trung tâm dữ liệu trên một trong các server ảo sẽ chạy dự án của bạn trên Python và Django. Nó sẽ làm việc với cơ sở dữ liệu, nhận yêu cầu từ NginX, và gửi log hành động của nó tới Splank.

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 của bạn sẽ hạnh phúc. Họ sẽ sử dụng sản phẩm, trả tiền cho nó, và trong trường hợp đó, chủ sở hữu sản phẩm cũng sẽ hạnh phúc. Giá cổ phiếu công ty sẽ tăng, bạn sẽ nhận được tiền thưởng cổ phiếu và cũng sẽ hạnh phúc. Như một vòng xoáy của hạnh phúc trong tự nhiên :)

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