Trong thập kỷ qua, vị trí DevOps ngày càng được chú trọng và đang trở nên vô cùng hot, được săn đón rất nhiều trên thị trường. Đối với Quản trị viên hệ thống, kỹ sư vận hành và các vị trí làm việc khác có kinh nghiệm lập trình phần mềm … có lẽ không có thời điểm nào tốt hơn bây giờ nên chuyển qua lĩnh vực DevOps. Tính đến tháng 8 năm 2019, có hơn 50.000 danh sách việc làm tại LinkedIn dành cho vị trí DevOps chỉ riêng tại nước Mỹ. Tại Việt Nam, mức lương các kỹ sư DevOps cũng có được mức lương đáng mơ ước. Để có cái nhìn tổng quát hơn về vị trí làm việc và lương của DevOps, bạn có thể xem thêm bài viết DevOps Engineer làm gì? Vai trò trách nhiệm và mức lương của DevOps
Giả sử bạn đã học được các kiến thức cơ bản và sẵn sàng bắt đầu công việc tìm kiếm việc làm của mình. Làm thế nào để bạn vượt qua cuộc phỏng vấn cho vị trí DevOps? Kỹ sư DevOps phải vừa là nhà phát triển phần mềm giỏi vừa là chuyên gia về Linux infrastructure, networking, thuật toán và các công cụ DevOps như Terraform, Docker hay Kubernetes. Tại các cuộc phỏng vấn nhà tuyển dụng có thể hỏi bạn các câu hỏi từ coding cơ bản đến các câu hỏi về thiết kế hệ thống, xử lý lỗi Linux và các công cụ DevOps.
Sau đây là những bước bạn cần chuẩn bị cho cuộc phỏng vấn vị trí DevOps:
Giới thiệu
Động lực là một khởi đầu tuyệt vời, nhưng bạn cần phải có kỷ luật để chuẩn bị hiệu quả. Bài viết này sẽ giúp bạn hình thành thói quen chuẩn bị phỏng vấn nghiêm túc và có kỷ luật. Phỏng vấn có thể thực sự khó nuốt – nó không theo khuôn mẫu và có thể khiến bạn cảm thấy bối rối. Có quá nhiều thứ bạn không biết nên bắt đầu từ đâu, nhưng bạn có thể kiểm soát cách bạn chuẩn bị.
Bạn sẽ phải học rất nhiều, vì vậy đừng nghĩ rằng có thể học tất cả mọi thứ cùng một lúc. Bạn nên chọn một chủ đề để tập trung vào, và tuần sau bạn sẽ chọn một chủ đề khác để tập trung giải quyết. Tóm lại, bạn nên chọn 2 hoặc 3 nhiệm vụ để giải quyết và thực hành mỗi ngày, luân phiên theo các chủ đề khác nhau. Sau đây là các vấn đề bạn cần tìm hiểu cho vị trí DevOps (liệt kê theo thứ tự quan trọng từ trên xuống dưới):
- Linux Fundamentals
- Data Structures and Algorithms
- System Design
- Parsing
- DevOps Tools
Trước tiên, bạn nên học từ cơ bản tới nâng cao, cân bằng giữa các khối lượng kiến thức theo chủ đề “cuốn chiếu”. Cách này giúp bạn hiểu sâu hơn về khung khái niệm trong thế giới DevOps và dễ dàng dung nạp thêm thông tin mới vào mỗi nhiệm vụ. Một số task bạn nên thực hành hàng ngày như giải quyết các vấn đề trên CodeSignal, hay thử thách với OverTheWire.
“Nếu bạn muốn đi nhanh, hãy đi một mình. Nhưng nếu bạn muốn đi xa, hãy đi cùng nhau”. Tạo một nhóm học tập với các đồng nghiệp và cùng nhau thực hành có trách nhiệm. Cùng check-in và chia sẻ thông tin hàng tuần hoặc hàng ngày cho nhau. Sẽ có khoảng thời gian bạn cảm thấy không có động lực để học hỏi tiếp, thì hãy nhớ trong đầu rằng “làm điều gì đó sẽ tốt hơn nhiều so với việc không làm gì cả”. Trong những khoảng thời gian bạn cảm thấy quá phấn khích, hãy nhớ rằng giấc ngủ và tập thể dục đều quan trọng đối với thành công của bạn như bất cứ điều gì khác. Những hoạt động này là bước đệm cho giai đoạn tiếp theo trong sự nghiệp.
Linux Fundamentals
Là một kỹ sư DevOps, bạn phải hiểu rất rõ về Linux, xem nó như tay chân của mình. Mọi câu hỏi về Linux đều quan trọng như nhau, từ kernel đến networking hay các dòng lệnh.
Câu hỏi ví dụ
- Trình tự các bước xảy ra khi máy tính có hệ điều hành Linux được khởi động là gì?
- Điều gì xảy ra khi bạn gõ tìm kiếm vào trang google.com và kết quả trả về trình duyệt? Điều gì sẽ xảy ra nếu trang web đó không xuất hiện – làm cách nào để debug sự cố đó?
- Làm cách nào để kiểm tra filesystems của bạn có sắp hết dung lượng hay không? Làm thế nào để bạn in một danh sách files lớn nhất? Làm cách nào để xóa tất cả các files .mov có dung lượng lớn hơn 1 GB?
Việc cần làm
- Đọc qua cuốn The Linux Command Line có bán trên Amazon
- Thử sức qua các wargames trên OverTheWire. Đây như là cuộc săn lùng thú vị thông qua các hệ thống Linux được thiết kế riêng và dạy bạn về các khai niệm cơ bản. Ít nhất phải vượt qua các cấp độ Bandit. Đừng ngại các giải pháp của Google nếu bạn gặp khó khăn. Bạn nên ghi lại tiến trình của mình trong GitHub khi làm việc.
- Học về vim bằng cách sử dụng lệnh vimtutor. Nó là text editor tốt nhất từ trước đến nay.
- Nên cân nhắc tham gia các khoán học trả tiền như A Cloud Guru (trước đây có cả Linux Academy nhưng đã sát nhập vào A Cloud Guru) để nhận chứng chỉ Linux fundamentals (Linux +, RedHat, v.v.). Chứng chỉ nghề nghiệp có thể giúp bạn lấp đầy những khoảng trống trong kiến thức và chứng minh rằng bạn có hiểu biết cơ bản.
Tham khảo
- Hướng dẫn tham khảo tốt nhất cho các lệnh Linux là tldr.sh. Bạn nên tải xuống ứng dụng di động tl; dr để tham khảo nhanh. Điều này sẽ giúp bạn trong các cuộc phỏng vấn qua điện thoại mà bạn không biết một command nào trong đầu.
- devhints.io là một nguồn tuyệt vời cho các thể loại cheat sheets.
- Trông có vẻ đơn giản, nhưng Advanced Bash Scripting Guide là một kho tư liệu đáng để bạn khai thác.
Cấu trúc dữ liệu và giải thuật
Hãy nhớ rằng DevOps là Development + Operations, vì vậy, bạn phải biết cách viết code. Chọn một language (không phải Bash). Nếu bạn chưa có sự lựa chọn, tôi khuyên bạn nên sử dụng Python và thực hành, thực hành và thực hành.
Điều này không chỉ giúp bạn tìm ra giải pháp tối ưu mà bạn phải trao đổi rõ ràng các vấn đề với nhà tuyển dụng, truyền đạt suy nghĩ của bạn trong quá trình thực hiện và tính toán độ phức tạp về thời gian và không gian của các giải thuật khác nhau.
Câu hỏi ví dụ
- Loại bỏ tất cả các phần tử trùng lắp khỏi danh sách.
- Tìm missing IP trong một file có chứa tất cả các IPs có khả năng có ngoại trừ một.
- Sắp xếp tất cả các nodes của cây nhị phân.
Việc cần làm
- Khan Academy có khóa học về cấu trúc dữ liệu và thuật toán rất hay. Chương trình học này được thực hiện với sự hợp tác của Tom Cormen, tác giả của cuốn sách “Definitive book on data structures and algorithms” mà bạn nên sở hữu một cuốn.
- LeetCode có một kho dữ liệu lớn các câu hỏi phỏng vấn gần với thực tế. Thật ra, nhiều công ty sẽ trực tiếp hỏi bạn những câu hỏi về LeetCode! Làm ít nhất 10 câu hỏi dễ và trung bình của mỗi loại thuật toán. Bạn hãy thử sức hoàn thành 100 câu hỏi và giải quyết từng vấn đề mà không cần tra cứu gì cả.
- Làm việc thông qua tài liệu chuẩn bị phỏng vấn hàng ngày trên CodeSignal. Bạn nên sử dụng Python, nhưng cũng có thể làm việc bằng bất kỳ ngôn ngữ nào. Copy và paste code của bạn vào các files và control các version tại GitHub. Mỗi ngày, hãy xem qua đoạn code mà bạn đã viết và ghi lại một cách chi tiết. Viết code nhanh hơn đọc lại code cũ của bạn và cố gắng nhớ những gì đang diễn ra. Xem lại code cũ sau một hoặc hai ngày sẽ giúp bạn tổng hợp lại những gì mình đã và đang học.
- Làm việc thông qua CodeSignal’s Python Arcade. Xem như là một chuyến tham quan thú vị về thư viện Python tiêu chuẩn.
- Nghiên cứu về Quy Hoạch Động (Dynamic Programming), Đồ thị có định hướng không tuần hoàn (Directed Acyclic Graphs), Sắp xếp To Po (Topological Sort).
- Bạn cần biết một chút về SQL. Không cần phải dành nhiều thời gian cho việc này, nhưng bạn nên đăng ký tài khoản miễn phí trên Mode Analytics và thử sử dụng các tương tác SQL vì cơ sở dữ liệu ở đây được public.
- Khi bạn cảm thấy kỹ năng viết code đã cải thiện, hãy sử dụng Pramp để thực hành các cuộc phỏng vấn kỹ thuật trực tiếp.
- Hãy nhớ rằng kiến thức duy nhất quan trọng là những gì bạn có thể trả lời trước nhà tuyển dụng, trên bảng trắng (whiteboard) hoặc viết code trực tiếp. Nếu bạn cảm thấy bối rối và lo lắng với các tình huống căng thẳng, thì đừng lo lắng vì bạn không phải là người duy nhất cảm thấy vậy đâu. Chỉ cần bạn đảm bảo thực hành nhiều với đồng nghiệp trước các tình huống.
Tham khảo thêm về Python
- LearnXinYminutes
- Python Cheat Sheet
- Hitchhiker’s Guide to Python: Tài liệu Python tốt nhất.
Thiết kế hệ thống (System Design)
Cuộc phỏng vấn về System Design sẽ kiểm tra tư duy tổng thể, khả năng thiết kế cơ sở hạ tầng phức tạp và kỹ năng giao tiếp của bạn.
Câu hỏi ví dụ
- Thiết kế một mạng xã hội như Twitter. Làm thế nào bạn đảm bảo tính khả dụng cao ở các khu vực khác nhau?
Việc cần làm
- Học từng chủ đề trên System Design Primer. Bạn nên chọn một chủ đề và nhờ một người bạn chọn một chủ đề khác, sau đó dành 2 giờ để nghiên cứu chủ đề của bạn trước khi quay lại cùng nhau trong một hoặc hai giờ để chia sẻ. Lần lượt đóng vai nhà tuyển dụng và người được phỏng vấn.
- Đọc cuốn Google SRE. Đây là cuốn sách nên đọc cho các DevOps thời hiện đại.
Có thể bạn muốn tìm hiểu thêm: DevOps là gì và những lợi ích của DevOps
Phân tích cú pháp (Parsing)
Sysadmins thường xuyên phân tích outputs và nhật ký hệ thống (log) để có được thông tin chi tiết về hệ thống và debug các vấn đề. Phân tích cú pháp dòng lệnh với các công cụ như grep, awk và sed là một kỹ năng quan trọng đối với kỹ sư DevOps.
Câu hỏi ví dụ
- Tìm xem từ log máy chủ web Apache, có bao nhiêu yêu cầu được thực hiện mỗi ngày? Những IP nào được khách truy cập thường xuyên nhất? Những trang và hình ảnh nào được yêu cầu nhiều nhất?
Việc cần làm
- Làm qua các bài tập trên Insight’s parsing workshop materials. Tập trung vào phần về câu lệnh awk. Phần tài liệu khá tốt nhưng quan trọng nhất là phần bài tập.
Tham khảo
- LearnXinYminutes: Tài liệu tham khảo dành cho awk.
- Regexr: Tài liệu tham khảo về regular expression tốt nhất.
Các công cụ DevOps (DevOps Tools)
Docker, Terraform và Kubernetes là các công cụ dành cho lập trình viên DevOps quan trọng và bạn nên tìm hiểu cách sử dụng kỹ từng công cụ. Bạn cũng nên biết ít nhất một trong các tools CI / CD, chẳng hạn như Jenkins. Cách tốt nhất là bạn nên học cách sử dụng các tools này trên một trong ba nền tảng đám mây lớn nhất: AWS, GCP hoặc Azure.
Câu hỏi ví dụ
- Deploy một ứng dụng Docker trên phiên bản AWS EC2 mới bằng Terraform.
Việc cần làm
- Bạn cần học Kubernetes, tìm hiểu về containerization và Docker.
- Học tài liệu Docker cho người mới bắt đầu
- Học Play With Docker Classroom
- Đọc qua các khái niệm về Kubernetes
- Đọc hướng dẫn Cơ bản về Kubernetes
- Để tìm hiểu sâu hơn, hãy tham gia khóa học Katacoda
- Đọc tài liệu Jenkins tutorial
- Dùng Vagrant để định nghĩa một máy ảo (Virtual Machine), dùng VirtualBox hay Packer để export máy ảo đó ra OVA (Open Virtualization Application/Appliance) file
- Đọc Hướng dẫn về Terraform của Terragrunt
- Học qua Terraform Tutorial
- Tìm hiểu về Ansible, là công cụ dùng để tự động hóa việc cấu hình trên nhiều server. Đối với một số bài thực hành thì có lẽ trên Linux Academy có những khóa học rất tốt nhưng không miễn phí.
- Tìm hiểu về công cụ Consul. Consul là một phần mềm với tính năng Truy tìm dịch vụ (Service Discovery) và một số tính năng khác như KeyValue storage, Service Mesh etc..
- Tìm hiểu về Vault. Vault là một công cụ của công ty HashiCorp với mục tiêu lưu trữ và quản lý các thông tin bảo mật. Các thông tin dữ liệu bảo mật mà Vault phục vụ bao gồm: tokens, passwords, certificates, API keys, và các thông tin cần bảo mật khác..
- Tìm hiểu về service mash và công cụ Linkerd.
- Tìm hiểu về Apache Kafka, hệ thống message publish/subcribe phân tán có khả năng mở rộng rất cao. Bạn cũng có thể tìm thêm các khóa học cho chủ đề này tại đây. Ngoài ra, bạn cũng có thể xem thêm trên Github tại repos này
Tham khảo
- Tham khảo về Ansible với Ansible User Guide.
- Bạn muốn làm gì cụ thể hơn với Kubernetes? Xem tại phần Tasks của tài liệu trong link. Có nhiều hướng dẫn cụ thể cho những việc mà bạn có thể làm theo.
- Trang Samples về Docker có những ví dụ cụ thể về cách xây dựng những ứng dụng cũng như các hướng dẫn khác, chẳng hạn như Django+Postgres
Bạn nên làm gì thêm?
- Thường xuyên nghe podcast Software Engineering Daily. Đây là cách tốt nhất để nắm bắt xu hướng của thế giới DevOps. Bạn nên tải app này về để có thể dễ dàng tìm kiếm các tập cũ để nghe lại các chuyên mục chuyên sâu về công nghệ và cũng như các khái niệm mới.
- Đọc boards Kanban và sử dụng chúng để nâng cao sự tập trung và năng suất của bạn. GitHub boards kanban đơn giản giúp bạn có thể sử dụng để duy trì hiệu quả công việc.
- Tìm hiểu chi tiết kỹ thuật của một số tools yêu thích của bạn. Bắt đầu với tài liệu cơ bản. Ghép nối và chia sẻ bài học kinh nghiệm từ những kiến thức chuyên sâu về kỹ thuật.
- Cân nhắc việc học có trả phí cho khóa học Linux Academy, các khóa học acloudguru để nhận chứng chỉ AWS, GCP hoặc Azure.
Tham khảo:
- Digital Ocean có những hướng dẫn rất bổ ích. Khi tìm trên Google bạn có thể thử <chủ đề cần tìm> site:digitalocean.com trước. Điều này đặc biệt hữu ích khi bạn lần đầu tiên học cách cài đặt thứ gì đó theo cách thủ công.
Xem thêm bài viết gốc của tác giả Chuck Larrieu Casias tại đây! Hãy để lại comment của bạn về kinh nghiệm chuẩn bị cho việc interview về DevOps ở phần bình luận bên dưới.
Bạn có biết?
tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất
Linkedin Page:
Facebook Group:
cơ hội việc làm IT : ITguru.vn