[Report][AWS Summit Online ASEAN RE:CAP 2020]CI / CD ở quy mô: Thực tiễn tốt nhất với các dịch vụ AWS DevOps

Chủ để của session lần này là "CI / CD ở quy mô: Thực tiễn tốt nhất với các dịch vụ AWS DevOps" Diễn giả: Loh Yiang Meng, Solution Architect, Amazon Web Services
2020.09.30

Ngày 29/09/2020 vừa rồi đã diễn ra sự kiện AWS Summit Online ASEAN RE:CAP. Link sự kiện: https://live.awsevents.com/ASEANSummitreCap/

Chủ để của session lần này là "CI / CD ở quy mô: Thực tiễn tốt nhất với các dịch vụ AWS DevOps" Diễn giả: Loh Yiang Meng, Solution Architect, Amazon Web Services

Lời nói đầu: Bạn có thể tăng tốc độ phát triển và khuyến khích các thực tiễn tốt nhất bằng cách bật CI / CD trên toàn tổ chức của mình thông qua các mẫu lặp lại và các mẫu mã cơ sở hạ tầng. Điều này đạt được bằng cách tạo và duy trì các mẫu cơ sở hạ tầng dễ mở rộng để tạo các dịch vụ mới và tự động triển khai chúng bằng CI / CD. Tham gia với chúng tôi để thảo luận về vấn đề này và các yếu tố quan trọng khác cần xem xét khi tạo môi trường DevOps và xây dựng các khả năng DevOps cho các ứng dụng của bạn trên AWS.

DevOps và CI/CD đã có những bước phát triển mạnh mẽ trong những năm vừa qua, ngày nay hầu hết mọi tổ chức đều mong muốn đạt được hiệu suất cao và phát triển nhanh hơn. Đó là lý do vì sao họ đang tìm cách kết nối giữa Developer và Operation - hay chúng ta còn gọi là DevOps.

1. DevOps là gì?

DevOps được tạo thành từ 3 thành phần chính: DevOps = Văn hoá + Thực hành + Công cụ

  • Văn hoá: Văn hoá được tạo nên từ một vài điều mà chủ yếu là liên quan đến tư duy. Đối với lạnh đạo thì câu hỏi là chiến lược và sứ mệnh hay tầm nhìn của quản  cấp cao là gì. Trong tổ chức có văn hoá cho việc tổ chức, học hỏi công nghệ mới hay không. Có phải mọi người hiểu được ý nghĩa của việc phát triển các ứng dụng hiện đại hay không. Và cá nhân có bị mắc kẹt với tư duy cũ về phát triển phần mềm hay không.
  • Thực hành: Chủ yếu là các quy trình trong tổ chức. Bạn có thực hành kiến trúc loosely coupled không. Bạn có triển khai ở mức nhỏ nhưng thường xuyên để giảm lỗi ứng dụng không. Bạn có thực thi các Code Practice hay không,...
  • Công cụ: Văn hoá và thực hành đúng vẫn là chưa đủ nếu không có các công cụ để đảm bảo rằng các team làm việc hiệu quả

Ý nghĩa của triển khai DevOps ở quy mô mở rộng: Một team phát triển điển hình sẽ có một quy trình release như thế này

Ở phần tiếp theo chúng ta sẽ nói về 3 Best practice (Thực tiễn tốt nhất)

2. Pipeline Automation (Tự động hoá Pipeline)

Đây là một quy trình Release điển hình. Ở mỗi giải đoạn sẽ có một số thực hành cần được thực hiện. Best practice ở đây là tự động hoá mọi thứ, sẽ không có chỗ cho sự can thiệp của con người bởi vì khi có con người tham gia sẽ luôn có rủi ro xảy ra sự cố.

Một số AWS Code Services có thể sử dụng cho quá trình tự động hoá. CodePipeline giống như một chất keo giúp kết nối tất cả dịch vụ này lại với nhau.

CodePipeline là dịch vụ được quản lý hoàn toàn bởi AWS

  • Ta không cần phải chạy hoặc quản lý bất kì máy chủ nào
  • Ta có thể tự động hoá giai đoạn nào đến trước,
  • Thực hiện build hoặc test song song, hoặc thêm các giai đoạn phê duyệt và thông báo vào pipeline.
  • Lợi ích chính của sử dụng Codepipeline là khả năng tích hợp rất rộng với không chỉ các dịch vụ của AWS mà cả các công cụ của bên thứ 3 khác

Nguồn hỗ trợ CodePipeline

  • AWS CodeCommit
  • Github
  • Bitbucket
  • Thông qua Amazon S3
  • Thông qua Docker image: Amazon Elastic Container Registry (ECR)

Các môi trường hỗ trợ triển khai ứng dụng

  • Amazon EC2
  • Containers
  • Serverless

Trong Continous integration (CI), mục tiêu là duy trì các cập nhật với mức độ thay đổi nhỏ và thực hiện build 1 cách thường xuyên. Ta sẽ muộn tự động hoá quá trình khởi động một build mới bất cứ khi nào có code mới được kiểm tra xong mà không cần có sự tham gia của Developer. Bằng cách tự động hoá quá trình build, ta sẽ đảm bảo rằng quy trình cho mỗi lần build là đồng nhất.

AWS CodeBuild là dịch vụ giúp biên dịch code, chạy test và đóng gói ứng dụng

3. Safe Deployments (Triển khai an toàn)

Trong Continous deployment (CD), mục tiêu là tự động hoá về triển khai artifact lên môi trường production mà không có bất kì tác động nào đến người dùng. Nếu các thay đổi của ta có thể áp dụng liền mạch vào môi trường production, ta có thể giảm thời gian thực hiện thay đổi và triển khai thường xuyên hơn.

AWS CodeDeploy là dịch vụ giúp tự động hoá việc triển khai trên các EC2 Instance, ECS, Lambda và thậm chí là ở các máy chủ cơ sở

4. Repeatable Infrastructure Changes (Thay đổi hệ thống lặp đi lặp lại)

Nếu ta muốn nhanh chóng tái tạo một cơ sở hạ tầng trên nhiều region mà vẫn đảm bảo đồng nhất thì ta sẽ sử dụng "Infrastructure as code". Ý tưởng ở đây là coi cơ sở hạ tầng như những đoạn code. Ta có thể sử dụng các công cụ để cấu trúc và theo dõi các thay đổi giống như cách ta quản lý code.

AWS Cloud Development Kit (AWS CDK) là open-source framework cho phép ta định nghĩa cơ sở hạ tầng cloud bằng cách sử dụng TypeScript, Python, Java, .Net,... Cơ chế của CDK là tỏng hợp code thành các CloudFormation template. Nó hỗ trợ tất cả các loại tài nguyên cloud và cung cấp thư viện cho các loại tài nguyên khác nhau, đồng thời có các AWS best practices đi kèm mặc định. VD: Chỉ 22 dòng code TypeScript có thể tạo ra hơn 400 dòng code CloudFormation.

5. CI/CD @ Electrify Asia

Chia sẻ từ doanh nghiệp Electrify Asia:

  • Electrify Asia là công ty công nghệ năng lượng
  • Xây dựng hệ sinh thái năng lượng bền vững thông qua phát triển các nền tảng năng lượng chuyển hóa
  • Giải pháp kinh doanh năng lượng ngang hàng có thể mở rộng tiên phong cho các mạng lưới thành phố và toàn quốc

Một số thách thức của hệ thống:

  • Thiếu nền tảng CI / CD tiêu chuẩn
  • Khối lượng công việc tương tác thủ công của con người nhiều hơn khi triển khai
  • Các vấn đề bảo mật rất dễ bị tấn công và rắc rối với việc giữ bí mật
  • Sự cố khi quản lý cơ sở hạ tầng

Những AWS họ đã sự dụng để giải quyết vấn đề

  • Tất cả các công cụ developer: Code Pipeline, CodeBuild, ...
  • Các dịch vụ database: Redshift, Aurora
  • Dchj vụ phân tích dữ liệu: Kinesis, QuickSight
  • Dịch vụ bảo mật: Secrets Manager, KMS,...

Giải pháp cho DevOps pipeline của họ:

Họ thậm chí còn áp dụng Amazon Alexa vào quá trình đó (Sử dụng điều khiển bằng giọng nói)

6. Demo

Phần Demo là một video nên nếu bạn thấy thú vị và muốn tìm hiểu thêm. Hay truy cập đường link của sự kiện và tìm video của session CI / CD ở quy mô: Thực tiễn tốt nhất với các dịch vụ AWS DevOps

Cảm ơn các bạn đã theo dõi blog. Xin chào và hẹn gặp lại!