- vừa được xem lúc

Aspire và tất cả những gì bạn cần biết về Cloud Native

0 0 8

Người đăng: Nguyễn Thành

Theo Viblo Asia

Aspire là gì và vì sao nên sử dụng?

Trong quá trình phát triển ứng dụng hiện đại, đặc biệt là các hệ thống microservices hoặc đa dự án, việc cấu hình và kết nối các thành phần trở nên phức tạp, bạn có thể sử dụng Kubernetes nhưng việc config cũng khá khó khăn khi deploy lên môi trường production. Vì thế .NET Aspire – một công cụ hỗ trợ developer trong quá trình phát triển, kiểm thử và vận hành microservice một cách dễ dàng, nhất quán ngay từ môi trường local. .NET Aspire là gì?

.NET Aspire là một giúp bạn:

Quản lý nhiều project, tài nguyên container (như Redis, PostgreSQL, Kafka) trong một ứng dụng phức tạp. Tự động hóa kết nối giữa các dịch vụ (service discovery, connection string, logging, tracing, ...). Dễ dàng config, run multiple projects, và giám sát(obsevarbility) ứng dụng ngay từ giai đoạn phát triển (dev-time). Việc deploy lên azure cũng trở nên dễ dàng hơn khi sử dụng aspire với **azure container app**.

Khác với Kubernetes dùng trong production, Aspire tập trung tối ưu trải nghiệm local development – nơi bạn cần mọi thứ khởi động nhanh, kết nối sẵn sàng và dễ debug.

Cách tạo 1 aspire project và config :

Việc đầu tiên bạn cần đảm bảo đã cài .net aspire

Tạo starter project:

Sau khi tạo xong thì bạn sẽ thấy có 1 web app và 1 class library "Service Default" và "Apphost"

Giải thích:

  • AppHost : App Host là project trung tâm chịu trách nhiệm điều phối (orchestrate) toàn bộ ứng dụng của bạn khi chạy local. Nó không phải là backend, frontend, hay một microservice cụ thể — mà giống như một “nhạc trưởng” quản lý mọi dịch vụ bên trong hệ thống của bạn.
  • ServiceDefault: Đây là extension method được dùng trong từng project (API, gRPC, worker...) để tự động kích hoạt cấu hình mặc định mà .NET Aspire cung cấp. Nó sẽ hỗ trợ Ratelimit, OpenTelemetry, HeathCheck,...

Config Program.cs cho Aspire:

Aspire được integrate với rất nhiều tool, service cloudnative mà bạn có thể xem ở : https://landscape.cncf.io

Default khi tạo dự án thì nó sẽ add Redis cache: var builder = DistributedApplication.CreateBuilder(args); var cache = builder.AddRedis("cache"); builder.AddProject<Projects.ExampleProject>() .WithReference(cache);

Như bạn có thể thấy việc add redis hay bất kì 1 thứ gì rất là đơn giản và để mình ví dụ 1 số cái mà bạn sẽ sử dụng như sau:

  • SecretKey: var apiKey = builder.AddParameter("api-key", secret: true);

  • Database : var server = builder.AddPostgres("postgres").WithLifetime(ContainerLifetime.Persistent).WithPgAdmin(pgAdmin => pgAdmin.WithHostPort(5050));

  • RabbitMq: var rabbitmq = builder.AddRabbitMQ("messaging").WithManagementPlugin();

  • Kafka: var kafka = builder.AddKafka("kafka").WithKafkaUI(kafkaUI => kafkaUI.WithHostPort(9100));

  • ApiGateway: var krakend = builder.AddKrakend("kradend-gateway", "../krakend.json", port: 8080).WithExternalHttpEndpoints();

  • Và rất nhiều thứ khác

Trước đây khi chạy 1 dự án microservice bạn sẽ cần chạy multiple startup project được config trong Visual Studio

Giờ thì chỉ cần : var api = builder .AddProject<Projects.CleanPatternWithCloudNative_Api>("cleanpatternwithcloudnative-api") .WithReference(db).WaitFor(db) .WithReference(redis).WaitFor(redis) .WithReference(statestore) .WithReference(pubsub) .WithReference(secretstore) .WithReference(configstore) .WithReference(cron) .WithDaprSidecar();

Bạn có thể add tất cả project reference vào trong aspire config và start Apphost lên và mọi thứ đã online 😁( nhớ mở docker khi run và sử dụng docker thay vì podman trong window config)

Client

Như ở trên thì mn đã biết là aspire sẽ support service discovery, vì thế nên việc sử dụng cũng khá là đơn giản Ví dụ: Đối với redis ở client bạn chỉ cần install package builder.AddRedisClient(connectionName: "cache");

Sau đó : builder.AddRedisClient(connectionName: "cache");

Ví dụ 2: Kafka dotnet add package Aspire.Confluent.Kafka

builder.AddKafkaProducer<string, string>("messaging");

Trong đó "messaging" sẽ là name mà bạn đã config ở trong aspire apphost.

Rất đơn giản phải ko nào 😂

Deploy - CICD

Azure container app

  1. Cài azd cli
  2. Chạy azd init
  3. azd pipeline config -e <environment name>
  4. azd provision
  5. azd deploy

Kubernetes

Nuget: https://www.nuget.org/packages/aspirate/

Documentation: https://github.com/prom3theu5/aspirational-manifests

Cài aspirate: dotnet tool install --global aspirate --version 0.1.39-preview

Sau đó trong folder AppHost project, run “aspirate init”.

Cấu hình Aspire CLI để build image và generate manifest

Khi bạn chạy Aspire CLI lần đầu tiên để build image và deploy lên Kubernetes, hệ thống sẽ yêu cầu bạn nhập một số cấu hình mặc định:

`Please enter the container registry to use as a fall-back value: docker.io`

Sau khi hoàn tất cấu hình

Một file cấu hình sẽ được tạo trong thư mục AppHost. File này chịu trách nhiệm xác định thông tin build image, tên repository, cấu hình deploy, v.v.

Sau đó chạy aspirate generate

Tất cả yml file sẽ được generate và push qua docker hub

Sau khi xong hết thì tạo env cho k8s xong aspirate apply thôi

Comunity Toolkit

Ngoài những cái Aspire hosting mà microsoft đã support chúng ta thì còn bộ comunity tool kit cũng support nhiều thứ ko kém như : Dapr, Buns, Java, Rust, Ollama, ...

Tổng kết

.NET Aspire không chỉ là công cụ điều phối – mà là một trải nghiệm phát triển hoàn chỉnh, giúp bạn:

Tập trung vào viết code, không lo setup môi trường.

Dễ dàng kết nối, mở rộng, theo dõi nhiều project cùng lúc.

Giảm thiểu thời gian cấu hình – tăng hiệu suất phát triển.

Nếu bạn đang xây dựng distributed system vụ với .NET, hãy thử Aspire ngay hôm nay – bạn sẽ không muốn quay lại cách làm cũ nữa.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Performance Optimization 102: Scalability và câu chuyện về ảo tưởng distributed

Performance, scalability cùng câu chuyện nỗi ám ảnh và những ảo tưởng của một developer về cái gọi là hệ thống distributed. .

0 0 70

- vừa được xem lúc

Microservices là gì?

Chào các bạn, sau một thời gian dài bận bịu với các dự án sử dụng các công nghệ cũ, hoặc các công nghệ do khách hàng chọn lựa từ trước, mình bỗng nhiên ngỡ ngàng khi nghe phong phanh dự án mới sẽ làm

0 0 51

- vừa được xem lúc

Tìm hiểu về Microservices - Phần 1: Microservices là gì?

Hiện nay kiến trúc Microservices đang là chủ đề được cộng đồng Developer vô cùng quan tâm. Bạn có thể tìm thấy khá nhiều tài nguyên giới thiệu và nói về tính chất cũng như lợi ích của Microservices tu

0 0 63

- vừa được xem lúc

Keycloak Secure any application

In life, there are many problems posed to the software industry . But most of the software that we create has a security and decentralization mechanism and user management.

0 0 53

- vừa được xem lúc

Microservices: Những sai lầm và chiến lược chuyển đổi từ Monolith

Thay vì viết một bài hoặc một seri về Microservices, mình nghĩ nên recap luôn những vấn đề, thách thức, khó khăn khi chuyển đổi hệ thống Monolith lên Microservices. Microservices là gì.

0 0 75

- vừa được xem lúc

Tìm hiểu về Service Mesh

Mở đầu. Kiến trúc Microservice ngày càng trở nên phổ biến và trở thành lựa chọn hàng đầu trong quá trình phát triển phần mềm.

0 0 49