Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bài 1/4: Data format

    🎯 [BÀI VIẾT CHO CỘNG ĐỒNG DEVOPS / NETDEV / AUTOMATION]
    🔍 JSON, XML, YAML – Ba “Ngôn ngữ” Mã Hóa Dữ Liệu Mà Dân DevOps/NetDev Không Thể Không Biết!


    Dù bạn là một Automation Engineer, DevNet-er hay DevSecOps-er chính hiệu, thì một trong những "kỹ năng sống còn" là hiểu cách dữ liệu được định dạng và giao tiếp giữa các hệ thống.

    Trong bài hôm nay, mình sẽ giúp bạn gỡ rối về ba định dạng mã hóa dữ liệu phổ biến nhất: JSON – XML – YAML, và cách chúng liên quan mật thiết đến API, Python và thế giới tự động hóa!
    ✨ Vì sao phải quan tâm?


    Bạn có thể đã từng gõ lệnh CLI qua SSH để cấu hình switch/router. Nhưng với API, bạn cần gửi và nhận dữ liệu có cấu trúc — đó là lúc các định dạng như JSON, XML và YAML phát huy sức mạnh.

    Và đừng lầm tưởng: việc “hiểu cú pháp” chưa đủ, bạn còn cần hiểu serialization/deserialization – tức là "tuần tự hóa và giải tuần tự hóa" dữ liệu – để chuyển dữ liệu Python thành JSON/YAML gửi qua API hoặc parse kết quả trả về để xử lý.
    🧠 Vậy JSON, XML và YAML khác nhau thế nào?


    🔹 JSON
    • Viết tắt: JavaScript Object Notation
    • Dễ đọc, dễ parse trong Python
    • Rất phổ biến trong REST APIs
    • Dùng {}, [], :, " làm cú pháp
    • Gọn nhẹ, chuẩn mực cho web và automation hiện đại

    🔹 XML
    • Viết tắt: eXtensible Markup Language
    • Dùng <tag>, </tag> để bao dữ liệu
    • Rất mạnh mẽ nhưng dài dòng
    • Thường dùng trong các hệ thống cũ, SOAP API, hoặc các thiết bị mạng đời cũ

    🔹 YAML
    • Viết tắt vui: YAML Ain’t Markup Language
    • Dễ đọc nhất với con người
    • Được dùng rất nhiều trong file cấu hình (ansible, docker-compose, k8s)
    • Dựa vào khoảng trắng và dấu :
    • Dễ lỗi nếu không thụt đầu dòng đúng

    🧩 Ví dụ nhanh cho dân kỹ thuật


    JSON


    { "interface": "GigabitEthernet0/1", "ip_address": "192.168.1.1", "enabled": true }



    YAML

    interface: GigabitEthernet0/1 ip_address: 192.168.1.1 enabled: true



    XML

    <interface> <name>GigabitEthernet0/1</name> <ip_address>192.168.1.1</ip_address> <enabled>true</enabled> </interface>

    Bạn thấy không? Cùng một cấu trúc dữ liệu, ba định dạng khác nhau. Tùy vào API mà bạn tương tác, bạn sẽ phải dùng định dạng phù hợp.
    🛠 Vậy serialization/deserialization là gì?


    Hãy tưởng tượng bạn cần cấu hình một router bằng Python và gửi dữ liệu đó qua API:

    ✅ Bạn phải tuần tự hóa (serialize) dữ liệu từ dict Python → JSON/YAML/XML
    ✅ Sau đó thiết bị trả kết quả → bạn giải tuần tự hóa (deserialize) dữ liệu từ JSON về lại dict Python để tiếp tục xử lý

    Đây là thao tác cơ bản nhưng cực kỳ quan trọng với mọi NetDevOps, đặc biệt khi làm việc với các API như RESTCONF, NETCONF, hay dùng thư viện như requests, pyyaml, xmltodict.
    💡 Khi nào dùng định dạng nào?
    • Hệ thống RESTful → JSON
    • Cấu hình hạ tầng tự động hóa (Ansible, Kubernetes) → YAML
    • Thiết bị/ứng dụng cũ, SOAP APIs → XML

    👉 Quan trọng nhất: API yêu cầu định dạng nào thì dùng định dạng đó
    👉 Thứ hai: Bạn rành cái nào thì tối ưu cái đó
    🎯 Tóm lại:
    1. Các định dạng dữ liệu là nền tảng của tự động hóa & API
    2. JSON – hiện đại, dễ dùng, phổ biến nhất
    3. XML – già cỗi nhưng vẫn sống khỏe trong nhiều hệ thống
    4. YAML – ngắn gọn, dễ đọc, cực kỳ hữu dụng trong automation
    5. Nắm chắc serialization/deserialization để làm việc được với API trong Python




    Anh em thấy định dạng nào “hợp gu” với mình nhất? JSON - XML - YAML? Comment nhé!

    #DataEncoding #NetDevOps #Automation101 #PythonForNetwork #RESTAPI #JSONvsYAML #VnProNetCenter #CiscoDevNet #DevOpsViệtNam #NetworkAutomation
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X