Để bắt đầu chủ đề thảo luận về System Automation, mình xin phép nêu ra
các định nghĩa của cá nhân mình về: "Thế nào là một hệ thống tự động?"

Xét một hệ thống cung cấp các dịch vụ cho client, mình thấy có thể
chia thành 2 tầng:
- Tầng thứ nhất: Hạ tầng server và các cấu hình, các dịch vụ mang tính
chất system-wide như NTP, SSH, Cron, DHCP, DNS, etc..
- Tầng thứ hai: Các ứng dụng và dịch vụ backend của từng sản phầm cụ
thể. Không chỉ nói riêng về backend codebase của sản phẩm mà còn tính
luôn các dịch vụ phục vụ trực tiếp cho codebase đó. Ví dụ các
webserver như apache, nginx hoặc database như postgresql, mysql,...

Việc phân chia 2 tầng như trên chỉ mang tính chất tương đối để chúng
ta có thể xác định cụ thể quyền hạn và trách nhiệm của 2 dạng công cụ
mình sẽ đề cập đến: deployment tool và configuration manager.

Việc phân chia như vậy hoàn toàn tùy thuộc vào từng hệ thống cụ thể.
Một ví dụ đơn giản: Dịch vụ DNS server ở hệ thống hosting website chỉ
là system-wide chung chung và rơi vào tầng 1. Nhưng ở hệ thống cung
cấp dịch vụ DNS thì nó sẽ nằm ở tầng 2.

------
Giờ mình xin phép bắt đầu tiết mục "chuyện của gió":

1. Có bao nhiêu việc để cần đến một gã gọi là sysadmin?
- Cập nhật và quản lí các file cấu hình system-wide, đa số nằm trong
/etc. Các công việc quản lí firewall, các cài đặt security liên quan
đến vpn, ssh, ssl, etc.. cũng nằm trong danh mục này.
- Deploy backend cho các sản phẩm. Ở các công ty bự bự thì đẻ ra cái
chức release engineer, nhưng có khi vẫn chỉ là sysadmin trá hình.
- "Trả lại tên cho em": Sysadmin hay còn gọi là Sh!t assmean có một
nghĩa vụ cao quý nữa là dọn rác. Ví dụ đĩa đầy, database đầy, log,
cache, tmp nhiều xả rác tùm lum và rác của... các sysadmin khác xả ra.
- Monitoring, on-call rotation.

Lưu ý: Xét thế này còn khá là giới hạn, chỉ mới là xét ở khía cạnh cái
system vận hành sản phẩm. Trong thực tế, sẽ còn có cả helpdesktop
engineer, network engineer, datacenter technician, database admin,
etc.. 3 việc kể trên chỉ là để tiếp cận và triển khai system
automation.

2. Các vấn đề nảy sinh
- Sysadmin là con người, họ có những vấn đề của con người. (Đọc thêm:
http://en.wikipedia.org/wiki/Human_reliability).
Cái nghiêm trọng nhất là quên/nhớ. Một sysadmin dù giỏi đến đâu cũng
có lúc quên chính xác những gì mình đã làm trong system. Khi 1 team có
nhiều sysadmin, kinh nghiệm thực tế cho thấy là hệ thống sẽ thành vũng
lầy trong ít hơn 1 năm nếu không có người quản lí tốt. Đây là kinh
nghiệm từ việc kiêm nhiệm senior system engineer và project manager
cho 1 team của mình. Cụ thể việc quản lí ra sao thì mình sẽ chia sẻ
trong một chủ đề khác.

- Một khi hệ thống đã là vũng lầy, trong thực tế là người ta sẽ đành
chấp nhận nó. Sau khi chịu đựng cái PITA (Pain in the ass) quá lâu thì
người ta sẽ tính chuyện đập đi xây lại, hay còn gọi là "migration".
Cũng dễ hiểu là các công đoạn disater recovery hay security audit đối
với các hệ thống như vậy chỉ còn mang tính chắp vá.

- Sysadmin siêng năng là một sysadmin rất tệ. Anh sysadmin mà tháng
nào cũng ssh vào server để cleanup các sự cố đĩa đầy lặp đi lặp lại ắt
hẳn rất là buồn chán. Tất nhiên là đa số trong thực tế là phải đi dọn
rác của người khác xả ra. Nhưng đến một lúc nào đó sẽ có sysadmin khác
đi dọn rác của mình. Nó là cái vòng lặp vô tận của sự chán nản.

3. Giải quyết vấn đề như thế nào:
- Theo mình được biết từ thông tin lề đường, các công ty Nhật có quy
trình làm việc cực kì chặt chẽ. Mọi sự thay đổi đều có quy trình và
quản lí cực kì nghiêm ngặt. Siết chặt các công đoạn làm việc, lịch sử
thay đổi và công tác quản lí có thể sẽ hữu ích để giữ cho system ko bị
rối và luôn chạy ổn định.

- Sống chung với lũ, đến đâu hay đến ấy như có đề cập ở trên. Một điều
đáng ngạc nhiên là có rất nhiều công ty, tập đoàn từ công nghệ đến cả
tài chính trên thế giới phải làm kiểu này. Các ngân hàng lớn thì
thường đã có quy chuẩn được tuân thủ triệt để và siết chặt từ trên
xuống dưới. Nhưng mình cũng biết có một số tổ chức tài chính, bảo hiểm
mà họ có những system đủ để xây dựng bảo tàng về lịch sử máy tính. :-)

- System automation. Đây là hướng mình theo đuổi. Tuy nhiên system
automation, tuy đã ứng dụng rộng rãi trong thực tế từ lâu, vẫn còn là
tập hợp của nhiều công nghệ bleeding-edge
(http://en.wikipedia.org/wiki/Bleeding_edge_technology). Người ta nói
"chơi dao có ngày đứt tay", cho nên mình tin là tuy tuyệt vời, system
automation chỉ phù hợp với system của các công ty công nghệ.

----
Tạm nghỉ đi pha li cappuchino. Và cũng là cho bớt "gió".
Mình sẽ tiếp tục về các hướng tiếp cận system automation trong email tiếp.

Trả lời cho