Devops là gì mà hiện tại nhu cầu tuyển dụng nhân sự ở vị trí Kỹ Sư DevOps (DevOps Engineer) tại các công ty công nghệ ở Việt Nam hoặc trên thế giới đang rất cao và vẫn đang tăng đều qua từng năm.
Những chia sẻ dưới đây sẽ lần lượt giải đáp từng thắc mắc xoay quanh về Devops để bạn có được cái nhìn tổng quan về nó.
Nội dung
- DevOps là gì?
- Vậy còn DevOps Engineer là gì?
- Lợi ích của DevOps
- Devops cần học những gì? Lộ trình học Devops
- 1. Learn a programming language – học một ngôn ngữ lập trình
- 2. Understand different OS concepts – hãy chuẩn bị những kiến thức về các hệ điều hành khác nhau
- 3. Learn to live in terminal – học cách “ăn ngủ” cùng terminal
- 4. Networking and Security – hệ thống mạng và bảo mật
- 5. What is and how to setup a… – học về cách thức setup…
- 6. Learn Infrastructure as code – học cấu trúc mã
- 7. Learn some CI/CD tools – học các công cụ CI/CD
- 8. Learn how to monitor software and infrastructure – học giám sát ứng dụng và hệ thống
- 9. Learn about Cloud Provides – học về Cloud Provides
- Beginners thì nên học từ đâu?
- Tạm kết
DevOps là gì?
DevOps là một văn hóa làm việc đề cao sự hợp tác, kéo giai đoạn phát triển (development) và vận hành (operations) xích lại gần nhau hơn.
Cụ thể, chu trình phát triển phần mềm (Software Development Life Cycle) bao gồm hai giai đoạn chính: phát triển và vận hành. Trong đó:
- Giai đoạn phát triển (development) bao gồm phần việc của designer, developer, QA QC…
- Giai đoạn vận hành (operations) có sự tham gia của system engineer, system administrator, operation executive, release engineer, DBA, network engineer, security engineer…
Hai giai đoạn này tương đối tách rời nhau, đặc biệt là ở các công ty có quy mô trung bình trở lên. Vì vậy, khái niệm DevOps ra đời nhằm tối ưu hóa chu trình phát triển phần mềm, giúp sản phẩm IT được “release” nhanh và thường xuyên hơn.
Vậy còn DevOps Engineer là gì?
Đây là một vị trí công việc nảy sinh do nhu cầu thực tiễn công việc.
Nhìn chung, công việc chính của DevOps Engineer rất gần với công việc của một nhà quản trị viên hệ thống (sysadmin), bao gồm: deploy (triển khai), optimizing (tối ưu), monitoring (giám sát), analysis (phân tích)… Tuy nhiên cũng có một chút khác điểm khác biệt với đó là:
- DevOps Engineer thì sẽ đòi hỏi nhiều kỹ năng mềm hơn, đồng thời phải biết dùng coding, scripting để automate hệ thống.
- Người làm DevOps Engineer cũng cần tìm hiểu về stack mà sản phẩm công ty đang sử dụng, để có thể cùng review bug, viết những unit test thông thường, và để khi phát triển tiến trình CI/CD thì deploy “êm ái” hơn.
Lợi ích của DevOps
Đóng góp lớn nhất của DevOps là cùng với phương pháp Agile (một phương pháp nhằm giúp việc phát triển phần mềm được và hiệu quả hơn), nó giúp hoàn thiện việc chuyển đổi quy trình phát triển và vận hành phần mềm từ mô hình thác nước (waterfall) truyền thống sang mô hình phát triển/phát hành liên tục (continuous development/releases).
Các lợi ích của DevOps bao gồm những điều sau:
- Giúp tăng cường sự giao tiếp giữa các team;
- Rút ngắn thời gian tiếp thị phần mềm;
- Cải tiến nhanh chóng dựa trên những phản hồi;
- Công việc ít tốn kém hơn nhờ tự động hóa;
- Các quy trình phát triển được sắp xếp hợp lý thông qua việc tăng cường trách nhiệm và quyền sở hữu mã trong quá trình phát triển;
- Nâng cao vai trò và kỹ năng rộng hơn.
Tất cả đều phục vụ cho mục đích cuối cùng là cải thiện khả năng cung cấp dịch vụ IT một cách nhanh chóng. Từ đó, tăng khả năng cạnh tranh của sản phẩm/doanh nghiệp.
Tuy nhiên, DevOps có rất nhiều thách thức :
- Đòi hỏi các thay đổi về tổ chức và bộ phận CNTT, bao gồm các kỹ năng và vai trò công việc mới;
- Cần các công cụ và nền tảng đắt tiền, bao gồm đào tạo và hỗ trợ để sử dụng chúng một cách hiệu quả;
- Triển khai rủi ro hơn do tâm lý sợ thất bại và phải tổng quát hóa công việc so với chuyên môn hóa;
- Yêu cầu sự tuân thủ nghiêm túc theo các quy định, đặc biệt là khi cần phân tách vai trò.
Devops cần học những gì? Lộ trình học Devops
Một DevOps Engineer cần biết:
- Quản lý phiên bản phân tán (như Git, Bitbucket, VSTS,…)
- Tích hợp liên tục (như Jenkins, Bamboo, VSTS,…)
- Quản lý, điều phối (như Kubernetes, Mesos, Swarm,…)
- Tự động hóa cơ sở hạ tầng (như Puppet, Chef, Ansible,…)
- Sử dụng điện toán, hạ tầng đám mây (như AWS, Azure, Google Cloud Platform, OpenStack,…)
Vì tự động hóa được cải thiện và nâng cao qua những thử nghiệm, nên kỹ năng thử nghiệm cũng thật sự là cần thiết để trở thành một DevOps thực thụ.
1. Learn a programming language – học một ngôn ngữ lập trình
Bắt đầu học ngôn ngữ lập trình gần như là điều kiện tiên quyết của một lộ trình với DevOps. Vì nó tạo cho bạn nền tảng, nâng cao tư duy về lập trình, giúp bạn tạo ra các đoạn script một cách dễ dàng. Có rất nhiều ngôn ngữ lập trình nhưng ba ngôn ngữ quan trọng cần biết là Java, JavaScript và Python. Ngoài ba “em” này thì bạn cũng nên biết thêm về ngôn ngữ lập trình Ruby cũng như PHP do chúng khá dễ học, tốc độ phát triển nhanh và được nhiều doanh nghiệp sử dụng hiện nay…
2. Understand different OS concepts – hãy chuẩn bị những kiến thức về các hệ điều hành khác nhau
Không phải chỉ có các SysAdmin (quản trị viên hệ thống) hay Supporter mới cần biết về về OS. Các DevOps dù không cần biết quá sâu nhưng cũng cần có những kiến thức cơ bản về Threads and Concurrency, Process Management, Sockets, Virtualization, I/O Management, Memory storage và hệ thống file (file system). Đặc biệt với hệ điều hành Linux thì giờ đây hầu như dân IT nào cũng biết. Có lẽ bạn nên bắt đầu với Ubuntu (một hệ điều hành được phát triển dựa trên Linux).Vì nó là một trong những môi trường Linux dễ sử dụng và phổ biến trên máy tính.
3. Learn to live in terminal – học cách “ăn ngủ” cùng terminal
Trong DevOps roadmap, học cách sử dụng và thường xuyên sử dụng terminal (một chương trình phần mềm được cài đặt sẵn trên hệ điều hành Linux cho phép người dùng có thể giao tiếp với máy tính thông qua việc chạy các câu lệnh.) gần như là điều bắt buộc. Bởi lẽ, CLI mạnh hơn nhiều so với GUI, nếu làm việc với terminal bạn sẽ thấy GUI thật sự chậm chạp. Hơn nữa, học làm quen với terminal sẽ giúp bạn hiểu thêm nhiều về hệ thống, hệ điều hành…
4. Networking and Security – hệ thống mạng và bảo mật
Ngày nay mọi thứ đều kết nối, tương tác với nhau qua hệ thống mạng. Vấn đề bảo mật được đặt lên hàng đầu hiện nay, đặc biệt là sau nhiều vụ hacker tấn công. Do đó bạn cũng nên có kiến thức về HTTP, SSL, FTP, HTTPS, DNS, cũng như tìm hiểu các lỗ hổng bảo mật và cách xử lý chúng.
5. What is and how to setup a… – học về cách thức setup…
Devops engineer cần biết cách setup một web server như Apache, Nginx hay IIS, … Bạn nên bắt đầu với các Web Server thông dụng thường thấy như Apache và Nginx. Ngoài web server, DevOps roadmap còn yêu cầu bạn biết cách setup một Reverse proxy, Caching Server, Load balancer, Forward Proxy và Firewall. Việc này rất cần thiết và đòi hỏi bạn dành nhiều thời gian để học nếu muốn thành một DevOps chuyên nghiệp.
6. Learn Infrastructure as code – học cấu trúc mã
Đây cũng là một trong những yếu tố cần học trong DevOps roadmap. Một DevOps chuyên nghiệp cần biết về Containers (Kubernetes, Docker), các công cụ quản lý cấu hình (Configuration Management) như Puppet, Ansible, Salt, Chef…
7. Learn some CI/CD tools – học các công cụ CI/CD
CI/CD (Continuous integration and continuous delivery – là một bộ đôi công việc gồm quá trình tích hợp thường xuyên và thường xuyên cập nhật phiên bản mới liên tục) là những công cụ vô cùng cần thiết với các DevOps. Vì nó giúp tiết kiệm công sức, tránh sự nhàm chán với những thao tác lặp đi lặp lại nhờ vào sự tự động hóa. Có nhiều CI/CD tool thường dùng có thể kể đến như: TeamCity, Drone, Jenkins, Bamboo… trong đó, Jenkins là một công cụ khá mạnh và phổ biến.
8. Learn how to monitor software and infrastructure – học giám sát ứng dụng và hệ thống
Bạn không thể dành thời gian hàng ngày, hàng giờ ngồi quan sát kiểm tra xem các service có hoạt động hay không, server còn sống hay chết, các tài nguyên đang được sử dụng như thế nào, có bị dùng quá nhiều so với quy định không…
Thay vào đó, bạn có thể sử dụng các công cụ như Monit, Nagios, Zabbix, New Relic, AppDynamics, Docker,… tùy vào hệ thống của bạn.
Khi phát hiện vấn đề gì thì các công cụ giám sát này sẽ thông báo cho bạn qua email, điện thoại… Nhờ đó bạn có thể tiết kiệm được khá nhiều thời gian để làm những việc khác.
9. Learn about Cloud Provides – học về Cloud Provides
Cloud Provides cũng khá quan trọng trong lộ trình trở thành DevOps vì ngày nay rất nhiều công ty sử dụng cloud server cho các phần mềm mà họ phát triển.
Cloud server mang lại nhiều lợi ích như giúp thay đổi cấu hình hệ thống một cách nhanh chóng, tiết kiệm, giúp giảm chi phí duy trì lắp đặt cơ sở hạ tầng, hay tối ưu cơ cấu doanh nghiệp (giảm được số nhân viên liên quan đến IT)…
Các Cloud Providers lớn thường được nhắc đến là AWS, Microsoft Azure và Google Cloud. Ở Việt Nam, bạn có thể đăng ký một tài khoản trên hệ thống Biz Fly Cloud để trải nghiệm các dịch vụ điện toán đám mây tiên tiến nhất hiện nay., …
Beginners thì nên học từ đâu?
DevOps là một văn hoá, quan trọng trước hết là vấn đề mindset, nên bạn cần phải “đả thông tư tưởng”, hiểu tổng quan thuật ngữ này trước đã. Bạn có thể tìm hiểu thêm về “DevOps là gì” từ sách báo, qua các trao đổi trên diễn đàn, v.v
Bạn cũng cần học một số ngôn ngữ lập trình cần thiết cho DevOps như Python, Ruby,…
Tiếp đến, bạn có thể lên các trang web tuyển dụng để đọc mô tả công việc, ví dụ như tin tuyển dụng DevOps. Từ đó, bạn sẽ biết thị trường đang cần những kỹ năng gì, xu hướng dùng những tools gì.
Ngoài ra các bạn cũng có thể tìm hiểu về DevOps qua một số tài liệu như The Phoenix Project, DevOps Tutorials, hay thậm chí là các nhóm facebook, các trang web như What is DevOps, DevOps Việt Nam,… để có được những lời giải đáp thực tế, mang tính cập nhật sớm nhất.
Tham khảo: Khóa học lập trình Python Miễn phí Do CodeGym Đà Nẵng Xây Dựng 100%
Tạm kết
Hy vọng với những chia sẻ trên đây đã giúp bạn hiểu rõ hơn về khái niệm Devops là gì? Đồng thời qua đó mình mong bạn hiểu rằng để trở thành một kỹ sư Devops là điều không phải quá dễ dàng. Nó cần có một lộ trình khá dài và đòi hỏi sự kiên trì. Nhưng nếu một lập trình viên có thêm những kiến thức về Devops thì cơ hội nghề nghiệp chắc chắn cũng sẽ được rộng mở rất nhiều. Các doanh nghiệp sẵn sàng săn đón bạn với mức lương bổng khá cao và bạn có thể trở thành một “key” thành viên ở công ty như “con cưng”.
0 Lời bình