+5

ChatOps tại sao không?

Trong thế giới phát triển phần mềm và vận hành hệ thống hiện đại, hiệu suất làm việc và sự phối hợp giữa các nhóm đang trở thành yếu tố quyết định đến thành công của một tổ chức. Những quy trình thủ công, đòi hỏi nhiều thao tác lặp lại, không chỉ làm giảm hiệu quả mà còn dễ dẫn đến sai sót. Đó là lúc ChatOps xuất hiện như một giải pháp toàn diện để tự động hóa quy trình và cải thiện giao tiếp giữa các nhóm.

Vậy ChatOps là gì? Và nó có hữu ích không? hãy cùng nhau tìm hiểu trong bài viết này nhé.

image.png

ChatOps là gì và tại sao nó quan trọng?

ChatOps là sự kết hợp giữa "Chat" (giao tiếp) và "Ops" (operations - vận hành) nhằm cải thiện hiệu suất làm việc, tăng cường khả năng tương tác giữ các thành viên và tự động quá các quy trình.

  • Ý tưởng chính của ChatOps là đưa công việc trực tiếp vào các kênh giao tiếp của nhóm, nơi các thành viên không chỉ trao đổi thông tin mà còn thực hiện các tác vụ DevOps.

  • Các tác vụ phổ biến như:

    • Hỗ trợ khách hàng
    • Đặt lịch hẹn
    • Trả lời câu hỏi
    • Thu thập dữ liệu
  • Chính nhờ các tác vụ hữu ích như vậy mà ChatOps nắm giữ một vài trò quan trọng trong việc hỗ trợ phát triển cũng như giám sát hệ thống khi gặp sự cố để kịp thời khắc phục.

  • Một số ChatOps phổ biến có thể kể đến như: Hubot, Slack, Microsoft Teams, Mattermost,...

Hệ sinh thái ChatOps

Nhắc đến ChatOps thì không thể nào không nhắc tới hệ sinh thái mà nó mang lại.

Hệ sinh thái này là một tập hợp các công cụ, nền tảng và dịch vụ hỗ trợ việc triển khai ChatOps. Nó bao gồm: các ứng dụng trò chuyện trực tuyến, các công cụ tự động hóa, các dịch vụ đám mây và giải pháp tích hợp chung.

Nền tảng giao tiếp (Communication Platform)

Nền tảng giao tiếp chính là nơi mà mọi thành viên trong nhóm DevOps cùng làm việc, trao đổi. Thay vì phải sử dụng nhiều công cụ khác nhau để giám sát hệ thống, gửi lệnh triển khai, hay nhận thông báo về lỗi, tất cả sẽ được gom lại và gửi về cho đội nhóm phát triển.

Một số ứng dụng trực tuyến phổ biến được sử dụng cho ChatOps: slack, Microsoft Teams, Mattermost, Discord,...

Tự động hóa quy trình

Các hệ thống ChatOps thường tích hợp với các công cụ CI/CD để tự động hóa việc build, test, và triển khai mã nguồn nhằm giảm công sức trong việc triển khai, đảm bảo code luôn trong trạng thái sẵn sàng hoạt động.

Một số công cụ CI/CD phổ biến như: Jenkins, GitHub Actions, GitLab CI,...

image.png

Dịch vụ đám mây

Giúp lưu trữ dữ liệu, ứng dụng để sử dụng một cách linh hoạt cũng như dễ dàng mở rông.

Một số dịch vụ phổ biến như: Amazon Web Services, Microsoft Azure và Google Cloud Platform,...

Công cụ giám sát và cảnh báo

Giúp giám sát tình trạng của các hệ thống và gửi thông báo đến nhóm xử lý như hệ thông downtime, CPU cao, Apdex thấp,...

Lợi ích

  • Kết nối tất cả công cụ trong một nơi duy nhất: từ CI/CD đến giám sát hệ thống, được tích hợp và vận hành trong cùng một nền tảng giao tiếp. Điều này giúp giảm bớt thời gian chuyển đổi giữa các giao diện và cải thiện hiệu suất làm việc.
  • Tự động hóa quy trình: Các tác vụ như triển khai, giám sát, hoặc xử lý sự cố được tự động hóa thông qua bot và script, giảm thiểu lỗi do thao tác thủ công.
  • Quản lý công việc hiệu quả: cung cấp một trung tâm duy nhất để quản lý công việc, giúp theo dõi công việc, nhiệm vụ, báo cáo dễ dàng.

Rủi do đi kèm

  • Tất nhiên ChatOps cũng không phải không có rủi do, việc làm dụng nó một cách bừa bãi cũng có thể dẫn đến việc lộ thông tin dự án, truy cập trái phép,... nếu bảo mật không tốt.
  • Thêm nữa là quy trình triển khai cần rõ ràng, các lệnh và workflow cần được định nghĩa tường minh để tránh dẫn tới sai sót.
  • Cuối cùng ChatOps được tích hợp cho nhiều ứng dụng nên có thể gặp tình trạng chậm trễ hoặc treo hệ thống.

Triển khai

Setup

Slack

  • Tạo workspace:
    • Truy Cập https://slack.com/ -> Create a new workspace -> login -> Tạo mới/chọn workspace của bạn.
  • Tạo Bot:
    • Truy cập https://api.slack.com/apps -> create new app -> From sratch -> điền tên + chọn workspace -> OAuth & Permissions -> Tạo Slash Commands, Event Subscriptions hướng dẫn -> Install App

abcc.png

Giao diện của app

Bot

// cài đặt app
mkdir first-bolt-app && cd first-bolt-app
npm init
npm i @slack/bolt
npm i dotenv

// tạo file .env and index.js
touch .env && touch index.js

Thêm env

SLACK_SIGNING_SECRET=
SLACK_BOT_TOKEN=
SLACK_APP_TOKEN=
require('dotenv').config()
const { App } = require('@slack/bolt');

// Initializes your app with your bot token and signing secret
const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  port: process.env.POST || 3000,
});

app.command('/hello', async ({ command, respond }) => {
    await respond(`Hey there <@${command.user_name}>!`);
});

app.message('hello', async ({ message, say }) => {
    await say(`xin chao ${message.user}!`);
});

(async () => {
  // Start your app
  await app.start();

  app.logger.info('⚡️ Bolt app is running!');
})();
node index.js

// sau đó public app
ssh -R 80:localhost:3000 localhost.run

Thành quả

peek_2.gif

kết luận

Tại sao bạn không tự xây dựng một con bot để giúp công việc trở nên thuận lợi, không bị miss thông báo hay tự thông kê số lượng task, thông báo khi server có vấn đề để kịp thời xử lý,...


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí