Trong các giai đoạn phát triển các ứng dụng, dịch vụ dùng server thì việc xây dựng deployment là không thể thiếu được. Giai đoạn này đòi hỏi người thiết định phải có kinh nghiệm, kiến thức về server, các thiết định performance cùng với tính chính xác trong từng thao tác.
Đặc biệt là đối với các hệ thống có số node (server) từ 2 hoặc nhiều hơn thì việc thiết định thống nhất giữ 2 server là rất quan trọng. Người thực hiện bắt buộc phải ghi nhớ các libraries, tools của từng loại server (DB server thế nào, Cache server, Web server như thế nào).
Ngoài ra các thiết định đã dùng trong quá trình development và production cũng phải đảm bảo tính thống nhất.
Túm lại, quá trình deployment thường gặp phải các khó khăn
- tốn thời gian và công sức
- việc sai sót là không thể tránh khỏi.
Infrastructure as Code
Một trong các cách giải quyết các khó khăn trong vấn đề deploy các ứng dụng là quản lý cấu trúc hệ thống bằng code. Infrastructure as Code là khái niệm quan trọng nhất, các thông tin package, library, config của cấu hình hệ thống sẽ thiết định bằng syntax của ngôn ngữ lập trình Ruby và được sử dụng như các chương trình lập trình. Như thế, việc xây dựng cấu hình hệ thống sẽ trở nên giống như lập trình một chương trình vậy.
Framework tự động cấu hình server Chef sẽ tự động cấu hình các server dựa trên các code này.
Chúng ta sẽ có những lợi điểm như sau:
- Các thiết định này được lưu lại dưới dạng source code nên đảm bảo tính thống nhất, tính tái sử dụng lại của các thao tác
- Chỉ bằng các lệnh đơn giản, Chef thực hiện xây dựng hàng loạt các server với các cấu hình cần thiết là giảm đi dáng kể thời gian và công sức.
- Nếu các code này được quản lý bằng SVN hoặc Git, bằng cách xem lại các commit log thì sẽ dễ dànd hình dung được quá trình xây dựng hệ thống.
- Quá trình check & review thiết định sẽ đơn giản hơn nhiều bằng cách review code thay vì login vào từng server để check.
Continue reading Làm quen với chef – Infrastructure as Code (1)