Bây giờ chúng ta đã có ý tưởng cơ bản về cách một cơ sở hạ tầng ứng dụng có thể được tổ chức, điều tiếp theo cần nghĩ đến là nơi chúng ta sẽ đặt tất cả những thứ này.
Như chúng ta sẽ thấy, chủ yếu có ba tùy chọn khi quyết định vị trí và cách lưu trữ một ứng dụng: tại chỗ (on premise), trên các nhà cung cấp máy chủ truyền thống (on traditional server providers) hoặc trên đám mây (on the cloud).
1. Lưu trữ tại chỗ (On-Premise Hosting)
Tại chỗ có nghĩa là bạn sở hữu phần cứng mà ứng dụng của bạn đang chạy. Trong quá khứ, đây từng là cách lưu trữ ứng dụng truyền thống nhất. Các công ty đã từng có các phòng dành riêng cho máy chủ và các đội dành riêng cho việc thiết lập và bảo trì phần cứng.
Ưu điểm của tùy chọn này là công ty có toàn quyền kiểm soát phần cứng. Bất tiện là nó đòi hỏi không gian, thời gian và tiền bạc.
Hãy tưởng tượng nếu bạn muốn mở rộng quy mô theo chiều ngang của một máy chủ nhất định, điều đó có nghĩa là mua thêm thiết bị, thiết lập nó, giám sát nó liên tục, sửa chữa bất cứ thứ gì bị hỏng … Và nếu sau này bạn cần phải thu nhỏ máy chủ đó, thì, bình thường là bạn không thể trả lại những thứ này sau khi mua chúng.
Đối với hầu hết các công ty, có máy chủ tiền đề có nghĩa là dành nhiều tài nguyên cho một nhiệm vụ không liên quan trực tiếp đến mục tiêu của công ty.
Một tình huống mà lưu trữ tại chỗ vẫn có ý nghĩa là khi xử lý thông tin rất tế nhị hoặc riêng tư. Ví dụ, hãy nghĩ về phần mềm vận hành một nhà máy điện hoặc thông tin ngân hàng tư nhân. Nhiều tổ chức trong số này quyết định lưu trữ trên các máy chủ riêng như một cách để có toàn quyền kiểm soát phần mềm và phần cứng của họ.
2. Nhà cung cấp máy chủ truyền thống (Traditional Server Providers)
Một lựa chọn thoải mái hơn cho hầu hết các công ty là các nhà cung cấp máy chủ truyền thống. Đây là những công ty có máy chủ của riêng họ và họ cho thuê chúng. Bạn quyết định loại phần cứng nào bạn sẽ cần cho dự án của mình và trả một khoản phí hàng tháng cho nó (hoặc một số khoản dựa trên các điều kiện khác).
Điều tuyệt vời của tùy chọn này là bạn không cần phải lo lắng về bất cứ điều gì liên quan đến phần cứng nữa. Nhà cung cấp sẽ chăm sóc nó, và là một công ty phần mềm, bạn chỉ lo lắng về mục tiêu chính của mình, phần mềm.
Một điều thú vị nữa là việc mở rộng quy mô hoặc thu nhỏ rất dễ dàng và không có rủi ro. Nếu bạn cần thêm phần cứng, bạn phải trả tiền cho nó. Và nếu bạn không cần nó nữa, bạn chỉ cần ngừng thanh toán.
3. Lưu trữ trên đám mây (Hosting on the Cloud)
Nếu bạn đã tìm hiểu về công nghệ một thời gian, chắc chắn bạn đã nghe từ “đám mây” hơn một lần. Thoạt nghe, nó có vẻ là một thứ gì đó trừu tượng và kỳ diệu, nhưng thực sự những gì đằng sau nó không gì khác chính là những trung tâm dữ liệu khổng lồ thuộc sở hữu của các công ty như Amazon, Google và Microsoft.
Tại một thời điểm nào đó, các công ty này phát hiện ra rằng họ có sức mạnh tính toán tuyệt vời mà họ không sử dụng mọi lúc. Và vì tất cả phần cứng này vẫn phải trả phí cho dù bạn có đang sử dụng nó hay không, điều thông minh cần làm là thương mại hóa sức mạnh tính toán đó cho những người khác.
Và điện toán đám mây là như vậy. Sử dụng các dịch vụ khác nhau như AWS (các dịch vụ web của Amazon), Google Cloud hoặc Microsoft Azure, chúng ta có thể lưu trữ các ứng dụng của mình trong các trung tâm dữ liệu của các công ty này và tận dụng tất cả sức mạnh tính toán đó.
Khi tìm hiểu các dịch vụ đám mây, điều quan trọng cần lưu ý là có nhiều cách khác nhau mà bạn có thể sử dụng chúng:
Truyền thống (Traditional)
Cách đầu tiên là sử dụng chúng theo cách tương tự như cách bạn sử dụng nhà cung cấp máy chủ truyền thống. Bạn chọn loại phần cứng bạn muốn và thanh toán chính xác cho loại phần cứng đó hàng tháng.
Co giãn (Elastic)
Cách thứ hai là tận dụng lợi thế của tính toán “co giãn” được cung cấp bởi hầu hết các nhà cung cấp. “Co giãn” có nghĩa là dung lượng phần cứng của ứng dụng của bạn sẽ tự động tăng hoặc giảm tùy thuộc vào mức độ sử dụng ứng dụng của bạn.
Ví dụ: bạn có thể bắt đầu với một máy chủ có RAM 8gb và dung lượng đĩa 500gb. Nếu máy chủ của bạn bắt đầu nhận được ngày càng nhiều yêu cầu và những dung lượng này không còn đủ để cung cấp hiệu suất tốt, hệ thống có thể tự động thực hiện mở rộng theo chiều dọc hoặc ngang.
Điều tuyệt vời về điều này là bạn có thể cấu hình tất cả những điều này trước và không phải lo lắng về nó sau đó. Khi các máy chủ tự động tăng và giảm quy mô, bạn chỉ trả tiền cho các tài nguyên mà bạn sử dụng.
Không máy chủ (Serverless)
Một cách khác mà bạn có thể sử dụng điện toán đám mây là sử dụng kiến trúc không máy chủ.
Theo mô hình này, bạn sẽ không có một máy chủ nhận tất cả các yêu cầu và phản hồi chúng. Thay vào đó, bạn sẽ có các hà, chức năng riêng lẻ được ánh xạ tới một điểm truy cập (tương tự như một điểm cuối API).
Các hàm này sẽ thực thi mỗi khi chúng nhận được yêu cầu và thực hiện bất kỳ hành động nào mà bạn đã lập trình cho chúng (kết nối với cơ sở dữ liệu, thực hiện các hoạt động CRUD hoặc bất cứ điều gì khác mà bạn có thể làm trong một máy chủ thông thường).
Điều rất hay về kiến trúc serverless là bạn không cần quan tâm về bảo trì và mở rộng máy chủ. Bạn chỉ có các hàm chức năng được thực thi khi bạn cần, và mỗi hàm sẽ được tự động tăng và giảm quy mô khi cần thiết.
Với tư cách là khách hàng, bạn chỉ phải trả cho số lần hàm được thực thi và lượng thời gian xử lý mỗi lần thực thi kéo dài.
Các dịch vụ khác
Bên cạnh các dịch vụ liên quan đến máy chủ, các nhà cung cấp đám mây cung cấp rất nhiều giải pháp khác như cơ sở dữ liệu quan hệ và không quan hệ, dịch vụ lưu trữ tệp, dịch vụ bộ nhớ đệm, dịch vụ xác thực, dịch vụ học máy và xử lý dữ liệu, giám sát và phân tích hiệu suất, v.v. Với mọi thứ được lưu trữ trên đám mây.
Thông qua các công cụ như Terraform hoặc AWS Cloud, chúng ta thậm chí có thể thiết lập cơ sở hạ tầng của mình dưới dạng mã, nghĩa là, chúng ta có thể viết một tập lệnh thiết lập máy chủ, cơ sở dữ liệu và bất cứ thứ gì khác mà chúng ta có thể cần trên đám mây chỉ trong vài phút.
Điều này thật tuyệt vời từ quan điểm kỹ thuật và thực sự thuận tiện cho chúng ta với tư cách là nhà phát triển. Điện toán đám mây ngày nay cung cấp một bộ giải pháp rất hoàn chỉnh có thể dễ dàng thích ứng từ các dự án nhỏ bé cho đến các sản phẩm kỹ thuật số lớn nhất trên trái đất. Đây là lý do tại sao ngày càng có nhiều dự án phần mềm chọn lưu trữ cơ sở hạ tầng của họ trên đám mây.
Như đã đề cập trước đây, các nhà cung cấp đám mây được sử dụng nhiều nhất và nổi tiếng là AWS, Google Cloud và Azure. Mặc dù cũng có các tùy chọn khác như IBM, DigitalOcean và Oracle.
Hầu hết các nhà cung cấp này cung cấp cùng một loại dịch vụ, mặc dù chúng có thể có các tên khác nhau. Ví dụ: các chức năng không máy chủ được gọi là “lambdas” trên AWS và “cloud functions” trên đám mây của Google.