2 điểm bởi GN⁺ 2023-09-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết này bàn về việc sử dụng YAML trong công nghệ DevOps.
  • YAML được ca ngợi vì có độ bao phủ kiểm thử 100%, luôn biên dịch không lỗi hay cảnh báo, và luôn ở trạng thái sẵn sàng để phát hành.
  • YAML không ép buộc xử lý lỗi trong quá trình phát triển, điều này có thể dẫn đến các vấn đề lúc chạy trong môi trường production.
  • Tác giả nhắc rằng YAML đã được ngành công nghiệp chấp nhận rộng rãi và đang được sử dụng trong Kubernetes.
  • YAML được xem là chỉ nhỉnh hơn windows.ini một chút và, không giống JSON, có hỗ trợ comment.
  • Bài viết chỉ ra rằng YAML thiếu tài liệu chính thức ngoài đặc tả dành cho người triển khai.
  • YAML được nhấn mạnh như một cách để chạy mã an toàn, đồng thời có đề cập đến các vấn đề bảo mật tiềm ẩn.
  • Tác giả cảnh báo rằng việc dùng YAML có thể dẫn đến những kết quả ngoài dự kiến, chẳng hạn 'NO' bị parse thành kiểu boolean, hoặc các số nguyên lớn tự động bị chuyển thành số bát phân.
  • Bài viết thảo luận một cách hài hước về những thách thức khi dùng YAML, như các vấn đề debug liên quan đến mã hóa thời gian và ký pháp bát phân.
  • Tác giả chia sẻ một tweet bày tỏ sự khó chịu với YAML trong bối cảnh GitHub Actions.
  • Bài viết kết lại bằng một kịch bản giả tưởng trong đó SQL được xây dựng dựa trên YAML.

1 bình luận

 
GN⁺ 2023-09-29
Ý kiến Hacker News
  • Các giả định của YAML về số bát phân và chuỗi có thể dẫn đến kết quả ngoài dự kiến và làm hệ thống bị lỗi.
  • YAML là định dạng dữ liệu để con người có thể đọc và viết, nhưng sẽ phát sinh vấn đề khi được dùng cho logic thay vì dữ liệu đơn thuần.
  • CI/CD thường chứa logic, và điều này không được xử lý lý tưởng trong YAML thuần túy.
  • YAML không nên được sử dụng ngoài hệ sinh thái Python để tránh các vấn đề do khác biệt giữa các định dạng scripting và để duy trì tính nhất quán.
  • Jinja-in-YAML được xem là một anti-pattern do thiếu thiết kế ban đầu cho tính lập trình được.
  • Các lựa chọn thay thế cho YAML gồm có Dhall, Jsonnet và Starlark, một ngôn ngữ không Turing-complete bắt nguồn từ Python.
  • YAML được công nhận về tính dễ đọc, nhưng độ phức tạp khi triển khai trong pipeline CI/CD mới là vấn đề chính.
  • Việc dùng YAML trong hạ tầng dưới dạng mã có thể gây nhầm lẫn và kém hiệu quả, đặc biệt với các lập trình viên không quen thuộc với hạ tầng.
  • BCL được đề xuất như một lựa chọn thay thế tiềm năng cho YAML để định nghĩa tài nguyên theo phong cách Terraform.
  • Trong YAML có thể quan sát thấy hiệu ứng internal platform, khi cấu hình dần mở rộng thành một ngôn ngữ lập trình.
  • Việc đặt dấu ngoặc kép cho mọi literal trong YAML có thể giải quyết nhiều vấn đề thường gặp.
  • EDN (Extensible Data Notation), một tập con của Clojure, được đề xuất như một lựa chọn thay thế cho YAML.
  • YAML hữu ích cho việc chấm điểm và phản hồi trong môi trường giáo dục nhờ tính dễ đọc và sự thuận tiện của cú pháp kiểu Markdown.
  • YAML gây khó khăn khi viết pipeline CI và cấu hình tự động hóa nhà ở.