DevOps

alt text

Nếu cắt đều những vòng lặp vô tận của toolchain thì chúng ta sẽ thấy cái nhìn cơ bản của pipeline.

PlanCreateBuildVerifyPackageConfigureReleaseVerifyMonitor

Pipeline foundation

Gồm 2 bước: Plan, Create

Planning with Agile project management tools

Để tracking tiến độ, xem chúng ta đang ở đâu từ request release.

Viết code và tạo tài liệu

Version Control đóng vai trò quan trọng, ngày nay version control lưu trữ cả test script và tất cả những thứ liên quan đến thay đổi và release.

Document thì thường lưu trữ ở Wiki: requirements specifications, architectural models, UI wireframes, and product and user documentation.

Continuous integration

Gồm 3 bước: Build, Verify, Package

Orchestrating the change.

Verifing quality

Một trong những tính năng quan trọng nhất. Shift-left philosophy, bring the test earlier and more often.

Phong trào DevSecOps ủng hộ việc kiểm thử tự động sớm hơn và thường xuyên hơn như một cách thiết lập bảo mật liên tục (Continuous Security). Có thể thực hiện kiểm thử sớm mà không cần phải thực thi mã trong các môi trường thông qua unit test.

Unit Test (TDD)

Nên sử dụng cùng với một test management software (XRay hoặc Zephyr)

Static Analysis

  • Lint
  • SAST
  • Dependency scanning
  • License scanning

Packaging for deployment

Continuous Deployment

Gồm 4 bước: Configure, Release, Verify, Monitor

Continuous Deployment tiếp tục từ đưa các image được tạo ra từ bước package vào các môi trường. Tự động hóa (Automation) có thể đóng vai trò trong việc thêm hoặc cập nhật tài nguyên trong các môi trường này.

Các công cụ IaC cho phép cấu hình các tài nguyên. Với source code chạy trên các môi trường, chúng ta có thể tiến hành test chi tiết hơn để tìm ra các vấn đề về chất lượng và bảo mật. Tại đây, các bài test cũng có thể xem xét cách các thay đổi ảnh hưởng đến hiệu suất và xác thực các thay đổi mong muốn. Khi các thay đổi được thêm vào môi trường, chúng ta cần nhận thức được tác động của những thay đổi này. Để đạt được mục đích đó, chúng ta sẽ đo lường hiệu suất của toàn bộ môi trường bao gồm storage và phân tích log.

Cấu hình môi trường với IaC

Release với việc quản lý cấu hình và feature flag

Các công cụ quản lý cấu hình chịu trách nhiệm xác định và thiết lập cấu hình cho môi trường dev production. Một pipeline có thể gọi công cụ quản lý cấu hình để đánh dấu rắng package đã được thông qua Continuous integration stage.

Feature flag

Ngay cả khi các source code change được chạy ở trên production, những thay đổi đó có thể không hiển thị (visible) với người dùng cuối hoặc ảnh hưởng đến chức năng hiện có. Điều này có thể là do các feature flag ngăn không cho khả năng hiển thị các thay đổi mã.

Điều này cho phép triển gradual rollout of changes (hoặc progressive rollout) ví dụ như canary release. Điều này cũng cho phép nhanh chóng rollback hệ thống về trạng thái trước đó bằng cách hủy các feature flag.

Các feature flag tool: LaunchDarkly, Flagsmith và CloudBees Feature Management.

Additional verification through advanced testing in the environment.

Functional and UI testing

  • Sanity test
  • Smoke test
  • Regression test

Automation test có thể nên được triển khai

Load/performance testing

Load/performance testing không được thiết kế để đo chức năng chính xác. Thay vào đó, mục tiêu của kiểm thử hiệu suất là xác minh các Non-functional Requirement: reliability hoặc scalability.

Chúng ta muốn xem hệ thống, khi có bất kì thay đổi nào, có thể đáp ứng được nhu cầu sử dụng hay không.

Dynamic application security testing (DAST)

DAST thực hiện các bài kiểm thử tự động, trong đó giả lập các vụ tấn công vào môi trường cho web application để tìm kiếm các lỗ hổng.

# Sample dast
stages:
  - test

test-zap:
  image: owasp/zap2docker-stable:2.12.0
  stage: test
  allow_failure: true
  script:
    - echo "create a directory..."
    - mkdir /zap/wrk
    - echo "Execute the baseline scan..."
    - /zap/zap-baseline.py -t http://34.170.134.227:8080/ -g gen.conf -r testreport.html
  after_script:
    - echo "Copy report file to the artifact path..."
    - cp /zap/wrk/testreport.html .
  artifacts:
    when: always
    expire_in: 30 days
    paths:
      - testreport.html

IaC Scanning

Trivy

Container Scanning

Trivy

BDD (Acceptance Test)

Monitoring

Performance monitoring/reporting

Log collection

Alerting

Khi sự cố phát sinh, điều quan trọng là phải thông báo kịp thời cho những người liên quan. Các công cụ cảnh báo có thể cung cấp nhiều kênh để thông báo, bao gồm email, tin nhắn SMS và tin nhắn trò chuyện IM. Chúng cũng có thể cung cấp cơ chế dung sai để ngăn chặn quá nhiều tin nhắn cảnh báo gửi đến nhân viên vận hành và tình trạng quá tải cảnh báo xảy ra. Các công cụ này cũng có thể tạo ra các vấn đề cho việc quản lý sự cố để các quy trình quản lý dịch vụ CNTT (ITSM) được tuân thủ.