6 điểm bởi GN⁺ 2025-04-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Công cụ miễn phí, mã nguồn mở để tự động hóa môi trường phát triển cho phát triển microservice dựa trên Kubernetes
  • Tự động hóa luồng thay đổi mã nguồn → theo dõi tệp → build image → cập nhật triển khai, cho phép khởi động toàn bộ môi trường bằng lệnh tilt up
  • Dù lấy Kubernetes làm trung tâm, công cụ này cũng hỗ trợ workflow dựa trên docker-compose hoặc lệnh cục bộ
  • Được Docker mua lại vào năm 2022, nhưng vẫn được duy trì và phát triển như một dự án mã nguồn mở độc lập
  • Hướng tới mục tiêu quản lý tích hợp môi trường phát triển hiện đại để xử lý sự phức tạp của microservice

Tilt là gì

  • Ứng dụng hiện đại không còn là một binary đơn lẻ, mà là cấu trúc trong đó nhiều service, cơ sở dữ liệu và máy chủ frontend tương tác với nhau qua HTTP
  • Tilt là công cụ môi trường phát triển microservice giúp hiểu và quản lý toàn bộ các thành phần phức tạp đó cùng lúc
  • Tự động hóa toàn bộ quá trình sửa tệp, build image và cập nhật máy chủ để tăng tốc độ phát triển

Đội ngũ nào nên dùng Tilt

  • Phù hợp với các đội ngũ phát triển ứng dụng dựa trên microservice
  • Đặc biệt hữu ích với những nhóm phải mở nhiều cửa sổ terminal để quản lý log máy chủ hoặc thiết lập môi trường phát triển bằng các shell script phức tạp
  • Chỉ với một lệnh tilt up, bất kỳ ai cũng có thể dễ dàng dựng cùng một môi trường phát triển

Vì sao lấy Kubernetes làm trung tâm

  • Kubernetes cung cấp các khối thực thi máy chủ được chuẩn hóa như container, pod và service
  • Khi dùng chuẩn này cả trong môi trường phát triển, có thể giảm khác biệt giữa môi trường vận hành và môi trường phát triển
  • Ngoài Kubernetes, Tilt cũng hỗ trợ docker-compose và lệnh cục bộ, nhưng về lâu dài được kỳ vọng sẽ hội tụ quanh Kubernetes

Quá trình phát triển và tương lai của Tilt

  • Tilt ban đầu là một startup độc lập, nhưng đã được Docker mua lại vào năm 2022
  • Hiện vẫn được duy trì dưới dạng mã nguồn mở và đang được cải thiện với sự liên kết cùng Docker Compose và Docker Desktop
  • Các dự án mới cũng đang được phát triển, nhằm mở rộng ý tưởng của Tilt ra hệ sinh thái nhà phát triển rộng hơn

Ý nghĩa của cái tên

  • "Tilt" được lấy cảm hứng từ câu chuyện Don Quixote lao vào cối xay gió
  • Tên ứng dụng demo là Servantes, nhắc tới Cervantes, tác giả của Don Quixote

1 bình luận

 
GN⁺ 2025-04-29
Ý kiến trên Hacker News
  • Thật thú vị khi thấy chủ đề này ở đây. Tôi đã dùng Tilt vài năm rồi, nhưng có cảm giác tốc độ phát triển của nó chậm lại sau khi được Docker mua lại

    • Tilt giúp tạo môi trường phát triển cục bộ để các dịch vụ chạy giống nhau giữa production, test và development
    • Mã dịch vụ đã được đơn giản hóa đáng kể và chất lượng cũng được cải thiện
    • Đặc biệt cần cải thiện ở phần xử lý CRD (không có cách nào để biểu thị rằng k8s_yaml phụ thuộc vào CRD, nên lệnh tilt up hay bị lỗi)
    • Khi bắt đầu một dự án mới, việc đầu tiên tôi làm là làm cho tilt up chạy được
    • Những thứ tôi đã dùng để thử nghiệm gồm có collector dựa trên eBPF cho bảo mật và observability, pipeline dữ liệu, phát triển Helm chart, Kubernetes controller, v.v.
    • Rất linh hoạt và mạnh mẽ cho nhiều kiểu phát triển khác nhau
  • Cách chào hàng này làm tôi thấy hơi buồn cười

    • Ứng dụng hiện đại được cấu thành từ quá nhiều dịch vụ. Chúng ở khắp nơi và liên tục giao tiếp với nhau
    • Vì thế người ta tạo ra công cụ để giúp tạo thêm nhiều dịch vụ hơn một cách dễ dàng
  • Luôn cần có sự đánh đổi giữa tốc độ và độ chính xác

    • Nếu cố duy trì một môi trường tích hợp cục bộ, nó sẽ trở nên quá chậm và tốn kém
    • Vấn đề không phải ở bản thân Kubernetes, mà là khi số lượng phụ thuộc tăng lên, việc cố chạy một bản sao của cả thế giới trên máy cục bộ sẽ ngày càng chậm
    • Tôi thích môi trường phát triển nhanh và gọn kiểu docker-compose. Nó cho phép mock một số phụ thuộc để giữ tốc độ cao. Khi kiểm thử cục bộ đã qua thì ở các môi trường khác sẽ dùng Kubernetes
  • Tôi nghĩ "môi trường phát triển" thực sự nên cho phép chạy kiểm thử trực tiếp bằng công cụ gốc của ngôn ngữ, ví dụ cargo test, bundle exec rspec, v.v.

    • Nếu phải chạy một VM chạy Kubernetes, rồi VM đó lại chạy container Docker để chạy test, tôi sẽ rất bực
    • Để làm chuyện này đúng cách và đủ tin cậy vẫn còn cần rất nhiều công sức. Nếu mục tiêu là không dùng Docker thì có thể còn cần nhiều công sức hơn nữa (muốn chạy native trên macOS thì điều này là bắt buộc)
    • Có vẻ lĩnh vực này có rất nhiều công cụ. Tôi ước họ đừng gọi chúng là công cụ cho "môi trường phát triển". Nó gần với công cụ "triển khai ứng dụng lên máy cục bộ" hơn
  • Không thể không nhắc đến nix-shell: liên kết nix-shell

  • Nếu muốn xem Tilt trong thực tế, ở kho mã nguồn mở Chroma của chúng tôi, nó được dùng để chạy phiên bản phân tán của cơ sở dữ liệu cho development và CI. Rất hay - chỉ cần clone rồi chạy tilt up là hoạt động

  • Thiết lập môi trường cục bộ chưa bao giờ là vấn đề

    • Triển khai một cluster đơn là rất dễ
    • Vấn đề là các dịch vụ chúng tôi quản lý ở production được triển khai trên nhiều vùng (hoặc nhiều cluster k8s)
    • Vấn đề nằm ở việc debug ứng dụng phân tán
  • Tilt so với skaffold dev như thế nào? Chúng tôi dùng skaffold cho mục đích đó. Dùng để phát triển ngay trong cluster

  • Tôi đã thử Tilt một thời gian ngắn cách đây không lâu. Tôi đã dùng Tilt, Garden, có lẽ cả vài công cụ khác nữa, và cuối cùng chọn DevSpace

    • Nếu tôi nhớ không nhầm, nó phù hợp nhất với hạ tầng production hiện có. Không cần phải viết lại mọi thứ theo cách khác
    • Tức là nó ăn khớp tốt với thiết lập kustomize+k8s sẵn có. Nó bổ sung port forwarding và đồng bộ file nhanh vào container đang chạy. Đó thực sự là tất cả những gì tôi muốn. Tôi ghét việc phải build lại image mỗi lần có thay đổi
  • Về bản chất thì đây chẳng phải là development container sao?