Khác biệt giữa cloud và on-premises — shared hosting và phạm vi trách nhiệm

Bài viết này nằm trong khóa Kiến thức nền tảng về CNTT, xây dựng từ đầu những kiến thức CNTT thực tế tối thiểu mà bạn cần để lập trình và vibe coding.
Khác biệt nằm ở chỗ ai sở hữu thiết bị server và bạn tự quản lý đến tầng nào. Hình minh họa cho thấy phạm vi trách nhiệm của ba hình thức và vị trí của AWS, Google Cloud, Azure.

Bài viết này nói về ba hình thức nơi ứng dụng chạy: on-premises, shared hosting và cloud.

Khác biệt gom lại ở một điểm: ai sở hữu thiết bị server, và ai quyết định thứ nằm bên trong nó.

Ở phần cuối, bài viết cũng nói về vị trí của các nhà cung cấp cloud tiêu biểu là AWS, Google Cloud và Azure.

"Chạy ở đâu" chia thành ba hình thức
On-premisesShared hostingCloudThiết bị ởtòa nhà của bạnThiết bị ởnhà cung cấpThiết bị ởnhà cung cấpBạn cũng tự quyếtcấu hìnhNhà cung cấpquyết cấu hìnhBạn tự chọncấu hìnhBạn gánhtoàn bộBắt đầu nhanh vớicấu hình cố địnhChỉ thuê đúnglượng cần
Mỗi hàng là một hình thức. Từ trái sang phải: nơi đặt thiết bị, bên quyết định thứ bên trong, và cách dùng mà nó hợp. Chỉ hàng trên cùng là bạn tự sở hữu thiết bị.

Chỉ on-premises là bạn tự sở hữu thiết bị.

Ba hình thức khác nhau ở chỗ ai sở hữu thiết bị server và ai quyết định cấu hình

Ba hình thức khác nhau ở hai điểm: thiết bị server nằm ở đâu, và ai quyết định cấu hình gồm OS (Operating System. Phần mềm nền tảng nằm giữa thiết bị và chương trình, lo phần file, mạng và màn hình) cùng môi trường chạy.

Tòa nhà của nhà cung cấp nơi đặt thiết bị là trung tâm dữ liệu (data center. Tòa nhà chuyên dụng để đặt và vận hành rất nhiều server),

còn phần được chia ra bên trong đó và chạy như một máy độc lập là server ảo (virtual server. Trong tài liệu hướng dẫn còn được viết là "instance").

Bạn có tự chọn được cấu hình hay không chính là điểm phân định giữa shared hosting và cloud.

Những gì được cấp cho bạn trong trung tâm dữ liệu của nhà cung cấp
Trung tâm dữ liệu của nhà cung cấp
  • Tòa nhà chuyên dụng có nguồn điện, điều hòa và đường truyền
  • Rất nhiều server vật lý giống nhau xếp trong đó
Một server vật lý
Server ảo A (phần của bạn)
  • Chọn OS, khởi động và cài môi trường chạy
  • Đặt app.js và dữ liệu ở đây
Server ảo B (phần của người dùng khác)
  • Chạy độc lập với A
  • Từ A không nhìn thấy được
Còn trống
  • Sẽ dùng cho lượt đăng ký tiếp theo
Khung ngoài là trung tâm dữ liệu, một máy bên trong đó là server vật lý, và các phần chia nhỏ bên trong máy đó là server ảo của từng người dùng.

Bạn chỉ thao tác được với phần của mình; phần bên cạnh và bản thân server vật lý đều không nhìn thấy được.

Một lần đăng ký là bạn khởi động được bao nhiêu máy tùy ý, và dùng xong thì dừng lại.

Giá cũng được tính theo lượng đã dùng và thời gian đã dùng.

Sách nhập môn còn gọi hình thức ai cũng đăng ký được này là public cloud.

Khác biệt là chủ sở hữu thiết bị và người quyết định thứ bên trong

Ba hình thức chỉ khác nhau ở chỗ thiết bị server là của ai và ai quyết định thứ bên trong nó.

Cả thiết bị lẫn thứ bên trong đều là của bạn thì là on-premises, giao cả hai cho nhà cung cấp thì là shared hosting, thiết bị của nhà cung cấp còn cấu hình do bạn chọn thì là cloud.

Phạm vi trách nhiệm — nhà cung cấp quản lý đến tầng nào, và phần của bạn bắt đầu từ đâu

Thứ bạn nhìn vào khi chọn là ai sửa khi có hỏng hóc.

Một server gồm năm tầng: tòa nhà cùng nguồn điện và đường truyền, thiết bị, OS, môi trường chạy, ứng dụng cùng dữ liệu.

Cách hai bên chia nhau quản lý từng tầng là phạm vi trách nhiệm (nhà cung cấp cloud gọi đây là mô hình trách nhiệm chung).

TầngOn-premisesShared hostingServer ảo trên cloud
Ứng dụng và dữ liệuBạnBạnBạn
Môi trường chạyBạnNhà cung cấpBạn
OSBạnNhà cung cấpBạn
Thiết bị serverBạnNhà cung cấpNhà cung cấp
Tòa nhà, nguồn điện và đường truyềnBạnNhà cung cấpNhà cung cấp

Với on-premises, cả năm tầng đều do bạn quản lý; với shared hosting thì chỉ tầng trên cùng.

Với server ảo trên cloud, ranh giới rơi vào giữa thiết bị và OS.

Chỉ ở on-premises thì việc đặt mua linh kiện và thay thế khi thiết bị hỏng mới là việc của bạn.

Với shared hosting và cloud thì nhà cung cấp thay, còn ở cloud bạn chỉ cần khởi động lại trên thiết bị khác là chạy được.

Nhưng việc kiểm tra xem ứng dụng và dữ liệu có chạy như cũ hay không thì ở hình thức nào cũng là việc của bạn.

Những gì bạn cài và quản lý bên trong một server ảo
Một server ảo trên cloud
  • Nhà cung cấp quản lý tòa nhà và thiết bị
  • Nhà cung cấp cũng là bên thay thiết bị hỏng
OS (chọn lúc khởi động)
  • Bạn chọn trong số có sẵn rồi khởi động
  • Cập nhật sau khi khởi động là bạn tự làm
Môi trường chạy và ứng dụng (bạn tự cài và tự đặt)
  • Bạn tự cài node hay python
  • Đặt app.js và dữ liệu ở đây
  • Khi mất thì khôi phục cũng là việc của bạn
Khung ngoài là một máy bạn đã đăng ký, càng vào trong thì càng thuộc phần bạn quản lý. Nhà cung cấp chỉ chuẩn bị tới khung ngoài.

Nhà cung cấp chỉ chuẩn bị tới thiết bị, sau khi bạn chọn OS và khởi động thì phần còn lại là của bạn.

Lỗi của ứng dụng hay mất dữ liệu thì nhà cung cấp không sửa.

Dưới ranh giới là nhà cung cấp, trên ranh giới là bạn

Server gồm năm tầng, nhà cung cấp quản lý phần dưới còn bạn quản lý phần trên.

On-premises thì toàn bộ là của bạn, shared hosting thì chỉ tầng trên cùng là của bạn, server ảo trên cloud thì từ trên thiết bị trở lên là của bạn, và nhà cung cấp chỉ sửa phần dưới ranh giới.

Trên cloud, bạn chọn nơi đặt cho từng thành phần của ứng dụng

Trên cloud không chỉ có server ảo.

Khi bạn chọn managed service (dịch vụ mà nhà cung cấp lo việc cài đặt, cập nhật và xử lý sự cố cho OS và môi trường chạy, còn bạn chỉ cấu hình và sử dụng), ranh giới dịch lên trên.

Mỗi thành phần đặt ở một nơi khác nhau, nên ranh giới của từng thành phần cũng khác nhau.

Nơi đặt từng thành phần đổi, phần việc của bạn cũng đổi
FilefrontendBackendCơ sở dữ liệuDịch vụlưu trữ fileServer ảoCơ sở dữ liệuđược quản lýĐặt lên và cấuhình công khaiChọn OS và càimôi trường chạyChỉ thiết kế bảngvà dữ liệu
Bên trái là các thành phần của my-app, ở giữa là nơi đặt chúng trên cloud, bên phải là phần việc còn lại của bạn. Càng xuống dưới, phần việc của bạn càng ít.

Với dịch vụ lưu trữ file và cơ sở dữ liệu được quản lý, việc quản lý OS và môi trường chạy chuyển sang phía nhà cung cấp.

Chuyển sang cơ sở dữ liệu được quản lý thì việc gì còn lại trong tay bạn
Cập nhật OSCập nhật môi trường chạyThay thiết bị hỏngNhà cung cấplo phần nàyCòn lại cho bạn:bảng và dữ liệu
Ba mục ở trên gom vào giữa, và từ đó chỉ còn một mục đi tiếp xuống dưới. Ba mục đã gom lại thì rời khỏi tay bạn.

Với cơ sở dữ liệu được quản lý, việc bạn làm chỉ là thiết kế bảng và đọc ghi dữ liệu.

Với backend còn có cả nơi đặt kiểu chỉ chạy phần xử lý khi có request tới.

Mọi thứ trong khung đều là thiết bị của nhà cung cấp, bạn không sở hữu thiết bị nào.

Dù vậy, OS và môi trường chạy bên trong server ảo vẫn do bạn tự cài và tự cập nhật.

Chọn nơi đặt thì ranh giới cũng dịch theo

Nơi đặt càng giao nhiều cho nhà cung cấp thì phần việc còn lại của bạn càng ít.

Với cơ sở dữ liệu được quản lý, việc bạn làm chỉ là thiết kế bảng và đọc ghi dữ liệu, còn riêng backend đặt trên server ảo thì từ OS trở lên vẫn thuộc phần bạn quản lý.

AWS, Google Cloud và Azure — các nhóm dịch vụ chung, và lĩnh vực mạnh của từng bên

AWS, Google Cloud và Microsoft Azure là tên các cloud do Amazon, Google và Microsoft vận hành.

Mỗi cái là tên riêng của một công ty, và bên trong chứa rất nhiều dịch vụ.

Đơn vị khu vực địa lý gom các trung tâm dữ liệu lại là region.

Những gì có bên trong một nhà cung cấp cloud
Một nhà cung cấp cloud (ví dụ: AWS)
  • Đặt trung tâm dữ liệu khắp nơi trên thế giới
  • Ở khu vực nào cũng cung cấp cùng những nhóm dịch vụ đó
Region Tokyo
Server ảo
  • Chọn OS, khởi động rồi dùng
Cơ sở dữ liệu được quản lý
  • Chứa bảng và dữ liệu
Lưu trữ file
  • Đặt file lên để công khai hoặc lưu giữ
Region ở khu vực khác
  • Có cùng những nhóm dịch vụ đó
  • Bạn chọn được khu vực gần người dùng ứng dụng
Khung ngoài là một nhà cung cấp, các khung bên trong là region, và các khung bên trong nữa là những nhóm dịch vụ được chuẩn bị ở mọi region.

Chọn region gần người dùng ứng dụng thì thời gian đi và về của request và response ngắn lại.

NhómAWSGoogle CloudMicrosoft Azure
Công ty vận hànhAmazonGoogleMicrosoft
Server ảoAmazon EC2Compute EngineVirtual Machines
Cơ sở dữ liệu được quản lýAmazon RDSCloud SQLAzure SQL Database
Lưu trữ fileAmazon S3Cloud StorageBlob Storage

Nhìn vào cột nhóm bên trái là bạn biết vai trò, kể cả với cái tên lần đầu nhìn thấy.

Điểm chung của ba công ty dừng lại ở các nhóm này.

Dù cùng có đủ các nhóm dịch vụ như nhau, mỗi nhà cung cấp lại xây dựng dày hơn ở những lĩnh vực khác nhau.

Bạn không nhất thiết phải chọn hẳn một công ty.

Dùng nhiều nhà cung cấp, mỗi bên cho một mục đích, là multi-cloud (hình thức dùng nhiều nhà cung cấp cloud theo từng mục đích), và bạn chọn được nhà cung cấp mạnh ở lĩnh vực mà từng thành phần cần.

Có điều, mỗi nhà cung cấp lại có màn hình thao tác và thuật ngữ riêng, nên số thứ phải nhớ và phạm vi phải quản lý đều tăng lên.

Khi ứng dụng còn nhỏ thì gom về một nhà cung cấp, đến khi phát sinh nhu cầu mới tính đến việc chia ra.

Nhóm dịch vụ thì chung, lĩnh vực mạnh thì khác

AWS, Google Cloud và Azure lần lượt là tên các cloud của Amazon, Google và Microsoft, và cả ba đều có những nhóm dịch vụ như nhau: server ảo, cơ sở dữ liệu được quản lý và lưu trữ file.

Vì các nhóm là chung nên chỉ cần nắm một nhà cung cấp là bạn đọc được tên của những bên còn lại bằng cách quy chúng về đúng nhóm, nhưng lĩnh vực mạnh của mỗi bên lại khác nhau, và còn một cách chọn nữa là multi-cloud, dùng nhiều nhà cung cấp theo từng mục đích.

QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1Khi bạn dùng shared hosting, bạn quản lý tầng nào?

Câu 2Khi bạn dùng server ảo trên cloud, ai là người cập nhật OS?

Câu 3Phát biểu nào về AWS, Google Cloud và Microsoft Azure là đúng?