Tôi đã bắt đầu học DevOps như thế nào. Phần 1: Khái niệm và lộ trình

Một ngày rảnh rỗi ông anh ngồi cùng hỏi mình có muốn học DevOps không sắp có một khóa học trọng công ty dạy DevOps, mình nghe từ "đép óp" mình m** hiều gì cả rồi xin từ khóa về đọc thử, cũng nhân lúc dự án đang trong giai đoạn fix bug lúc rảnh lúc nhiều bug sấp mặt nên cũng có tí thời gian nên mình tìm hiểu về nó một chút cho mở mang kiến thức. Nên mạn pháp ghi chép lại và dịch lại một số bài viết mình thấy hay ở trên mạng để ghi nhớ cũng như biết đâu lại giúp đỡ được ai đó. Lên Medium mình thấy ngay một bài là: "Làm thế nào để trở thành một kĩ sư DevOps trong 6 tháng" nên mình tò mò vào xem thử, thấy khá hay nên mình sẽ làm theo lộ trình đó, hi vọng có ai đó sẽ đi cùng mình và chỉ ra lỗi sai của mình nhé, mình rất cảm ơn và biết ơn nhưng người góp ý cho mình về chuyên môn, công việc. Let's go!

Mục tiêu là gì và ai nên học cái này?

  • Bạn đang là một Dev muốn chuyển nhẹ hướng đi, muốn sự nghiệp của mình đá nhẹ sang hướng kiểu DevOps.
  • Bạn có phải là người Ops được đào tạo bài bản và bạn muốn có cảm giác về toàn bộ về DevOps?
  • Hoặc bạn đã dành thời gian làm việc với công nghệ, giờ bạn chỉ đơn giản là tìm kiếm một sự thay đổi nghề nghiệp và không biết bắt đầu từ đâu?
  • Hoặc đơn giản bạn có thời gian và bàn biết đọc, mình thích thì mình học thôi, không bổ dọc thì bổ ngang. Vậy thì mình bắt đầu thôi nhỉ, bắt đầu với loạt bài viết tôi đã học DevOps trong 6 tháng như thế nào?

Như trên mở đầu nếu bác nào có thâm niên trong cái này thì em cũng xin các bác góp ý giúp em để em có thể hoàn thiện hơn nhé ạ, đừng thấy sai mà cười nhẹ cái rồi bỏ đi nha, em cảm ơn rất nhiều ạ

DevOps là cái gì?

Bạn có thế tra từ khóa DevOps với hàng triệu kết quả tìm kiếm và hàng tá các khái niệm khác nhau, đôi khi đứng trước quá nhiều thông tin và sự lựa chọn lại làm cho con người ta cảm thấy rối rắm, không còn rõ mình phải đi hướng nào,... vậy hãy xem thử khái niệm tôi đưa ra xem có khá hơn không nhé.

DevOps is a way to deliver software with shared pain and responsibility.

Điều đó có nghĩa là gì?

Từ xưa đến giờ, các developer và các Ops(người đưa phần mềm đi chạy cho khách hàng) có những suy nghĩ hành động khác nhau. Ông dev thì phải tạo ra càng nhiều tính năng trong một thòi gian càng ngắn càng tốt theo yêu cầu của khách hàng đưa ra (nghe thấy cực mà khách hàng là thượng đế mà, không làm lấy đâu tiền mà ăn), còn ông Ops lại muốn càng ít tính năng lại càng tốt, vì lúc đem dự án chạy cho khách hàng thì cáng nhiều tính năng thì càng nhiều rủi ro, vất vả hơn.

Ai cũng có nỗi lòng riêng mỗi người có mỗi nỗi khổ riêng, thế thì 2 ông nên thương nhau mà sống thì nó sẽ hoàn hảo, đỡ đần cho nhau nhiều hơn. Từ đó có sự kết hợp của Dev và Ops trở thành DevOps.

DevOps cố gắng hợp nhất development và operations vào trong một nhóm. Lý tưởng đó là nhóm này sẽ chia sẻ những khó khăn, đau thương, trách nhiệm cũng như cả hoa hồng,... từ khách hàng thông qua việc tạo và triển khai sản phẩm cho họ.

Theo như cách hiểu của tôi thì DevOps nó là một thứ văn hóa, một cách kết hợp, một con đường để tạo ra phần mềm chứ không hẵn nó là một role nào đó trong một công ty hay một tổ chức. Nói cách khác nó như là, ai đó hiểu về Software Development Lifecycle và mang các software engineering tools và quy trình để giải quyết các thách thức của operations cổ điển.

Mình hiểu thế thôi chứ người ta tuyển role DevOps đầy mà, thì đó là người ta vẫn có role cho DevOps trong công ty, nói thì nói chứ apply thì vẫn chứ apply thôi(nói là khi có kinh nghiệm và cơ hội thôi chứ mới học ai thèm tuyển =)) )

Mình nghĩ có được skill này cũng khá là đáng giá, mình có thể thấu hiểu cả dev và ops thì lúc nào việc sẽ thuận lợi hơn rất nhiều.

Không thể phủ nhận là chẳng có cái nào học cái mà giỏi được phải không các bạn, nói phét cũng phải qua một thời gian thì mới lên cảnh giới để nói phét cho người ta tin được cơ mà. DevOps cũng vậy, không chỉ ngày một ngày hai mà trở thành một "senior" được, đơn giản bạn phải hiểu thật nhiều công cụ, kết hợp chúng với nhau mà có một quy trình hợp lý thì mới trở thành một DevOps thực thụ được.

Khi bạn trên Google làm thể nào để trở thành một DevOps thì có vô vàn hướng đi, con đường, bạn sẽ bị choáng ngợp bởi hàng loạt các công nghệ mà một DevOps phải tìm hiểu nhưng trong loạt bài viết này tôi sẽ nếu ra nhưng gì chung nhất, nhưng tool, con đường phổ biến nhất, nhiều người sẽ phải trải qua nhất để các bạn có thể nắm được những kiến thức cơ bản. Nhưng cũng chỉ học các tool các bạn nhé, hãy thông qua các tool để học những khái niệm cao hơn, nắm được những khái niệm đó, vì sao nó ra đời, vì bản chất các tool cũng vận hành dựa trên nhưng khái niệm đó. Hãy tìm hiểu xong vì sao nó lại ra đời, nó giải quyết vấn đề gì, và nó giải quyết thế nào? Khi bạn đã nắm rõ nhưng khái niệm đó rồi thì việc bạn thay đổi tool thậm chí tạo ra những tool tốt hơn hiện tại đang có là điều hoàn toàn có thể.

Ok bắt đầu thôi các bạn nhỉ

Kiến thức nền tảng

Dưới đây là roadmap

Những kiến thức về những phần trên không phải để bạn thành một master "DevOps" tuy nhiên để trở thành một master thì bạn cần nắm thật vững chúng, có những kiến thức chuyên sâu để có thể phát triển xa hơn.

Trước tiên bạn hãy dành thời gian từ từ tìm hiểu các công nghệ màu xanh lam (Linux, Python, AWS), sau đó nếu thời gian cho phép hãy tìm hiểu nhưng thứ màu tím bạn nhé (GoLang, Google Cloud). Bạn có thể thấy rằng trụ cột để phát triển dựa trên 3 yếu tố đó là: Hệ điều hành, ngôn ngữ lập trình và cloud, một trong 3 đều là những lĩnh vực mênh mông. Thành thực mà nói những thứ nền tảng là những thứ thực sự không bao giờ có thể ngừng học hỏi.

Linux rất phức tạp và mất nhiều năm để thành thạo, như mình tiếp cận với linux khoảng 3 năm rồi nhưng còn rất nhiều khái niệm còn mơ hồ, chỉ có thể dừng nó ở mức cơ bản, còn chuyên sâu, nhưng thứ phức tạp thì phải tra rất lâu cũng như tìm người để hỏi mới có thể hiểu hết được

Ngôn ngữ (ở đây đang nói là Python) yêu cầu thực hành liên tực và duy trì, thức ra với ngôn ngữ chỉ cần bạn nắm những kiến thức nền tảng của một ngôn ngữ thì sang ngôn ngữ khác bạn có thể học rất nhanh, nó chỉ khác về cú pháp, điều lâu nhất phải học đó là nhưng hàm, những thư viện mà ngôn ngữ nó có, mỗi ngôn ngữ lại có nhưng hàm khác nhau thư viện khác nhau, tuy nhiên bạn làm càng nhiều thì biết càng nhiều.

AWS thì không phải nói rồi, bạn chỉ cần xem danh mục của nó thì đã thấy choáng ngợp luôn, và chỉ cần 1 thời gian ngắn bạn không theo dõi, đến khi vào lại bạn sẽ lại thấy có thêm rất nhiều mục nữa. Hãy đọc nhiều tin tức bài viết và nắm những kiến thức nền tảng của mỗi mục thì việc sử dụng ở mức cơ bản sẽ không khó khăn.

Nhưng một khi bạn có lớp Foundation được tìm ra một cách hợp lý, hãy chuyển sang tập hợp các kỹ năng trong real-world. Lưu ý có tổng cộng 6 cột màu xanh, mỗi cột một tháng bạn nhé. Nó đây nè:

LƯU Ý: Điều mà thiếu đáng chú ý từ lộ trình trên là "Test". Việc bỏ qua giai đoạn "test" trên lộ trình là có chủ ý, vì mục tiêu của lộ trình này là tiếp thu nhanh các kỹ năng và công cụ mới. Việc test thực sự chưa cần thiết trong giai đoạn khởi đầu này.

Như các bạn thế các kĩ năng trên không phải là những kĩ năng bập bẹ thiếu sự liên kết. Nó là những kĩ năng có sự liên kết, sự liên tục. Nó là một quy trình tự động hoá từ đầu đến cuối, chắc hẵn bạn không muốn học xong công cụ xong để đó vì chẳng theo quy trình nào cả, không biết áp dụng sao, tuy nhiên với lộ trình trên có lẽ bạn sẽ được thực hành nhiều hơn học xong và thực hành, sau khi học lần lượt từng công cụ thì bạn cũng đã năm qua qua cách vận hành của cả một quy trình.

Công cụ có nhiều thay đổi, còn khái niệm thì ít hơn rất nhiều. Do đó, những gì bạn nên làm là sử dụng các công cụ như các "proxy" học tập cho các khái niệm cấp cao hơn.

Còn bạn muốn tìm một cái gì đó vĩ mô hơn thì cái này giành cho bạn, mình nghĩ nắm được những thứ dưới đây thì bạn có thể tự tin đi apply gần như mọi nơi rồi =))

Kết

Bài viết ngắn trên mình chỉ nêu ra khái niệm cũng như lộ trình để trở thành DevOps, nhưng bài viết tiếp theo mình sẽ đi sâu hơn học từng công cụ theo lộ trình, rất mong các bạn ủng hộ mình vào những bài viết sau.


All Rights Reserved