New FAMILUG

The PyMiers

Showing posts with label CI. Show all posts
Showing posts with label CI. Show all posts

Saturday, 25 May 2019

Để trở thành DevOps Engineer

DevOps là một từ khóa công nghệ cực hot trong khoảng 2015-2018, đánh dấu
sự thay đổi về quy trình phát triển phần mềm trên toàn Trái Đất. Tại thời điểm
viết bài (2019-05), vị trí này đã có mặt ở hầu hết các công ty công nghệ tại
Việt Nam.

Bài viết này giải thích các khái niệm liên quan tới DevOps, đưa ra một giáo
trình để trở thành DevOps Engineer.

## DevOps là gì

DevOps không có định nghĩa chính thức, cũng không có định nghĩa rõ ràng, nó
là một khái niệm mới tự dưng xuất hiện, chưa từng có trước đây.
Cách hiểu phổ biến nhất, đây là một "cách/quy trình phát triển và vận hành phần mềm".
Được sinh ra từ việc khắc nhập 2 chữ: DEVelopment (phát triển) - OPerationS (vận hành).

### Quy trình phát triển phần mềm truyền thống

Lập trình viên code, code xong chuyển qua cho SysAdmin cài đặt (deploy), QA sẽ
tham gia kiểm tra chất lượng, nếu OK, SysAdmins sẽ mang đi deploy trên hệ thống
chạy thật, nếu gặp lỗi / report bởi người dùng, SysAdmin sẽ chuyển lại cho
developer sửa. Vòng lặp quy trình này thường mất nhiều thời gian trong tất cả
các khâu, tối thiểu mỗi khâu mất 1 tuần.

Dev ---> SysAdmin deploy nội bộ ---> QA ---> Sysadmin deploy ----> Người dùng.
^-------------------------------------|--------------------------------|

Chú ý ở mô hình này, xảy ra một sự xung đột về lợi ích: Dev luôn muốn các tính
năng, code của mình được đưa tới người dùng nhanh nhất. SysAdmin luôn muốn
hệ thống ổn định nên sẽ không muốn mang code mới đi chạy (vì code mới luôn
có bug).

### Quy trình phát triển theo DevOps


Dev ---> DevOps --> QA ---> Người dùng
^----------|---------|----------|


Wednesday, 13 April 2016

[Python] Người ta test/CI thế nào?

Nhà người ta sau khi code xong, thì phải chạy test, kiểm tra chất lượng code và làm cho toàn bộ quá trình này trở nên tự động để chạy bằng 1 cái máy khác (CI server), chờ kết quả trả về.

Nhà mình cũng viết code, nhưng những phần còn lại thì hay bỏ qua. Nay kéo sang xem nhà người ta làm thế nào, copy mang về rồi nhận là của mình, vậy là vừa oai, vừa xịn, a hi hi.

1. Test
Viết code thì phải có test, nhà người ta làm thế.
Các file test đặt trong thư mục ``tests``. Nhà người ta dùng py.test để chạy test, nghe đồn nó là hàng xịn nhất trên đời rồi.

https://github.com/pallets/flask/blob/1aa8a54b175ef10a72d3c3d3f4ed112ddc6e2ea6/Makefile#L5

2. Gõ lệnh test
Gõ lệnh rất là mệt, càng dài càng mệt. Thế nên hiểu tại sao bên tây nó quá mệt mỏi nên sinh ra trò làm ngắn lại, mà thế giới gọi là dùng lệnh ``make``. Viết 1 cái Makefile, định nghĩa các câu lệnh ngắn để nó chạy các câu lệnh dài, thế là ta có 1 tập câu lệnh vừa ngắn, vừa yêu.

all: clean-pyc test

test:
 py.test tests examples

tox-test:
 tox

audit:
 python setup.py audit

release:
 python scripts/make-release.py

ext-test:
 python tests/flaskext_test.py --browse

clean-pyc:
 find . -name '*.pyc' -exec rm -f {} +
 find . -name '*.pyo' -exec rm -f {} +
 find . -name '*~' -exec rm -f {} +
 
Xem thêm ở đây 
 
3. Kiểm định chất lượng