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

Mô hình sản phẩm

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

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

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

Giờ không ai gọi sản phẩm hiện đại là các 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 đám mây của các trung tâm dữ liệu nơi sản phẩm đó đượ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. Tức là 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 đảm nhận việc giao tiếp với người dùng (là bạn), còn tất cả chức năng quan trọng thì nằm trên server từ xa, 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ể liên hệ với server của một sản phẩm khác. Kết quả là một mạng lưới toàn cầu gồm các client và server, nơi mọi thứ hoạt động cùng nhau.

Vì vậy, mô hình ứng dụng hiện đại có lẽ được mô tả tốt hơn như mô hình Client-Internet-Server. Có quá nhiều giao tiếp phức tạp xảy ra. Đã xuất hiện các "kênh thông minh", tự quyết định gửi yêu cầu của bạn đi đâu và khi nào.

11.2 Clients

Các chương trình client có thể được 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 cho iOS hoặc Android
  • Web-client — trang web/web-app chạy trong trình duyệt
  • Server-client — ứng dụng chạy trên một server khác

Và mỗi loại trong số này có thể chia nhỏ ra. Ví dụ, web-client – là một website hoặc web-app, nghĩa là nó bao gồm Trình duyệt và Trang web, được tải vào trình duyệt. Trình duyệt thì không tất cả đều giống nhau và có thể hoạt động khác nhau.

Nhưng ngay cả khi chúng ta lấy trình duyệt phổ biến nhất, vẫn còn trang web được tải vào trình duyệt đó. Một trang web thường bao gồm ba thành phần:

  • HTML
  • CSS
  • JavaScript

Bạn có thể nói rằng không có gì đơn giản hơn, nhưng giờ đây không ai viết chỉ bằng HTML và JavaScript nữa. Bây giờ để phát triển trang web không chỉ sử dụng các thư viện mà còn cả các framework đầy đủ, như React, Angular hay Vue. Và giờ đây, chúng không còn là trang web nữa, mà là các web-app đầy đủ. Với các build, test và mô hình của riêng chúng.

CSS đơn giản cũng không còn được sử dụng: đã có các CSS preprocessor giúp tạo ra nó, và thậm chí cả các CSS framework. Trời ơi, thậm chí có cả các CSS framework cho email để thư của bạn trông đẹp mắt trong trình duyệt hoặc trong hầu hết các ứng dụng email.

JavaScript cũng không còn được sử dụng: tất cả các web-app lớn đều được viết bằng TypeScript, sau đó được biên dịch thành JavaScript. Bạn hiểu ý tôi rồi đấy...

11.3 Internet và cơ sở hạ tầng

Giao tiếp giữa client và server — tưởng chừng đơn giản nhưng giờ cũng đã thay đổi.

Trước hết, sản phẩm của bạn có khả năng được lưu trữ trong một trong các trung tâm dữ liệu hiện đại. Có 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 bạn. Bất kỳ điều gì bạn muốn chỉ cần trả tiền.

Internet và cơ sở hạ tầng

Server vật lý giờ không còn vật lý nữa. Các trung tâm dữ liệu hiện đại cung cấp cho bạn thuê các server ảo. Đây 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. Điều đó thuận tiện để nâng cấp server. Nếu bạn cần nhiều bộ nhớ hơn, bạn có thể thêm vào server ảo chỉ trong vài phút.

Nhưng cách tiếp cận này cũng đã lỗi thời. Giờ đang là xu hướng chuyển sang cloud — đó là khi sản phẩm của bạn không chỉ được triển khai trên server ảo trong một trung tâm dữ liệu mà còn sử dụng nhiều cơ sở 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ữ backup: đã có cả một cơ sở hạ tầng tiện lợi trong cloud cho việc này. Bạn cần một cơ sở dữ liệu với độ tin cậy 99.9999999%? Đây cũng có. Kafka, RabbitMQ, NoSQL? Tất cả đều đã có và dễ dàng cấu hình. Chỉ cần trả tiền là xong.

Những trung tâm dữ liệu này và cloud đang bắt đầu trở thành một phần của sản phẩm của bạn. Ví dụ, Amazon có nhiều trung tâm dữ liệu trên toàn 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 trên tất cả các trung tâm dữ liệu của Amazon, và người dùng của bạn trên toàn thế giới sẽ nhận được nội dung nhanh hơn.

Hoặc yêu cầu đến API của ứng dụng của bạn có thể được chuyển qua dịch vụ Amazon Gateway API, cho phép cấu hình rất linh hoạt việc làm việc với các dịch vụ của bạn. Có thể phân phối tải trên các dịch vụ khác nhau, phản ánh các cuộc tấn công DDoS, tự động hóa việc tải dữ liệu, cấu hình cache thông minh, và còn rất nhiều thứ khác.

Do đó, giữa ứng dụng client và các dịch vụ của bạn xuất hiện rất nhiều "giao tiếp thông minh", mà có thể và cần được cấu hình. Ngay cả khi bạn không bao giờ làm điều này một cách cá nhân, bạn cũng 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 còn chưa nói đến các chủ đề như router, cột phát sóng 5G, vệ tinh và cáp internet dưới đáy đại dương. Bạn gửi luồng video từ server của bạn cho client, mà nó thì hoạt động không ổn định vì client có kết nối kém và liên tục bị ngắt kết nối. Đoán xem ai sẽ giải quyết vấn đề này?

11.4 Server

Từ server có nghĩa là rất nhiều khái niệm khác nhau, vì vậy sẽ hữu ích cho bạn nếu biết về những khái niệm phổ biến nhất.

Server vật lý

Server vật lý — là một thiết bị, đại diện cho một máy tính riêng biệt với tài nguyên (CPU, bộ nhớ, lưu trữ), được sử dụng để xử lý dữ liệu và đảm bảo hoạt động của 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 các trang web, ứng dụng, cơ sở dữ liệu và các dịch vụ khác.

Server ảo

Server ảo — là một server được giả lập bằng phần mềm, hoạt động trong môi trường của server vật lý. Với 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 server có hệ điều hành riêng 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 đến các tài nguyên web. Nginx được biết đến rộng rãi như một web-server, có thể cũng thực hiện chức năng của một mail server proxy và reverse proxy trong kiến trúc microservices và như một load balancer.

Server cơ sở dữ liệu

Server cơ sở dữ liệu — là một server chuyên dụng, được sử dụng để quản lý và xử lý các yêu cầu đến cơ sở dữ liệu. Nó cung cấp lưu trữ trung tâm cho dữ liệu và xử lý chúng, cung cấp truy cập đến dữ liệu qua mạng. Server cơ sở dữ liệu hỗ trợ việc xử lý giao dịch, tìm kiếm và thay đổi dữ liệu, đảm bảo độ tin cậy và an toàn trong việc lưu trữ thông tin. 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, dự án của bạn sẽ chạy với React và Node.js, làm việc với cơ sở dữ liệu, nhận các yêu cầu từ NginX và gửi log hoạt động của nó vào Splunk.

Nhưng chính nhờ vào mã của bạn, 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à khi đó, chủ sở hữu sản phẩm cũng sẽ hạnh phúc. Cổ phiếu công ty sẽ tăng, bạn sẽ nhận được bonus bằng cổ phiếu, và bạn cũng sẽ hạnh phúc. Thật là một vòng tròn hạnh phúc tự nhiên :)

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