Câu hỏi phỏng vấn chung về DevOps
1. Bạn biết gì về DevOps?
Câu trả lời của bạn phải đơn giản và dễ hiểu. Bắt đầu bằng cách giải thích tầm quan trọng ngày càng tăng của DevOps trong ngành CNTT. Thảo luận cách tiếp cận như vậy nhằm mục đích tổng hợp nỗ lực của các nhóm phát triển và vận hành nhằm đẩy nhanh việc phân phối các sản phẩm phần mềm với tỷ lệ thất bại tối thiểu. Bao gồm cách DevOps trở thành một phương pháp thực hành giá trị gia tăng, trong đó các kỹ sư phát triển và vận hành cùng chung tay trong suốt vòng đời của sản phẩm hoặc dịch vụ, ngay từ giai đoạn thiết kế đến thời điểm triển khai.
2. DevOps khác với phương pháp linh hoạt như thế nào?
DevOps là một nền văn hóa cho phép nhóm phát triển và nhóm vận hành làm việc cùng nhau. Điều này dẫn đến việc phát triển , thử nghiệm, tích hợp, triển khai và giám sát phần mềm liên tục trong suốt vòng đời.
Agile là một phương pháp phát triển phần mềm tập trung vào việc phát hành phần mềm lặp đi lặp lại, tăng dần, nhỏ và nhanh chóng cùng với phản hồi của khách hàng. Nó giải quyết những khoảng trống và xung đột giữa khách hàng và nhà phát triển.
DevOps giải quyết các khoảng trống và xung đột giữa Nhà phát triển và Hoạt động CNTT.
3. Một số công cụ DevOps phổ biến nhất là gì?
Các công cụ DevOps phổ biến nhất bao gồm:
4. DevOps có những giai đoạn nào?
Các giai đoạn khác nhau của vòng đời DevOps như sau:
- Kế hoạch: Ban đầu, cần có kế hoạch cho loại ứng dụng cần phát triển. Có được một bức tranh sơ bộ về quá trình phát triển luôn là một ý tưởng hay.
- Mã: Ứng dụng được mã hóa theo yêu cầu của người dùng cuối.
- Build: Xây dựng ứng dụng bằng cách tích hợp các mã khác nhau được hình thành ở các bước trước.
- Kiểm tra: Đây là bước quan trọng nhất trong quá trình phát triển ứng dụng. Kiểm tra ứng dụng và xây dựng lại nếu cần thiết.
- Tích hợp: Nhiều mã từ các lập trình viên khác nhau được tích hợp thành một.
- Triển khai: Mã được triển khai vào môi trường đám mây để sử dụng thêm. Nó được đảm bảo rằng bất kỳ thay đổi mới nào đều không ảnh hưởng đến hoạt động của một trang web có lưu lượng truy cập cao.
- Vận hành: Các hoạt động được thực hiện trên mã nếu được yêu cầu.
- Giám sát: Hiệu suất ứng dụng được theo dõi. Những thay đổi được thực hiện để đáp ứng yêu cầu của người dùng cuối.
5. Đề cập đến một số lợi ích cốt lõi của DevOps.
Những lợi ích cốt lõi của DevOps như sau:
Lợi ích kỹ thuật
- Cung cấp phần mềm liên tục
- Các vấn đề ít phức tạp hơn để quản lý
- Phát hiện sớm và sửa lỗi nhanh hơn
Lợi ích kinh doanh
- Cung cấp các tính năng nhanh hơn
- Môi trường hoạt động ổn định
- Cải thiện giao tiếp và hợp tác giữa các nhóm
Cũng đọc: Làm thế nào để trở thành Kỹ sư DevOps?
6. Bạn sẽ tiếp cận một dự án cần triển khai DevOps như thế nào?
Các phương pháp tiếp cận tiêu chuẩn sau đây có thể được sử dụng để triển khai DevOps trong một dự án cụ thể:
Giai đoạn 1
Đánh giá quy trình hiện tại và việc thực hiện trong khoảng hai đến ba tuần để xác định các lĩnh vực cần cải thiện để nhóm có thể lập lộ trình thực hiện.
Giai đoạn 2
Tạo bằng chứng về khái niệm (PoC). Sau khi được chấp nhận và phê duyệt, nhóm có thể bắt đầu triển khai thực tế và triển khai kế hoạch dự án.
Giai đoạn 3
Dự án hiện đã sẵn sàng để triển khai DevOps bằng cách sử dụng tính năng kiểm soát/tích hợp/thử nghiệm/triển khai/phân phối và giám sát phiên bản theo từng bước.
Bằng cách làm theo các bước thích hợp để kiểm soát phiên bản , tích hợp, thử nghiệm, triển khai, phân phối và giám sát, dự án hiện đã sẵn sàng để triển khai DevOps.
7. Sự khác biệt giữa phân phối liên tục và triển khai liên tục là gì?
Giao hàng liên tục |
Triển khai liên tục |
Đảm bảo mã có thể được triển khai an toàn vào sản xuất | Mọi thay đổi vượt qua các bài kiểm tra tự động sẽ được triển khai tự động vào sản xuất |
Đảm bảo các ứng dụng và dịch vụ kinh doanh hoạt động như mong đợi | Làm cho quá trình phát triển và phát hành phần mềm nhanh hơn và mạnh mẽ hơn |
Cung cấp mọi thay đổi cho môi trường giống như sản xuất thông qua thử nghiệm tự động nghiêm ngặt | Không có sự chấp thuận rõ ràng từ nhà phát triển và đòi hỏi phải có văn hóa giám sát phát triển |
8. Vai trò của quản lý cấu hình trong DevOps là gì?
- Cho phép quản lý và thay đổi nhiều hệ thống.
- Chuẩn hóa cấu hình tài nguyên, từ đó quản lý cơ sở hạ tầng CNTT.
- Nó giúp quản trị và quản lý nhiều máy chủ và duy trì tính toàn vẹn của toàn bộ cơ sở hạ tầng.
9. Việc giám sát liên tục giúp bạn duy trì toàn bộ kiến trúc của hệ thống như thế nào?
Giám sát liên tục trong DevOps là quá trình phát hiện, xác định và báo cáo mọi lỗi hoặc mối đe dọa trong toàn bộ cơ sở hạ tầng của hệ thống.
- Đảm bảo rằng tất cả các dịch vụ, ứng dụng và tài nguyên đang chạy đúng cách trên máy chủ.
- Theo dõi trạng thái của máy chủ và xác định xem các ứng dụng có hoạt động chính xác hay không.
- Cho phép kiểm tra liên tục, kiểm tra giao dịch và giám sát có kiểm soát.
10. Vai trò của AWS trong DevOps là gì?
AWS có vai trò sau trong DevOps:
- Dịch vụ linh hoạt: Cung cấp các dịch vụ linh hoạt, sẵn sàng sử dụng mà không cần cài đặt hay thiết lập phần mềm.
- Được xây dựng cho quy mô: Bạn có thể quản lý một phiên bản duy nhất hoặc mở rộng quy mô lên hàng nghìn bằng cách sử dụng dịch vụ AWS.
- Tự động hóa: AWS cho phép bạn tự động hóa các tác vụ và quy trình, giúp bạn có thêm thời gian để đổi mới
- Bảo mật: Bằng cách sử dụng AWS Identity and Access Management (IAM), bạn có thể đặt quyền và chính sách của người dùng.
- Hệ sinh thái đối tác lớn: AWS hỗ trợ một hệ sinh thái lớn gồm các đối tác tích hợp và mở rộng dịch vụ AWS.
11. Kể tên ba KPI DevOps quan trọng.
Ba KPI quan trọng như sau:
- Thời gian chờ phục hồi sau sự cố: Đây là thời gian trung bình cần thiết để khôi phục sau sự cố.
- Tần suất triển khai: Tần suất triển khai xảy ra.
- Tỷ lệ triển khai không thành công: Số lần triển khai không thành công.
12. Giải thích thuật ngữ "Cơ sở hạ tầng dưới dạng mã" (IaC) vì nó liên quan đến quản lý cấu hình.
- Viết mã để quản lý cấu hình, triển khai và cung cấp tự động.
- Quản lý trung tâm dữ liệu bằng các tệp định nghĩa mà máy có thể đọc được thay vì cấu hình phần cứng vật lý.
- Đảm bảo tất cả máy chủ của bạn và các thành phần cơ sở hạ tầng khác được cung cấp nhất quán và dễ dàng.
- Quản trị môi trường điện toán đám mây hay còn gọi là cơ sở hạ tầng dưới dạng dịch vụ (IaaS) .
13. IaC được triển khai bằng AWS như thế nào?
Bắt đầu bằng cách nói về các cơ chế lâu đời trong việc ghi lệnh vào tệp tập lệnh và kiểm tra chúng trong một môi trường riêng trước khi triển khai cũng như cách IaC thay thế phương pháp này. Tương tự như các mã được viết cho các dịch vụ khác, với sự trợ giúp của AWS, IaC cho phép các nhà phát triển viết, kiểm tra và duy trì các thực thể cơ sở hạ tầng theo cách mô tả, sử dụng các định dạng như JSON hoặc YAML. Điều này cho phép phát triển dễ dàng hơn và triển khai nhanh hơn các thay đổi cơ sở hạ tầng.
14. Tại sao DevOps lại nổi bật trong vài năm qua?
Trước khi nói về mức độ phổ biến ngày càng tăng của DevOps, hãy thảo luận về bối cảnh hiện tại của ngành. Bắt đầu với một số ví dụ về cách các công ty lớn như Netflix và Facebook đang đầu tư vào DevOps để tự động hóa và tăng tốc triển khai ứng dụng cũng như cách điều này đã giúp họ phát triển hoạt động kinh doanh của mình. Lấy Facebook làm ví dụ, bạn sẽ chỉ ra các mô hình sở hữu mã và triển khai liên tục của Facebook cũng như cách những mô hình này đã giúp Facebook mở rộng quy mô nhưng đồng thời vẫn đảm bảo chất lượng trải nghiệm. Hàng trăm dòng mã được triển khai mà không ảnh hưởng đến chất lượng, tính ổn định và bảo mật.
Trường hợp sử dụng tiếp theo của bạn sẽ là Netflix. Công ty phát trực tuyến và video theo yêu cầu này tuân theo các phương pháp tương tự với các quy trình và hệ thống hoàn toàn tự động. Đề cập đến cơ sở người dùng của hai tổ chức này: Facebook có 2 tỷ người dùng trong khi Netflix truyền phát nội dung trực tuyến tới hơn 100 triệu người dùng trên toàn thế giới.
Đây là những ví dụ tuyệt vời về cách DevOps có thể giúp các tổ chức đảm bảo tỷ lệ phát hành thành công cao hơn, giảm thời gian thực hiện giữa các lần sửa lỗi, hợp lý hóa và phân phối liên tục thông qua tự động hóa và giảm tổng chi phí nhân lực.
Bây giờ chúng ta sẽ xem xét bộ Câu hỏi phỏng vấn DevOps tiếp theo bao gồm - Git, Selenium, Jenkins.
15. Sự khác biệt cơ bản giữa DevOps & Agile là gì?
Sự khác biệt chính giữa Agile và DevOps được tóm tắt dưới đây:
Đặc trưng |
agile |
DevOps |
Phạm vi công việc |
Chỉ có agile |
Cần tự động hóa cùng với Agility |
Khu vực tập trung |
Ưu tiên chính là Thời gian và thời hạn |
Quản lý chất lượng và thời gian được ưu tiên như nhau |
Nguồn phản hồi |
Nguồn phản hồi chính - khách hàng |
Nguồn phản hồi chính - bản thân (công cụ được sử dụng để giám sát) |
Thực tiễn hoặc quy trình tuân theo |
Các phương pháp thực hành như Agile Kanban, Scrum, v.v. đều được tuân thủ. |
Các quy trình và thực tiễn như Phát triển liên tục (CD), Tích hợp liên tục (CI), v.v., đều được tuân thủ. |
Sprint phát triển hoặc chu kỳ phát hành |
Chu kỳ phát hành thường nhỏ hơn. |
Chu kỳ phát hành nhỏ hơn, cùng với phản hồi ngay lập tức. |
agile |
Chỉ có sự agile phát triển hiện diện. |
Cả trong hoạt động và phát triển đều tuân theo sự agile. |
16. Các mô hình phản đối của DevOps là gì?
Các khuôn mẫu là những thông lệ phổ biến thường được các tổ chức tuân theo. Một khuôn mẫu phản đối được hình thành khi một tổ chức tiếp tục mù quáng đi theo một khuôn mẫu đã được người khác áp dụng nhưng không hiệu quả với họ. Một số lầm tưởng về DevOps bao gồm:
- Không thể thực hiện DevOps → Chọn nhầm người
- DevOps ⇒ Quản lý sản xuất được thực hiện bởi các nhà phát triển
- Giải pháp cho mọi vấn đề của tổ chức ⇒ DevOps
- DevOps == Quy trình
- DevOps == Linh hoạt
- Không thể thực hiện DevOps → Tổ chức là duy nhất
- Cần tạo một nhóm riêng cho DevOps
17. Lợi ích của việc sử dụng kiểm soát phiên bản là gì?
Dưới đây là những lợi ích của việc sử dụng Kiểm soát phiên bản:
- Tất cả các thành viên trong nhóm có thể tự do làm việc trên bất kỳ tệp nào vào bất kỳ lúc nào với Hệ thống kiểm soát phiên bản (VCS). Sau này, VCS sẽ cho phép nhóm tích hợp tất cả các sửa đổi vào một phiên bản duy nhất.
- VCS yêu cầu cung cấp bản tóm tắt ngắn gọn về những gì đã thay đổi mỗi khi chúng tôi lưu phiên bản mới của dự án. Chúng tôi cũng có thể kiểm tra chính xác những gì đã được sửa đổi trong nội dung của tệp. Do đó, chúng tôi sẽ có thể biết ai đã thực hiện những thay đổi nào đối với dự án.
- Bên trong VCS, tất cả các biến thể và phiên bản trước đó đều được lưu trữ đúng cách. Chúng tôi sẽ có thể yêu cầu bất kỳ phiên bản nào vào bất kỳ lúc nào và chúng tôi sẽ có thể truy xuất ảnh chụp nhanh của toàn bộ dự án trong tầm tay.
- Một VCS được phân phối, chẳng hạn như Git, cho phép tất cả các thành viên trong nhóm truy xuất toàn bộ lịch sử của dự án. Điều này cho phép các nhà phát triển hoặc các bên liên quan khác sử dụng kho Git cục bộ của bất kỳ thành viên nào trong nhóm ngay cả khi máy chủ chính ngừng hoạt động bất kỳ lúc nào.
18. Mô tả các chiến lược phân nhánh mà bạn đã sử dụng.
Để kiểm tra kiến thức của chúng tôi về mục đích của việc phân nhánh và kinh nghiệm của chúng tôi về việc phân nhánh ở công việc trước đây, câu hỏi này thường được hỏi.
Các chủ đề dưới đây có thể giúp trả lời câu hỏi phỏng vấn DevOps này -
- Phân nhánh phát hành - Chúng ta có thể sao chép nhánh phát triển để tạo nhánh Phát hành khi nó có đủ chức năng cho một bản phát hành. Nhánh này khởi động chu kỳ phát hành tiếp theo, do đó không có tính năng mới nào có thể được đóng góp ngoài thời điểm này. Những thứ có thể đóng góp là tạo tài liệu, sửa lỗi và các tác vụ khác liên quan đến phát hành. Bản phát hành được hợp nhất thành bản chính và được cấp số phiên bản sau khi sẵn sàng xuất xưởng. Nó cũng nên được hợp nhất trở lại nhánh phát triển, nhánh này có thể đã phát triển kể từ lần phát hành đầu tiên.
- Phân nhánh tính năng - Mô hình phân nhánh này duy trì tất cả các sửa đổi cho một tính năng cụ thể có trong một nhánh. Nhánh được hợp nhất thành nhánh chính sau khi tính năng này đã được kiểm tra và phê duyệt hoàn toàn bằng cách sử dụng các thử nghiệm tự động.
- Phân nhánh nhiệm vụ - Trong mô hình phân nhánh này, mọi nhiệm vụ được triển khai trong nhánh tương ứng của nó. Khóa tác vụ được đề cập trong tên chi nhánh. Chúng ta chỉ cần nhìn vào khóa tác vụ trong tên nhánh để biết mã nào thực hiện tác vụ nào.
19. Bạn có thể giải thích khái niệm “Dịch chuyển sang trái để giảm thất bại” trong DevOps không?
Shift left là một ý tưởng DevOps nhằm cải thiện tính bảo mật, hiệu suất và các yếu tố khác. Hãy lấy một ví dụ: nếu xem xét tất cả các quy trình trong DevOps, chúng ta có thể nói rằng tính bảo mật đã được kiểm tra trước bước triển khai. Chúng ta có thể thêm bảo mật trong giai đoạn phát triển, ở bên trái, bằng cách sử dụng phương pháp dịch chuyển trái. [sẽ được mô tả trong sơ đồ] Chúng tôi có thể tích hợp với tất cả các giai đoạn, bao gồm cả trước khi phát triển và trong quá trình thử nghiệm, không chỉ phát triển. Điều này rất có thể sẽ nâng cao mức độ bảo mật bằng cách phát hiện lỗi ở giai đoạn đầu.
20. Mô hình triển khai Xanh/Xanh là gì?
Đây là phương pháp triển khai liên tục thường được sử dụng để giảm thời gian ngừng hoạt động. Đây là nơi lưu lượng truy cập được chuyển từ phiên bản này sang phiên bản khác. Để bao gồm phiên bản mã mới, chúng tôi phải thay thế mã cũ bằng phiên bản mã mới.
Phiên bản mới tồn tại trong môi trường xanh và phiên bản cũ tồn tại trong môi trường xanh. Sau khi thực hiện các thay đổi đối với phiên bản trước, chúng tôi cần một phiên bản mới từ phiên bản cũ để thực thi phiên bản mới hơn của phiên bản đó.
21. Kiểm tra liên tục là gì?
Kiểm tra liên tục cấu thành việc chạy các thử nghiệm tự động như một phần của quy trình phân phối phần mềm nhằm cung cấp phản hồi tức thì về các rủi ro kinh doanh có trong bản phát hành gần đây nhất. Để ngăn chặn sự cố khi chuyển đổi từng bước trong vòng đời phân phối Phần mềm và cho phép nhóm Phát triển nhận được phản hồi ngay lập tức, mọi bản dựng đều được kiểm tra liên tục theo cách này. Điều này giúp tăng đáng kể tốc độ trong năng suất của nhà phát triển vì nó loại bỏ yêu cầu chạy lại tất cả các thử nghiệm sau mỗi lần cập nhật và xây dựng lại dự án.
22. Kiểm thử tự động là gì?
Kiểm thử tự động hoặc kiểm thử thủ công Tự động hóa là quá trình tự động hóa một quy trình thủ công để kiểm thử một ứng dụng hoặc hệ thống. Kiểm thử tự động đòi hỏi phải sử dụng các công cụ kiểm thử độc lập cho phép bạn phát triển các tập lệnh kiểm thử có thể chạy nhiều lần mà không cần sự tương tác của con người.
23. Lợi ích của Kiểm thử tự động là gì?
Một số ưu điểm của Kiểm thử tự động là -
- Giúp tiết kiệm tiền bạc và thời gian.
- Việc thực hiện không cần giám sát có thể được thực hiện dễ dàng.
- Ma trận thử nghiệm lớn có thể được kiểm tra dễ dàng.
- Thực thi song song được kích hoạt.
- Giảm lỗi do con người tạo ra, giúp cải thiện độ chính xác.
- Thực hiện nhiệm vụ kiểm tra lặp đi lặp lại được hỗ trợ.
24. Làm cách nào để tự động hóa Kiểm thử trong vòng đời DevOps?
Các nhà phát triển có nghĩa vụ cam kết tất cả các thay đổi mã nguồn đối với kho lưu trữ DevOps được chia sẻ.
Mỗi khi có thay đổi trong mã, các công cụ Tích hợp liên tục giống như Jenkins sẽ lấy nó từ kho lưu trữ chung này và triển khai nó để Kiểm tra liên tục, việc này được thực hiện bởi các công cụ như Selenium.
25. Tại sao Kiểm thử liên tục lại quan trọng đối với DevOps?
Bất kỳ sửa đổi nào đối với mã đều có thể được kiểm tra ngay lập tức bằng Kiểm tra liên tục. Điều này ngăn ngừa những lo ngại như vấn đề về chất lượng và độ trễ phát hành có thể xảy ra bất cứ khi nào thử nghiệm lớn bị trì hoãn cho đến cuối chu kỳ. Bằng cách này, Kiểm tra liên tục cho phép phát hành thường xuyên và chất lượng cao hơn.
26. Các yếu tố chính của công cụ Kiểm tra liên tục là gì?
Các yếu tố chính của Kiểm tra liên tục là:
- Tối ưu hóa kiểm tra: Nó đảm bảo rằng các bài kiểm tra tạo ra kết quả đáng tin cậy và thông tin có thể thực hiện được. Quản lý dữ liệu thử nghiệm, Quản lý tối ưu hóa thử nghiệm và Bảo trì thử nghiệm là những ví dụ về các khía cạnh.
- Phân tích nâng cao: Để tránh các vấn đề xảy ra ngay từ đầu và đạt được nhiều thành tựu hơn trong mỗi lần lặp, nó sử dụng tự động hóa trong các lĩnh vực như đánh giá/ưu tiên phạm vi, phân tích hiệu ứng thay đổi và phân tích mã tĩnh.
- Phân tích chính sách: Nó đảm bảo rằng tất cả các quy trình đều phù hợp với nhu cầu kinh doanh đang thay đổi của tổ chức và tất cả các yêu cầu tuân thủ đều được đáp ứng.
- Đánh giá rủi ro: Tối ưu hóa phạm vi kiểm thử, nợ kỹ thuật, nhiệm vụ giảm thiểu rủi ro và đánh giá chất lượng đều được đề cập để đảm bảo quá trình xây dựng sẵn sàng chuyển sang giai đoạn tiếp theo.
- Ảo hóa dịch vụ: Đảm bảo có sẵn các kịch bản thử nghiệm trong thế giới thực. Trực quan hóa dịch vụ cung cấp quyền truy cập vào bản trình bày ảo về các giai đoạn thử nghiệm cần thiết, đảm bảo tính khả dụng của nó và giảm thời gian thiết lập môi trường thử nghiệm.
- Yêu cầu Truy xuất nguồn gốc: Nó đảm bảo rằng không cần phải làm lại và đáp ứng các tiêu chí thực tế. Để xác định nhu cầu nào cần xác nhận bổ sung, đang gặp nguy hiểm và hoạt động như mong đợi, đánh giá đối tượng sẽ được sử dụng.