System Scheduler: Turn On/Off cloud application automatically (Bộ lập lịch hệ thống: Tự động bật/tắt ứng dụng đám mây)

Bài viết đến từ anh Lê Văn Tám – Senior Cloud Engineer 

Cloud Architect team @Techcombank

Như các bạn đã biết, tại Techcombank, đã có rất nhiều ứng dụng được di chuyển lên Cloud. Mỗi ứng dụng phục vụ các nhóm đối tượng mục tiêu khác nhau bao gồm nhân viên nội bộ ngân hàng (internal users)  hoặc khách hàng sử dụng sản phẩm dịch vụ của Techcombank (external users).

Trên AWS cloud, các nguồn lực như EC2, RDS… sẽ tính phí dựa theo thời gian hoạt động.  Đối với môi trường production, các ứng dụng này sẽ chạy liên tục 24/7. Tuy nhiên, đối với môi trường non-production (dev, sit, uat, pre-prd …), tùy theo mục đích sử dụng, chúng sẽ được bật/tắt trong khoảng thời gian nhất định để giảm chi phí.

System Scheduler: Turn On/Off cloud application automatically

Thời gian đầu, quá trình bật/tắt các ứng dụng được thực hiện thủ công. Tức là, khi đội ngũ phát triển cần kích hoạt ứng dụng, sẽ truy cập vào AWS Console để bật lần lượt từng nguồn lực (EC2, RDS…). Việc này sẽ gây tốn khá nhiều thời gian vì tính lặp lại của một thao tác nhiều lần.

Về sau, đội ngũ phát triển của Techcombank đã tìm ra một giải pháp cải tiến hơn cho vấn đề trên bằng cách sử dụng các Lambda tự động.

Chi tiết của giải pháp này như sau:

  • Đầu tiên, EventBridge Scheduler sẽ được thiết lập để chạy (theo lịch phù hợp với nhu cầu của tổ chức) và sẽ kích hoạt Lambda có tên là “Start app”: Lambda này sử dụng Python boto3 lib để gửi yêu cầu tới API của AWS nhằm khởi động các EC2, RDS và cập nhật các thông số của autoscaling group như min/max/desire size.
  • Tiếp theo, EventBridge Scheduler khác sẽ được thiết lập để chạy (theo lịch phù hợp với nhu cầu của tổ chức) và sẽ kích hoạt Lambda “Stop app. Lambda này cũng sử dụng Python boto3 lib để gửi yêu cầu đến API của AWS nhằm dừng hoạt động EC2, RDS và điều chỉnh các thông số của autoscaling group như min/max/desire size về 0.

Mặc dù giải pháp này hiệu quả, nhưng vẫn còn một số hạn chế:

  • Khi các phiên bản EC2, RDS được khởi động cùng một lúc, một số ứng dụng yêu cầu database (RDS) được khởi động trước.
  • Khi các phiên bản EC2, RDS dừng lại cùng một lúc,  một số ứng dụng sẽ cần database (RDS) được dừng lại sau.
  •  Hơn nữa, mỗi hệ thống đều cần thiết lập một bộ Lambda riêng.

Do đó, để giải quyết các thách thức này, team CloudOps đã nghiên cứu và đưa ra một giải pháp gọi là System Scheduler, giúp bật/tắt ứng dụng một cách đồng bộ và tự động.

Để cải thiện quá trình bật/tắt các AWS resources (EC2/RDS), đội ngũ Techcombank đã đưa ra một giải pháp mới như sau: 

  • Đầu tiên, tạo một tài khoản AWS gọi là “master” để điều khiển quá trình bật/tắt AWS resources (EC2/RDS) của các tài khoản AWS khác (gọi là tài khoản ứng dụng).  Tài khoản AWS này bao gồm các thành phần sau:
  • DynamoDB: Lưu trữ thông tin của tài khoản ứng dụng (app account) bao gồm ID tài khoản AWS, IAM cross role,  lịch bật/tắt instance.
  • EventBridge Scheduler: Kích hoạt chức năng Lambda. Lambda lấy thông tin từ DynamoDB trên (AWS account ID, IAM cross role, lịch bật/tắt instance), sử dụng IAM cross để truy cập vào application account và gọi AWS API để bật/tắt EC2/RDS instance.
  • Trong mỗi tài khoản ứng dụng: tạo ra các AWS resources bằng cách sử dụng mẫu SAM (Serverless Application Model). Điều này giúp tự động tạo resources tag và tiếp tục/tạm ngừng các hoạt động của AutoScaling group.

System Scheduler: Turn On/Off cloud application automatically

Cụ thể, SAM sẽ tạo ra các AWS resources như sau:

1. Những tài nguyên phục vụ việc tự động đánh nhãn

– EventBridge: Khi một phiên bản EC2 hoặc RDS được tạo, chức năng Lambda “Tự động đánh nhãn” sẽ được kích hoạt.

– Chức năng Lambda “Tự động đánh nhãn”: Tự động đánh nhãn cho tất cả các tài nguyên EC2, RDS, AutoScalingGroup, với các nhãn sau:

  • Schedule: Biểu thị khung thời gian áp dụng cho việc bật/tắt phiên bản.
  • DoNotStop: Gắn nhãn này nếu không muốn áp dụng lịch trình (schedule).
  • Reason: Lý do áp dụng lịch trình (schedule).

Chức năng Lambda này có tác dụng này giúp các nhà phát triển ứng dụng của mỗi tài khoản biết khung thời gian bật/tắt và cũng như các trường hợp ngoại lệ khi không muốn ứng dụng được bật tắt tự động (ví dụ: khi thực hiện PT test, chuẩn bị triển khai tính năng mới yêu cầu nhiều tài nguyên hơn thường lệ…)

2. Những tài nguyên phục vụ việc tự động tạm ngừng/tiếp tục hoạt động của AutoScalingGroup

  • EventBridge Scheduler sẽ kích hoạt Lambda tự động tiếp tục hoạt động của AutoScalingGroup (ASG).
  • EventBridge Scheduler sẽ kích hoạt Lambda tự động tạm ngừng hoạt động của AutoScalingGroup  (ASG).

Bằng cách áp dụng các phương pháp mới này, Techcombank đã thành công trong việc giải quyết được các vấn đề sau:

  • Quá trình bật/tắt hệ thống được tập trung, quản lý thống nhất từ một nguồn duy nhất
  • Nhà phát triển của mỗi ứng dụng có thể biết được khung thời gian bật/tắt hệ thống dựa trên nhãn tài nguyên.
  • Team CloudOps dễ dàng quản lý lịch trình bật/tắt tài nguyên của tất cả các ứng dụng và dễ dàng tiếp nhận/xử lý khi có yêu cầu thay đổi lịch trình phía nhà phát triển ứng dụng.

 


Thuộc dự án Inside GemTechnology do TopDev hợp tác cùng Techcombank triển khai, chuỗi nội dung thuần “Tech” độc quyền được chia sẻ bởi đội ngũ chuyên gia Công nghệ & Dữ liệu tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog | Techcombank Careers x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Bài viết liên quan

Xây dựng hệ thống giám sát (Monitoring) tập trung cho workload trên Cloud

Bài viết đến từ anh Lê Văn Tám - Senior Cloud Engineer Cloud Architect team @Techcombank Bối cảnh: Ở Techcombank, bộ phận Dịch vụ Hạ tầng (ITO - Infrastructure Services) đang vận hành rất nhiều ứng dụng (application) khác nhau để phục vụ người dùng nội bộ và khách hàng bên ngoài như quản lý nợ (Debt Management), tra cứu tín dụng (ICS), tra cứu và thu hộ thuế nhà nước (TCS), quản lý đặt chỗ (QMS)… Theo chiến lược chuyển đổi số theo định hướng “Cloud First”, Techcombank đã thực hiện di dời (migrate) được gần 30 ứng dụng (application) từ on-prems lên cloud từ giữa năm 2021 tới nay. Việc di dời thành công các ứng dụng đã bước đầu đã chứng minh được lợi ích của chiến lược “Cloud first”. Tuy nhiên, trong quá trình chuyển đổi “nóng” đó, Techcombank nói chung và đội ngũ ITO nói riêng cũng gặp phải một số vấn đề do chưa đủ nguồn lực để triển khai, đặc biệt là vấn đề giám sát (monitor) các ứng dụng này. Thời điểm đó, mỗi ứ [...]

Triển khai Cloud tại Digital Banking: Đâu là yếu tố để đảm bảo chuyển đổi thành công?

Công nghệ Đám mây (Cloud) đã trở thành một phần không thể thiếu trong các nền tảng lớn hiện nay. Với vai trò ngày càng quan trọng và phức tạp, điện toán đám mây đặc biệt được chú trọng trong lĩnh vực tài chính. Không nằm ngoài cuộc chơi, các ngân hàng lớn tại Việt Nam cũng đang tiến hành quá trình chuyển đổi số cho toàn bộ hệ thống của mình. Chị Elizabeth Nguyễn, một Quản lý Dự án Cao Cấp - Dự án Cloud tại Techcombank, sẽ mang tới những chia sẻ giúp chúng ta hiểu được tầm quan trọng của công nghệ Cloud trong công cuộc chuyển đổi số của lĩnh vực tài chính ngân hàng. Dịch vụ Cloud giải quyết gì cho bài toán kinh doanh (business) nói chung & bài toán nghiệp vụ ngân hàng (banking) nói riêng?  Một trong những lý do quan trọng nhất cho việc chuyển đổi sang Cloud của Techcombank là [...]