SRE là gì? SRE và DevOps khác nhau như thế nào?
Site reliability engineer (SRE) là một khái niệm không quá phổ biến ở Việt Nam, kể cả với những anh em làm lập trình, kỹ sư hay làm việc với hệ thống công nghệ thông tin. Thực tế thì vai trò của SRE thường thể hiện nhiều hơn trong các tổ chức có sản phẩm cần vận hành trên một hệ thống lớn, đòi hỏi sự ổn định cao. Đối với các công ty có quy mô vừa và nhỏ, công việc của một SRE có thể được đảm nhiệm bởi một kỹ sư hệ thống, hay một DevOps; vì thế mà nhiều anh em chưa phân biệt được 2 khái niệm này với nhau. Bài viết hôm nay chúng ta cùng tìm hiểu xem SRE là gì và nó khác với DevOps như thế nào nhé.
SRE là gì?
SRE – Site Reliability Engineering là kỹ sư quản lý độ tin cậy của một trang Web. Khái niệm này ra đời tại Google từ những năm 2003, có trước khái niệm DevOps. Nhiệm vụ của những kỹ sư này là làm cho các trang Web của tổ chức trở nên đáng tin cậy, hiệu quả và luôn sẵn sàng để sử dụng.
Các công việc mà một SRE thực hiện sẽ giống với một đội vận hành sản phẩm trong tổ chức, tuy nhiên điểm khác biệt ở đây là họ sẽ sử dụng các kỹ năng chuyên môn, tư duy kỹ thuật thông qua các công cụ tự động hóa để đảm bảo rằng việc vận hành diễn ra một cách xuyên suốt, đảm bảo tính sẵn sàng cũng như tăng hiệu quả công việc.
Lợi ích mà SRE mang lại cho tổ chức:
- Giảm thiểu thời gian sửa lỗi (Mean Time To Repair) và thời gian trung bình giữa các lỗi (Mean Time Between Failures); từ đó tăng cường tính sẵn sàng của hệ thống
- Tạo ra sự cân bằng giữa các yêu cầu, các công việc của team phát triển và đội vận hành bằng cách tạo ra mục tiêu chung
- Tối ưu hóa chi phí vận hành và duy trì hệ thống
- Tạo điều kiện áp dụng công nghệ mới, cải thiện cơ sở hạ tầng mà vẫn đảm bảo được tính tin cậy của hệ thống.
Những kỹ năng cần có của SRE
SRE là vị trí đòi hỏi nhiều kỹ năng chuyên môn khác nhau kết hợp với kỹ năng mềm trong quá trình làm việc và hợp tác với các bộ phận khác. Kinh nghiệm làm việc cũng là một yếu tố quan trọng khi phần lớn các kỹ sư quản lý độ tin cậy đều cần trải qua thời gian làm việc với hệ thống, có kinh nghiệm nhất định về bảo mật cũng như kỹ năng xử lý sự cố. Cụ thể các kỹ năng cần có bao gồm:
- Kiến thức về hệ thống máy tính, cơ sở dữ liệu, mạng máy tính và các nguyên tắc vận hành hệ thống
- Khả năng sử dụng các công cụ tự động giúp theo dõi, giám sát và báo cáo sự cố, làm quen với các hệ thống Cloud mà tổ chức sử dụng
- Kỹ năng đảm bảo an ninh và bảo mật, tuân thủ nguyên tắc cơ bản để ứng phó với các mối đe dọa an ninh mạng
- Kỹ năng phân tích và xử lý sự cố. Từ bước phát hiện, định tuyến đến đánh giá hậu quả và triển khai phương án khắc phục.
- Kỹ năng giao tiếp, làm việc nhóm; chủ động quản lý thời gian do công việc đòi hỏi sự sẵn sàng, kịp thời để xử lý vấn đề phát sinh.
Sự khác nhau giữa SRE và DevOps
SRE và DevOps là hai khái niệm phổ biến thường được đề cập đến trong lĩnh vực quản lý và vận hành hệ thống. Tính chất công việc của SRE tập trung vào việc vận hành và bảo trì; trong khi đó DevOps giúp tăng cường sự hợp tác giữa các team, tăng tốc quá trình triển khai sản phẩm. Chúng ta cùng làm rõ hơn sự khác nhau giữa hai vị trí này một cách cụ thể qua từng tiêu chí nhé:
1. Về bối cảnh sử dụng
DevOps phù hợp với giai đoạn triển khai phần mềm mới với mục tiêu đưa sản phẩm ra thị trường một cách nhanh chóng. Ngược lại thì SRE thích hợp hơn cho bối cảnh mà sản phẩm và hệ thống đã hoạt động, cần đảm bảo sự ổn định, sẵn sàng, giải thiểu thời gian gián đoạn hay cải thiện hiệu suất của hệ thống. Nói cách khác, DevOps sẽ phù hợp với bối cảnh sử dụng ở giai đoạn đầu khi triển khai sản phẩm, giúp tự động hóa các quy trình và vận hành; sau khi sản phẩm đã chạy ở giai đoạn ổn định và có nhu cầu mở rộng thì SRE sẽ nên được lựa chọn sử dụng.
2. Về trọng tâm công việc
Trọng tâm công việc của SRE là độ tin cậy, tính sẵn sàng và khả năng mở rộng của hệ thống. Trong quá trình vận hành sản phẩm, lỗi xảy ra là điều không thể tránh khỏi; vì vậy công việc của các kỹ sư quản lý độ tin cậy là phát hiện, xử lý sự cố đó một cách nhanh nhất và hạn chế nó xảy ra trong những lần tới. Đối với DevOps, trọng tâm công việc đặt vào quá trình phát triển sản phẩm, làm sao để đẩy nhanh, tăng tốc, chuẩn hóa quy trình đưa sản phẩm đến với người sử dụng.
3. Về vấn đề cần xử lý
Nhóm SRE cần xử lý tất cả các vấn đề làm cản trở quá trình hoạt động của phần mềm, đảm bảo việc vận hành được thông suốt. Ngoài ra thách thức đảm bảo vận hành xuyên suốt đặt ra cho đội SRE bài toán tự động hóa các quy trình xử lý và khắc phục sự cố. Ngược lại với SRE, DevOps cần giúp cho quá trình phát triển sản phẩm, phân phối đến người dùng một cách nhanh và hiệu quả nhất. Vì thế DevOps luôn hướng tới CI/ CD như một vấn đề cần xử lý xuyên suốt, rút ngắn chu kỳ phát hành sản phẩm mà vẫn đảm bảo được chất lượng thông qua các công cụ kiểm thử tự động và liên tục.
4. Về công cụ/ phần mềm sử dụng
Dựa trên vai trò và công việc cụ thể thì SRE và DevOps sử dụng các công cụ/ phần mềm hỗ trợ khác nhau. SRE sử dụng các công cụ nhằm giám sát hệ thống, có chức năng cảnh báo, báo cáo khi có sự cố xảy ra. DevOps tập trung vào các quy trình tự động hóa, sẽ sử dụng các công cụ thiết lập môi trường build, deploy tự động (CI/CD) hay các phần mềm giúp đảm bảo bảo mật. Cụ thể một số công cụ mà 2 bộ phận này thường sử dụng gồm:
- SRE: Prometheus (theo dõi, cảnh báo), Grafana, Kibana (trực quan hóa dữ liệu, phân tích mã), PagerDuty, OP5 (báo cáo sự cố), Splunk (giám sát log), Ansible (quản lý cấu hình), …
- DevOps: Jenkins, Code Pipeline (CI/ CD), Splunk (giám sát log) , Ansible (quản lý cấu hình), Wireshark (xử lý sự cố mạng), …
Kết bài
Qua bài viết trên, hy vọng các bạn đã có một cái nhìn rõ ràng về vị trí Site Reliability Engineering, đồng thời phân biệt được SRE và DevOps có sự khác nhau thế nào. Nếu có dự định trở thành một kỹ sư quản lý độ tin cậy cho Website, hãy bắt đầu học ngay những kiến thức mà trong bài đã nhắc đến. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.
Tác giả: Phạm Minh Khoa
Xem thêm:
Tìm việc làm IT mới nhất trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS