- Đăng vào
Xây dựng DevOps platform sử dụng công nghệ Cloud Native
Mở đầu
Đầu năm 2023, mình bắt đầu công việc mới tại công ty mới với trong vai trò là DevOps Engineer. Làm việc trong công ty lớn mình hy vọng sẽ có cơ hội tích lũy thêm kinh nghiệm làm việc trên các nền tảng điện toán đám mây như AWS, Azure... Tuy nhiên, thực tế không như mình kỳ vọng.
Các dịch vụ trên AWS, Azure,... khá tốn kém nếu bạn tự bỏ tiền túi ra tự học hoặc nghiên cứu. Tuy rằng chúng ta được cấp tín dụng vài trăm đô khi tạo tài khoản nhưng từng đó là không đủ.
Thời điểm này, dịch Covid được khống chế thành công, hoạt động sản xuất kinh doanh dần ổn định trở lại. Tuy nhiên hậu quả của nó vẫn đang ảnh hưởng rất lớn đến các công ty, doanh nghiệp.
Cũng trong năm này, cuộc xung đột giữa Nga và Ukraina diễn ra căng thẳng, các lệnh cấm vận, trừng phạt lẫn nhau giữa các cường quốc phương Tây và Nga làm cho tình hình kinh tế hồi phục chậm chạp.
Các công ty công nghệ cũng không phải là ngoại lệ. Sau khoảng thời gian tăng trưởng "nóng" trong đại dịch, giờ đây việc cắt giảm nhân sự, thu hẹp quy mô thậm chí sa thải nhân sự nhằm tiết kiệm chi phí của ngành IT diễn ra nhan nhản trên các mặt báo.
Đơn vị mà mình công tác cũng đang đổi mặt với thách thức tương tự, vì vậy mà các dự án dần dần tìm cách cắt giảm chi phí không cần thiết, giảm thiểu sự phụ thuộc vào dịch vụ Cloud, tận dụng cơ sở hạ tầng IT sẵn có ( hệ thống máy chủ nội bộ on-premise server). Sau một thời gian nghiên cứu mình quyết định sử dụng công nghệ Cloud Native để giải quyết vấn đề hiện tại cho công ty, khách hàng.
DevOps Platform sử dụng công nghệ Cloud Native
Công nghệ Cloud Native mang lại nhiều lợi ích đáng kể cho các doanh nghiệp và tổ chức. Dưới đây là một số lợi ích chính:
- Tính độc lập: Do kiến trúc của Cloud Native, các ứng dụng Cloud Native có thể được xây dựng độc lập với nhau. Điều này có nghĩa là bạn có thể quản lý và triển khai chúng một cách riêng biệt.
- Dựa trên các tiêu chuẩn: Các dịch vụ Cloud Native thường dựa trên các công nghệ dựa trên tiêu chuẩn và nguồn mở để có khả năng tương tác và di chuyển khối lượng công việc. Điều này làm giảm sự ràng buộc của nhà cung cấp trong khi tăng tính linh hoạt.
- Không có Downtime: Người dùng có thể triển khai các bản nâng cấp phần mềm với ít hoặc không có thời gian ngừng hoạt động nhờ các bộ điều phối vùng chứa như Kubernetes.
- Tự động hóa: Cloud Native thúc đẩy việc tự động hóa các quy trình triển khai, quản lý tài nguyên và xử lý lỗi. Điều này giúp giảm thời gian và công sức cần thiết cho việc quản lý hệ thống.
- Tăng cường bảo mật: Cloud Native thúc đẩy việc triển khai các tiêu chuẩn bảo mật và quản lý danh sách kiểm tra để bảo vệ ứng dụng khỏi các mối đe dọa và tấn công.
- Khả năng khôi phục: Các ứng dụng Cloud Native thường được xây dựng với khả năng phục hồi sau sự cố, giúp đảm bảo tính liên tục của dịch vụ.
Các thành phần cơ bản của hệ thống khi đi từ dưới lên:
- Đầu tiên, iIfrastructure chúng ta có thể sử dụng các nền tảng điện toán đám mây hoặc các server sẵn có. Chúng được khởi tạo, thiết lập bằng các công cự IaC như Ansible, Terraform.
- Tiếp theo sau khi đã có được Infrastructure, chúng ta thiết lập Kubernetes cluster, mình sử dụng Kubespray là giúp khởi tạo và thiết lập HA Cluster một cách thuận tiện, nhanh chóng
- Sau khi có được Cluster, chúng ta cần cài đặt các công cụ cần thiết để quản lý và giám sắt Cluster, thông thường sẽ để trong namespace kube-system. Đổi với các ứng dụng mang tính hệ thống chúng ta nên dùng Helm Chart để cài đặt, không nên dùng GitOps vởi vì chúng sẽ không nên cập nhật thường xuyên để ổn định hệ thống.
- Tiếp theo, mình sẽ triển khai trên cluster các ứng dụng phục vụ quá trình phát triển phần mềm như các công cụ CI/CD, GitOps, montoring, logging, ...
- Cuối cùng sẽ là triển khai các ứng dụng của người dùng.