1 điểm bởi GN⁺ 2024-08-10 | 1 bình luận | Chia sẻ qua WhatsApp

Cài đặt cookie và đăng ký bản tin

  • Trang web này sử dụng cookie, pixel tag và local storage cho mục đích hiệu năng, cá nhân hóa và marketing.
  • Chỉ các cookie bắt buộc được bật mặc định.
  • Có thể đăng ký nhận bản tin.

Quá trình Figma di chuyển sang Kubernetes

  • Tác giả: Ian VonSeggern, Quản lý Kỹ thuật Phần mềm tại Figma
  • Chủ đề: Quá trình và lý do Figma di chuyển sang Kubernetes trong vòng 12 tháng

Nền tảng điện toán của Figma

  • Vào đầu năm 2023, công ty đã hoàn tất việc chạy mọi dịch vụ trong container.
  • Sử dụng AWS Elastic Container Service (ECS) để nhanh chóng khởi động các tác vụ đã được container hóa.
  • Về dài hạn, họ bắt đầu cân nhắc phiên bản thế hệ tiếp theo của nền tảng điện toán.

Sự thiếu hụt tính năng của Kubernetes

  • Một số hạn chế của ECS đã tiêu tốn nhiều thời gian kỹ thuật.
  • ECS không có tính năng StatefulSets của Kubernetes, khiến việc chạy cụm etcd trở nên khó khăn.
  • Thiếu hỗ trợ định nghĩa dịch vụ thông qua Helm chart.
  • Khi chạy EC2 trên ECS, việc chấm dứt một máy EC2 đơn lẻ là điều khó khăn.

Tiếp cận hệ sinh thái Cloud Native Computing Foundation

  • Khi dùng ECS, họ không thể tận dụng các công nghệ mã nguồn mở trong hệ sinh thái CNCF.
  • Hệ sinh thái Kubernetes có khả năng autoscaling rất tốt.
  • Cũng cân nhắc khả năng đưa service mesh vào sử dụng.

Ưu điểm của một nền tảng phổ biến

  • Kubernetes đã được nhiều doanh nghiệp lớn sử dụng nên độ ổn định đã được kiểm chứng.
  • Có thể tránh bị khóa vào nhà cung cấp.
  • Dễ tuyển kỹ sư có kinh nghiệm với Kubernetes hơn.

Xác định phạm vi di chuyển

  • Để di chuyển an toàn, họ giảm thiểu các thay đổi đối với hệ thống cốt lõi.
  • Đặt mục tiêu chuyển sang EKS.
  • Đưa một số hạng mục cải tiến vào phạm vi di chuyển.

Các cải tiến được đưa vào quá trình di chuyển

  • Trải nghiệm nhà phát triển: Đơn giản hóa việc định nghĩa dịch vụ và quy trình triển khai.
  • Cải thiện độ tin cậy: Nâng cao độ tin cậy của dịch vụ bằng cách dùng ba cụm EKS.
  • Hiệu quả chi phí: Hỗ trợ autoscaling cho node để giảm chi phí.

Các hạng mục bị loại khỏi phạm vi

  • Loại khỏi phạm vi việc xử lý độ phức tạp của pipeline log.
  • Loại khỏi phạm vi việc autoscaling ở cấp pod.

Thực hiện di chuyển an toàn

  • Load test: Thực hiện load test để hiểu hiệu năng của cụm.
  • Cơ chế rollout dần: Chuyển lưu lượng dần dần bằng cách sử dụng các mục DNS có trọng số.
  • Chạy dịch vụ thực tế: Chạy dịch vụ thực tế trong môi trường staging để phát hiện sớm vấn đề.
  • Giảm thiểu YAML tùy chỉnh: Hạn chế các định nghĩa YAML có thể gây nhầm lẫn cho người dùng.
  • Phối hợp chặt chẽ với chủ sở hữu dịch vụ: Làm việc cùng chủ sở hữu dịch vụ để cập nhật monitoring và cảnh báo.
  • Bố trí nhân sự phù hợp: Thành lập đội ngũ có thể xử lý các vấn đề phát sinh ngoài dự kiến.

Kết quả di chuyển

  • Đến tháng 1 năm 2024, các dịch vụ chính đã được di chuyển sang các cụm EKS.
  • Thu được các lợi ích như giảm chi phí, tăng độ tin cậy và cải thiện trải nghiệm nhà phát triển.

Giai đoạn sau khi phát hành

  • Cải thiện công cụ truy cập của người dùng thông qua suy luận tự động về cụm và vai trò.
  • Lên kế hoạch cho các hạng mục như đơn giản hóa pipeline log, hỗ trợ Horizontal Pod Autoscaling và di chuyển sang bộ xử lý Graviton.

Tóm tắt của GN⁺

  • Figma đã đạt được giảm chi phí, tăng độ tin cậy và cải thiện trải nghiệm nhà phát triển thông qua việc di chuyển từ ECS sang Kubernetes.
  • Tận dụng các công nghệ mã nguồn mở trong hệ sinh thái CNCF để tăng khả năng autoscaling và khả năng đưa service mesh vào sử dụng.
  • Trong quá trình di chuyển, họ đã dùng các phương pháp an toàn như load test, rollout dần và chạy dịch vụ thực tế.
  • Sau khi phát hành, họ cải thiện công cụ truy cập người dùng và lên kế hoạch cho các hạng mục tối ưu hóa bổ sung.

1 bình luận

 
GN⁺ 2024-08-10
Ý kiến Hacker News
  • Có người rất thích k8s

    • Vận hành nhiều cửa hàng thương mại điện tử tùy chỉnh quy mô nhỏ nhưng phức tạp
    • Tự xử lý mọi thứ từ marketing, tài chính đến chăm sóc khách hàng
    • Trước đây dùng máy chủ riêng nhưng việc triển khai là cơn ác mộng
    • Mất một tháng để chuyển sang k8s
    • Đang vận hành 25 dịch vụ khác nhau
    • Có thể gom cấu hình cụm về một chỗ để biết chính xác trạng thái dịch vụ
    • Đã có thể triển khai rolling mà không có downtime
    • Phức tạp, nhưng với tư cách là lập trình viên thì đã quen với sự phức tạp
    • Khi hiểu kiến trúc k8s thì có thể học thêm được nhiều điều
    • Tính sẵn sàng cao (HA) rất hữu ích
    • Chi phí hosting khoảng 400 USD mỗi tháng
  • Việc di chuyển để cải thiện hạ tầng là điều tốt

    • Ngạc nhiên vì không chuyển sang Terraform để dùng Helm chart
    • Dùng Helm chart mà không chỉnh sửa gì thì thiếu nhất quán
    • Helm là công cụ khó bảo trì
    • Viết lại bằng Terraform sẽ tốt hơn
    • Không rõ các vấn đề của Helm đã được giải quyết chưa
  • Ngạc nhiên vì trên HN có nhiều ý kiến phản đối k8s

    • Có lẽ nhiều người bình luận đang dùng các dịch vụ như Heroku, Fly.io, Render.com hoặc là nhà phát triển chạy ứng dụng trên VM
  • Việc quản lý triển khai bằng Terraform và ECS phức tạp quá mức

    • Ngay cả việc thêm biến môi trường cũng phức tạp
    • Có thể hiểu phần sinh template, nhưng nhìn chung vẫn quá rối rắm
  • Hoài nghi về ý kiến cho rằng việc di chuyển sang Kubernetes mất đến vài năm

    • Không hiểu vì sao các công ty lại cố làm những cuộc di chuyển như vậy
    • Tự hỏi điều đó mang lại lợi ích gì cho khách hàng
    • Hoài nghi liệu những quyết định dựa trên ham muốn kỹ thuật có thực sự có ý nghĩa với người dùng hay không
  • Có cảm giác các quyết định ở tổ chức lớn không dựa trên nhu cầu của người dùng hay của công ty

    • Cũng có cảm giác tương tự với bài đăng trước đó của Figma về cơ sở dữ liệu
    • Hoài nghi liệu những quyết định dựa trên ham muốn kỹ thuật có thực sự có ý nghĩa với người dùng hay không
  • Tò mò không biết trong các hệ thống hay dịch vụ hiện đại có điều gì được xem là đáng tự hào khi hoàn tất migration trong vòng 1 năm hay không

  • Thích đọc các báo cáo thực địa

    • Luôn học được điều gì đó mới
    • Cảm ơn vì đã chia sẻ
  • Bài viết này giải thích rõ các lợi ích của Kubernetes

    • Nhiều người chuyển sang Kubernetes mà không biết rõ lợi ích
    • Những lý do được nêu ở đây là hợp lý
  • Tò mò không biết sẽ mất bao lâu để dừng cuộc migration này