see more blog

Kiến trúc Cloud Native và các đặc điểm của ứng dụng Cloud Native (Phần 2)

kien-truc-cloud-native-va-cac-dac-diem-cua-ung-dung-cloud-native-phan-2-1

4. Các công cụ DevOps cho kiến trúc Cloud Native trên AWS

DevOps hỗ trợ cho kiến trúc Cloud Native bằng cách cung cấp một phương pháp phân phối phần mềm (a success-driven software delivery approach) kết hợp với tốc độ, sự nhanh nhạy và khả năng kiểm soát. AWS tăng cường cách tiếp cận này bằng cách cung cấp các công cụ cần thiết. Dưới đây là một vài công cụ chính do AWS cung cấp để áp dụng kiến trúc Cloud Native.

Docker và kiến trúc vi dịch vụ (microservices architecture)

Docker là nền tảng bộ chứa hóa (containerization platform) phổ biến nhất cho phép các doanh nghiệp gói gọn những ứng dụng của họ với tất cả tài nguyên cần thiết như mã nguồn, các phần phụ thuộc và thư viện. Bộ công cụ container nguồn mở này thuận tiện cho việc tự động hóa và kiểm soát các tác vụ, triển khai và quản lý các container bằng cách sử dụng những lệnh và API đơn giản.

Các container có trọng lượng nhẹ, tối ưu hóa việc sử dụng tài nguyên và tăng năng suất cho nhà phát triển. Docker phổ biến vì nó tạo điều kiện cho sự dịch chuyển liền mạch của các container trên các nền tảng và môi trường khác nhau. Các container của họ có trọng lượng nhẹ và có thể tái sử dụng. Docker mang tính năng tạo vùng chứa tự động, tự động xây dựng và triển khai các container dựa trên mã nguồn, tạo ra các phiên bản để cho phép bạn quay lại nếu cần. Docker cung cấp một thư viện chia sẻ khổng lồ với các container được xây dựng bởi nhiều người dùng đa dạng cho các nhà phát triển.

Kiến trúc vi dịch vụ là một mô hình phát triển phần mềm đòi hỏi việc xây dựng một ứng dụng là tập hợp của các dịch vụ nhỏ, được kết nối lỏng lẻo và có thể triển khai độc lập, giao tiếp với các dịch vụ khác thông qua APIs. Như vậy, bạn có thể xây dựng và triển khai từng quy trình một cách độc lập mà không cần phụ thuộc vào các dịch vụ khác, giúp mọi dịch vụ trở nên tự chủ. Mô hình này cho phép bạn xây dựng từng dịch vụ cho một mục đích cụ thể. Nó đem lại sự nhanh nhẹn và tốc độ phát triển, đồng thời tạo điều kiện hợp tác liền mạch giữa các nhóm khác nhau. Bạn có thể tận hưởng sự linh hoạt trong việc mở rộng các tài nguyên cần thiết thay vì mở rộng toàn bộ ứng dụng. Mã này cũng có thể được tái sử dụng.

Amazon Elastic Container Service (ECS)

Amazon Elastic Container Service (ECS) là một công cụ điều phối container mạnh mẽ để quản lý một nhóm các instance Amazon EC2. ECS tận dụng công nghệ phi máy chủ (serverless) của AWS Fargate để tự quản lý các tác vụ container hóa, có nghĩa là bạn có thể xây dựng và triển khai nhanh chóng các ứng dụng thay vì dành thời gian cho các bản vá, cấu hình và chính sách bảo mật. ECS dễ dàng tích hợp với các công cụ phổ biến như CI/CD cũng như với các giải pháp công cụ và quản lý AWS Native. Bạn chỉ cần trả tiền cho các tài nguyên được sử dụng.

Một ưu điểm của Amazon ECS đó là nó tạo ra kế hoạch mở rộng quy mô nếu như bạn cung cấp năng lực mục tiêu, điều đó cho phép bạn quản lý các tác vụ mở rộng tốt hơn. Với Amazon CloudWatch, bạn có thể thu thập các thông tin chi tiết về container. Nó cũng hỗ trợ các công cụ của bên thứ 3 như Prometheus và Grafana. ECS dễ dàng sử dụng mà không cần sự thành thạo, giảm thiểu chi phí để tối ưu hóa chi phí. Amazon ECS được tích hợp sâu với IAM và mang lại khả năng bảo mật cao hơn. Nếu bạn chủ yếu làm việc với môi trường AWS cloud, ECS là một lựa chọn tốt vì nó tích hợp với các dịch vụ Amazon khác.

Amazon Kubernetes Service (Amazon EKS)

Amazon Kubernetes Service (EKS) là một công cụ điều phối container hóa cho các ứng dụng container được quản lý bởi Kubernetes trên AWS cloud. EKS sử dụng phần mềm Kubernetes nguồn mở, có nghĩa là bạn có nhiều khả năng mở rộng hơn để quản lý môi trường container so với Amazon ECS. Một ưu điểm khác của EKS là nó đi với một loạt các công cụ quản lý container. Ví dụ, Helm và Istio giúp bạn tạo các mẫu để triển khai, trong khi Prometheus, Jaeger và Grafana giúp bạn thu thập các thông tin chi tiết về container. Ngoài ra, Jet-stack còn đóng vai trò như một nhà quản lý chứng nhận. Nó cũng cung cấp một số lưới dịch vụ khác – thứ mà bạn không thể có được với ECS. EKS cũng hoạt động với Fargate và CloudWatch.

Amazon Fargate

Amazon Fargate là một công cụ phổ biến của AWS, cho phép quản trị viên chạy các cụm container trên cloud mà không phải lo lắng về việc quản lý cơ sở hạ tầng bên dưới. Fargate hoạt động cùng với ECS và tách các container từ cơ sở hạ tầng bên dưới, cho phép người dùng quản lý các container trong khi Fargate quản lý cụm bên dưới. Các nhà phát triển chỉ định các chính sách và thông số truy cập trong khi gói một ứng dụng vào một container, Fargate chọn nó và quản lý môi trường. Hơn nữa, Fartage quan tâm đến các yêu cầu mở rộng quy mô. Bạn có thể chạy đồng thời hàng ngàn container để dễ dàng quản lý các ứng dụng quan trọng. Phí Fartage dựa trên tài nguyên bộ nhớ và vCPU được sử dụng cho mỗi ứng dụng container. Nó dễ sử dụng và được cung cấp bảo mật tốt hơn nhưng ít tùy biến và bị giới hạn bởi tính khả dụng khu vực.

Để sử dụng Fartage, hãy tạo một container và lưu trữ nó trong một đăng ký DockerHub hoặc ECR. Sau đó, chọn một dịch vụ điều phối container như ECS hoặc EKS và tạo một cụm chọn Fartage. Nếu môi trường của bạn yêu cầu bộ nhớ cao, tài nguyên máy tính và đòi hỏi hiệu suất, Fartage là một lựa chọn tốt.

Serverless Computing

Serverless Computing là một mô hình cloud-native, trong đó các nhà phát triển có thể viết code và triển khai ứng dụng mà không cần phải quản lý các server. Vì các server được tóm gọn từ ứng dụng, nhà cung cấp cloud xử lý việc lưu trữ, mở rộng và quản lý cơ sở hạ tầng máy chủ. Điều đó có nghĩa là các nhà phát triển có thể dễ dàng xây dựng các ứng dụng và triển khai chúng bằng cách sử dụng các container. Ở kiến trúc này, tài nguyên cho các ứng dụng chỉ được khởi chạy khi code đang được thực thi. Khi một ứng dụng được chạy, một sự kiện sẽ được kích hoạt và cơ sở hạ tầng bắt buộc sẽ tự động được cung cấp và kết thúc sau khi mã ngừng chạy. Điều này có nghĩa là người dùng chỉ phải trả tiền khi code đang được thực thi.

AWS Lambda

AWS Lambda là một công cụ tính toán không máy chủ phổ biến, cho phép bạn chạy code mà không cần máy chủ quản lý. Lambda cho phép các nhà phát triển tải code lên dưới dạng một hình ảnh container và tự động cung cấp ngăn xếp trên một mô hình sự kiện. Lambda cho phép bạn chạy mã code ứng dụng song song và chia tỷ lệ tài nguyên riêng lẻ cho mỗi trình kích hoạt. Vì vậy, việc sử dụng tài nguyên được tối ưu hóa hết sức và gánh nặng quản trị trở thành con số 0.

AWS có thể được sử dụng để xử lý dữ liệu và tệp theo thời gian thực. Ví dụ, bạn có thể viết một hàm kích hoạt một sự kiện khi có sự thay đổi về dữ liệu hoặc trạng thái môi trường. Cùng với Amazon Kinesis, Lambda đảm nhận các hoạt động ứng dụng. Sử dụng Lambda, các nhà phát triển có thể xây dựng các backend di động phi máy chủ và backend IoT, trong đó Amazon API Gateway thực hiện xác thực các yêu cầu API. Lambda có thể kết hợp với các dịch vụ AWS khác để xây dựng ứng dụng web có thể được triển khai trên nhiều địa điểm.

5. Các công cụ AWS DevOps cho kiến trúc Cloud Native

 

6. Sơ đồ kiến trúc Cloud Native

Dưới đây là một ví dụ về sơ đồ kiến trúc Cloud Native:

Nó hoạt động như thế nào?

Người dùng bên ngoài

  1. Người dùng bên ngoài yêu cầu quyền truy cập vào tài nguyên cloud thông qua máy chủ Amazon Route 53 DNS Web.
  2. Yêu cầu sẽ được gửi tới dịch vụ Amazon CloudFront Delivery Network (CDN)
  3. Như được mô tả trong sơ đồ kiến trúc Cloud Native, Amazon Cognito, một dịch vụ đăng nhập xác thực thông tin đăng nhập của người dùng.
  4. Dữ liệu người dùng cũng được gửi tới phân tích clickstream, được hỗ trợ bởi công nghệ phi máy chủ của Amazon Kinesis và AWS Lambda. Dữ liệu đã xử lý được lưu trữ trong dịch vụ Amazon S3.
  5. Lưu lượng được gửi tới VPC thông qua cổng internet.
  6. Bộ cân bằng tải mạng (network load balancer) sẽ định tuyến lưu lượng đến các máy chủ có sẵn. 
  7. Người dùng bên ngoài có thể truy cập dịch vụ API/ứng dụng được hỗ trợ bởi công nghệ Fargate như đã thấy trong sơ đồ kiến trúc Cloud Native.

Vai trò của nhóm Phát triển/Vận hành trong sơ đồ kiến trúc Cloud Native

  1. Nhóm phát triển và vận hành sử dụng AWS CodePipeline.
  2. Họ viết code và cam kết với các kho lưu trữ Git riêng được quản lý bởi dịch vụ AWS CodeCommit.
  3. Dịch vụ tương tác liên tục AWS CodeBuild (AWS CodeBuild continuous interaction service) lấy mã và biên soạn nó thành các gói phần mềm có thể triển khai.
  4. Phần mềm được lưu trữ vào containers sử dụng mẫu CloudFormation được tải lên Amazon Elastic Container Registry.
  5. Các container được triển khai thành môi trường sản xuất do Fargate cung cấp.
  6. Amazon S3 Glacier được sử dụng cho mục đích lưu trữ trong sơ đồ kiến trúc Cloud Native.
  7. Amazon ElastiCache dành cho Redis được sử dụng để lưu trữ trong bộ nhớ và bộ nhớ đệm cho các máy chủ chính và phụ.
  8. Amazon RDS hoặc Amazon Aurora tương thích với PostgreSQL và MySQL được sử dụng cho các dịch vụ cơ sở dữ liệu quan hệ trong sơ đồ kiến trúc Cloud Native.
  9. Amazon CloudWatch có thể được sử dụng để giám sát ứng dụng và cơ sở hạ tầng.

Cung cấp tài nguyên AWS bằng CloudFormation và Fargate

CloudFormation là một công cụ IaC mạnh mẽ để cung cấp và quản lý tài nguyên trên AWS. Fargate là một công cụ tính toán không máy chủ xử lý việc cung cấp cơ sở hạ tầng bên dưới cho các tài nguyên AWS. CloudFormation và công nghệ Fargate giúp bạn triển khai và quản lý liên tục các tài nguyên trong AWS cloud.

Dưới đây là cách bạn có thể tự động quản lý cơ sở hạ tầng của mình với CloudFormation

  1. Quản trị viên DevOps tạo hồ sơ Fargate dưới dạng tệp JSON bằng cách sử dụng mẫu Cloudformation với tên cụm EKS hợp lệ, ID logic của tài nguyên hồ sơ, v.v.
  2. Quản trị viên ủy thác hồ sơ vào hệ thống lưu trữ AWS CodeCommit.
  3. Khi một thay đổi được phát hiện trong kho mẫu CloudFormation, AWS CodePipeline sẽ được kích hoạt, các tác vụ được thực thi sau đó cấu hình được đẩy sang triển khai.
  4. Stack được khởi chạy và dịch vụ EKS được cập nhật về những thay đổi đối đến cơ sở hạ tầng.

Sử dụng CloudFormation và Fargate, các tổ chức có thể tự động tạo và quản lý môi trường mới trong quá trình sản xuất và phát triển.

7. Kết luận

Trong thế giới công nghệ thay đổi nhanh chóng từng ngày, kiến trúc Cloud Native không còn là một lựa chọn mà trở nên thiết yếu. Sự thay đổi là điều duy nhất bất biến trong cloud, điều đó có nghĩa là môi trường phát triển phần mềm của bạn phải đủ linh hoạt để nhanh chóng thích ứng với các công nghệ và phương pháp luận mới mà không làm ảnh hưởng tới việc kinh doanh. Kiến trúc Cloud Native cung cấp môi trường thích hợp để phát triển ứng dụng bằng cách sử dụng các công cụ, công nghệ và quy trình phù hợp. Chìa khóa để tận dụng triệt để cuộc cách mạng đám mây là thiết kế kiến trúc đám mây phù hợp với yêu cầu phát triển phần mềm của bạn. Hãy thực hiện triển khai tự động hóa ở các khu vực phù hợp, tận dụng tối đa các dịch vụ được quản lý, kết hợp các phương pháp tốt nhất của DevOps và áp dụng các mẫu kiến trúc Cloud Native tối ưu.

8. Các câu hỏi thường gặp

Sự khác biệt giữa cloud-native và cloud-enabled là gì?

Các sản phẩm hoặc ứng dụng cloud-native  được tạo ra bằng cách sử dụng kiến trúc Cloud Native. Nói một cách đơn giản, chúng được sinh ra trên đám mây. Ngược lại, các sản phẩm cloud-enabled được xây dựng bằng các phương pháp truyền thống và được chuyển sang đám mây.

Công cụ điều phối container tốt nhất cho kiến trúc Cloud Native là gì?

Kubernetes là công ty dẫn đầu trong phân khúc điều phối container. Một số công cụ khác trong phân khúc này bao gồm Docker Swarm, Nomad và Apache Mesos.

Cloud Native Computing Foundation (CNCF) là gì?

Cloud Native Computing Foundation (CNCF) là một công ty con của nền tảng Linux được thành lập vào năm 2015. Nền tảng phần mềm nguồn mở này bao gồm một cộng đồng nhà phát triển bất khả tri, cộng tác trong các dự án nguồn mở. Bằng cách tự chủ hóa các mẫu kiến trúc Cloud Native, CNCF giúp tất cả mọi người có thể truy cập vào chúng. Microsoft, AWS, Google, Oracle và SAP là một số thành viên chính của CNCF.

Sự khác biệt giữa Cloud-First và Cloud-Only là gì?

Thông thường, các thuật ngữ “cloud-first” và “cloud-only” được sử dụng thay thế cho nhau. Tuy nhiên, chúng không giống nhau. Chiến lược cloud-first là ưu tiên công nghệ đám mây trong khi triển khai cơ sở hạ tầng hoặc nền tảng CNTT mới. Chiến lược cloud-only là chuyển tất cả các hệ thống và dịch vụ sang một kiến trúc riêng trên đám mây.

Về VTI Cloud

VTI Cloud là Đối tác cấp cao (Advanced Consulting Partner) của AWS, với đội ngũ hơn 50+ kỹ sư về giải pháp được chứng nhận bởi AWS. Với mong muốn hỗ trợ khách hàng trong hành trình chuyển đổi số và dịch chuyển lên đám mây AWS, VTI Cloud tự hào là đơn vị tiên phong trong việc tư vấn giải pháp, phát triển phần mềm và triển khai hạ tầng AWS cho khách hàng tại Việt Nam và Nhật Bản.

Xây dựng các kiến trúc an toàn, hiệu suất cao, linh hoạt, và tối ưu chi phí cho khách hàng là nhiệm vụ hàng đầu của VTI Cloud trong sứ mệnh công nghệ hóa doanh nghiệp.

Liên hệ với chúng tôi: Tại đây

Nguồn: William từ clickittech.com

Related news

what’s up at VTI