Blog Posts DevOps

Cách chọn công cụ DevOps phù hợp

Hãy thẳng thắn: không có công cụ nào trên thế giới sẽ giúp bạn áp dụng DevOps thành công ngay lập tức (hoặc agile, hoặc lean nạc hoặc có khả năng giao hàng liên tục) DevOps vô địch hợp tác và giao tiếp giữa các nhóm phát triển và vận hành, vì vậy, đó là một sự thay đổi văn hóa hơn là một công thức ma thuật .

Tuy nhiên, có những công cụ và công nghệ hỗ trợ tự động hóa và hợp tác giữa các đội. Mọi người thường hỏi chúng tôi về các công cụ chúng tôi sử dụng để hỗ trợ các hoạt động của DevOps tại Atlassian (ngoài chính chúng tôi), vì vậy chúng tôi tập hợp một hướng dẫn của người mua sẽ chỉ ra những điều cần tìm khi chọn trong số các công cụ DevOps phổ biến, cũng như cho bạn biết công cụ nào chúng tôi sử dụng trong các nhóm của chúng tôi.

Let’s be straight: no tool will magically make your team DevOps.

tiếng riu ríu

Mặc dù có nhiều công cụ cho từng  các giai đoạn của chu kỳ phát triển theo cách này hay cách khác, nhưng không có công cụ duy nhất nào chúng ta biết đóng vai trò chính trong mỗi giai đoạn. Vì vậy, khi nghĩ về các công cụ DevOps, phá vỡ nó theo từng giai đoạn là hữu ích. Dưới đây là các công cụ ưa thích của chúng tôi cho từng giai đoạn của chu kỳ phát triển.

1. Lập kế hoạch: Confluence, Slack, Jira Software

Cộng tác về tầm nhìn và lên kế hoạch

Lấy một trang ra khỏi cẩm nang về agile, chúng tôi đề nghị bạn dùng các công cụ cho phép đội phát triển của bạn lập kế hoạch trong các lần lặp. Bằng cách này, bạn bắt đầu học hỏi từ người dùng trước và có thể tối ưu hóa sản phẩm của mình từ các phản hồi đó. Tìm kiếm các công cụ cung cấp các tính năng lập kế hoạch sprint.

Một thực tiễn tuyệt vời khác là liên tục thu thập phản hồi của người dùng, sắp xếp nó thành các đầu vào có thể hành động và ưu tiên các hành động đó cho các đội phát triển của bạn. Điều quan trọng là mọi người có thể chia sẻ và nhận xét về bất cứ điều gì: ý tưởng, chiến lược, mục tiêu, yêu cầu, lộ trình và tài liệu.

Và đừng quên về tính năng tích hợp. Bất cứ trang nào mà bạn quyết định phạm vi tính năng hoặc dự án, bạn có thể dễ dàng chuyển đổi thành các story trong backlog của đội.

Để biết thêm về giai đoạn này, hãy xem bài đăng này từ các nhà quản lý sản phẩm Atlassian về backlog grooming and prioritization..

2. Xây dựng

Môi trường dàn dựng để phát triển: Docker

Trong khi Puppet và Chef chủ yếu mang lại lợi ích cho Operations, các developers sử dụng các công cụ như Docker, một công cụ nguồn mở, để cung cấp các môi trường phát triển riêng lẻ. Mã hóa chống lại các bản sao ảo giúp bạn hoàn thành công việc nhiều hơn.

Có gì đó không đúng về class path? Maven cài đặt đột ngột hư? Cơ sở hạ tầng dưới dạng mã đồng nghĩa cung cấp lại nhanh hơn là sửa chữa – và cũng đáng tin cậy hơn. Bạn có thể tăng các biến thể của môi trường phát triển của bạn.

Cơ sở hạ tầng dưới dạng mã: BambooBitbucketChefDockerPuppet

Các developers tạo ra các ứng dụng mô-đun vì họ đáng tin cậy hơn và có thể bảo trì. Vậy tại sao không mở rộng suy nghĩ đó sang cơ sở hạ tầng CNTT?

Điều này có thể khó áp dụng cho các hệ thống vì chúng luôn thay đổi. Vì vậy, chúng tôi khắc phục điều đó bằng cách sử dụng mã để cung cấp. Mã cung cấp có thể được áp dụng cho bare metal và áp dụng lại để đưa máy chủ trở về cơ sở.

Nó có thể được lưu trữ trong version control. Nó có thể được thử nghiệm. Kết hợp thành CI (tích hợp liên tục). Đánh giá ngang hàng.

Khi kiến ​​thức về thể chế, tốt, được mã hóa trong mã, nhu cầu chạy books và tài liệu nội bộ mất dần. Những gì nổi lên là các quá trình lặp lại, và các hệ thống đáng tin cậy.

Cộng tác

Thay vì chờ đợi trên bảng phê duyệt thay đổi trước khi triển khai vào sản xuất, bạn có thể cải thiện chất lượng mã và thông lượng với các đánh giá ngang hàng được thực hiện thông qua các pull requests.

Pull request là gì? Pull request cho đội của bạn biết về những thay đổi mà bạn đã đẩy đến một nhánh phát triển trong kho lưu trữ của bạn. Sau đó, đội có thể xem xét các thay đổi được đề xuất và thảo luận về các sửa đổi trước khi tích hợp chúng vào dòng mã chính.

Xem thêm bài viết “Hello World! A new grad’s guide to coding as a team”

3. Tích hợp liên tục

Tích hợp liên tục: BambooHipchat

Tích hợp liên tục là thực hành kiểm tra mã vào kho lưu trữ được chia sẻ nhiều lần trong ngày và kiểm tra mã mỗi lần. Bằng cách đó, bạn phát hiện sớm các sự cố, khắc phục chúng khi chúng dễ khắc phục nhất và nhận được các tính năng mới sáng bóng cho người dùng của bạn càng sớm càng tốt.

Bởi vì các quy trình branch-and-merge là tất cả các rage, xác công cụ giúp loại bỏ khó khăn của việc chạy CI trong môi trường đa branch là chìa khóa để duy trì kiểm tra nghiêm ngặt mà không làm giảm tốc độ dev.

Tìm kiếm các công cụ tự động áp dụng các thử nghiệm của bạn cho các nhánh phát triển và cung cấp cho bạn tùy chọn để làm chủ khi xây dựng nhánh thành công. Cùng với đó, bạn có thể nhận được các cảnh báo theo thời gian thực trong công cụ trò chuyện đội của bạn với một tích hợp đơn giản.

Tìm hiểu thêm bài viết winning at CI with feature branches and Bamboo.

Kiểm tra tự động: BambooBitbucketCapture for Jira

Kiểm tra tự động trả dần theo thời gian bằng cách tăng tốc chu kỳ phát triển và thử nghiệm của bạn trong thời gian dài. Và trong môi trường DevOps, nó rất quan trọng vì một lý do khác: nhận thức.

Để chuẩn bị và hỗ trợ những gì đội Phát triển xây dựng, điều quan trọng là các hoạt động phải có tầm nhìn về những gì đang được thử nghiệm và mức độ kỹ lưỡng. Không giống như kiểm tra thủ công, kiểm tra tự động được thực hiện trung thực và với cùng một sự nghiêm ngặt mỗi lần. Nó cũng mang lại các báo cáo và biểu đồ xu hướng giúp xác định các khu vực rủi ro.

Rủi ro là một thực tế trong phát triển phần mềm, nhưng bạn có thể giảm thiểu những gì bạn có thể dự đoán. Tìm kiếm các công cụ hỗ trợ bảng treo tường và để mọi người tham gia vào nhận xét dự án về kết quả xây dựng hoặc triển khai cụ thể. Thêm điểm cho các công cụ giúp dễ dàng có được các Hoạt động liên quan đến thử nghiệm thăm dò.

4. Triển khai

Bảng điều khiển phát hành: Jira Software

Một trong những phần căng thẳng nhất của shipping phần mềm là nhận tất cả các thông tin thay đổi, kiểm tra và triển khai cho một bản phát hành sắp tới trong cùng một nơi. Điều cuối cùng mà bất cứ ai cần trước khi phát hành là một cuộc họp dài để báo cáo về tình trạng.

Tìm kiếm các công cụ với một bảng điều khiển duy nhất được tích hợp với kho lưu trữ mã và các công cụ triển khai của bạn. Cung cấp cho bạn khả năng hiển thị đầy đủ trên các nhánh, bản dựng, pull request và cảnh báo triển khai ở một nơi duy nhất.

Triển khai tự độngAWSBambooHipchatPuppet

Không có công thức ma thuật nào để triển khai tự động hóa sẽ hoạt động cho mọi ứng dụng và môi trường CNTT. Nhưng chuyển đổi sổ ghi chép Operations Operations thành tập lệnh thực thi cmd bằng Ruby hoặc bash là cách phổ biến để bắt đầu. Sử dụng các biến để xác định tên máy chủ – duy trì các tập lệnh hoặc mã duy nhất cho mỗi môi trường là không có gì thú vị. Tạo các phương thức tiện ích hoặc tập lệnh để tránh mã trùng lặp. Và xem xét lại các scripts của bạn – kiểm tra chúng.

Trước tiên, hãy thử tự động hóa triển khai đến môi trường cấp thấp nhất của bạn, nơi bạn sẽ sử dụng tự động hóa đó thường xuyên nhất, sau đó sao chép toàn bộ quá trình sản xuất. Nếu không có gì khác, việc này nêu bật sự khác biệt giữa các môi trường của bạn và tạo ra một danh sách các nhiệm vụ cần chuẩn hóa chúng. Việc tiêu chuẩn hóa triển khai thông qua tự động hóa làm giảm việc “server drift” trong các môi trường.

Các công cụ cung cấp như Puppet và Chef làm giảm sự khó khăn trong việc chuẩn hóa các môi trường. Và có vô số công cụ để giúp triển khai tự động hóa. Bamboo của Atlassian phối hợp triển khai phức tạp từng bước và cung cấp khả năng hiển thị trong từng lịch sử của các môi trường.

Sử dụng Puppet hoặc Chef với Slack cho phép bạn kiểm soát việc triển khai từ các phòng trò chuyện.

5. Vận hành

Giám sát hiệu suất ứng dụng và máy chủ: BigPandaHipchatHostedGraphiteNagiosNew RelicPager DutyPingdomSplunk

Có hai loại giám sát nên được tự động hóa: giám sát máy chủ và giám sát hiệu suất ứng dụng.

Bạn có thể thủ công hit API của bạn để kiểm tra. Nhưng để hiểu xu hướng và sức khỏe tổng thể của ứng dụng (và môi trường), bạn cần phần mềm nghe và ghi dữ liệu 24/7.

New Relic, Splunk và Nagios là một trong những loại phổ biến nhất và xử lý cả hai loại giám sát. Tìm kiếm các công cụ tích hợp với ứng dụng trò chuyện đội của bạn để thông báo đi thẳng đến phòng đội hoặc phòng dành riêng cho các sự cố.

Truyền thông thông báoBigPandaDataDogHipchatNew RelicPager DutyStatuspage

Giao tiếp giữa các đội là bước đầu tiên hướng tới sự thay đổi văn hóa. Nhiều công cụ trò chuyện có phòng dành riêng, nơi các chuyên gia có thể nhảy vào để xử lý các sự cố khi chúng xảy ra và khắc phục chúng nhanh hơn.

Nó cũng quan trọng để thông báo các cảnh báo nhanh đến đội và những người có liên quan. Hãy tìm một công cụ trò chuyện có thể mở rộng và tích hợp với các công cụ giám sát để bạn không bao giờ bỏ lỡ cảnh báo xuống cấp dịch vụ quan trọng.

Tìm kiếm các công cụ giúp bạn thông báo cho người dùng khi có sự cố và cập nhật cho họ về cách giải quyết sự cố. Tìm hiểu bài viết how Atlassian deals with incidents.

Theo dõi sự cố, thay đổi và vấn đề: Jira Service DeskJira Software

Chìa khóa để mở khóa sự hợp tác giữa các đội DevOps là đảm bảo rằng họ đang trong cùng một mục tiêu. Điều gì xảy ra khi sự cố được báo cáo? Họ có liên kết và truy nguyên nhân của các vấn đề không? Khi thay đổi được thực hiện, chúng có liên quan đến bản release không?

Việc theo các sự cố và các dự án phát triển phần mềm trong các hệ thống khác nhau sẽ ngăn cản sự cộng tác của Dev Dev với Ops . Tìm kiếm các công cụ giữ sự cố, thay đổi, sự cố và dự án phần mềm trên một nền tảng để bạn có thể xác định và khắc phục sự cố nhanh hơn.

6. Vòng lặp phản hồi: 
GetFeedbackHipchatJira Service DeskPendoSurveyMonkeyHootsuite

Khách hàng sẽ cho bạn biết liệu bạn có xây dựng đúng thứ hay không – bạn chỉ cần lắng nghe. Điều này bao gồm dữ liệu NPS, các khảo sát, báo cáo lỗi, và cổng hỗ trợ. Trong văn hóa DevOps, mọi người trong đội sản phẩm đều có quyền truy cập vào nhận xét của người dùng vì họ sẽ giúp hướng dẫn mọi thứ từ kế hoạch phát hành đến các phiên thử nghiệm thăm dò.

Tìm kiếm các ứng dụng tích hợp công cụ trò chuyện của bạn với nền tảng khảo sát yêu thích của bạn để nhận phản hồi theo kiểu NPS. Twitter và / hoặc Facebook cũng có thể được tích hợp với trò chuyện để phản hồi theo thời gian thực. Để nhìn sâu hơn vào phản hồi đến từ phương tiện truyền thông xã hội, nó đáng để đầu tư vào một nền tảng quản lý phương tiện truyền thông xã hội có thể lấy các báo cáo sử dụng dữ liệu lịch sử.

Phân tích và kết hợp thông tin phản hồi có thể làm bạn cảm thấy như nó làm chậm tốc độ phát triển trong thời gian ngắn, nhưng nó lại hiệu quả hơn về lâu dài hơn là phát hành các tính năng mới mà không ai muốn.

Hoàn thiện bộ sưu tập công cụ DevOps của bạn

Atlassian tạo ra các công cụ hỗ trợ cộng tác trong từng giai đoạn của vòng đời phát triển. Và như bạn đã thấy, chúng tôi đã tăng cường ngăn xếp công cụ DevOps của chúng tôi với các tiện ích bổ sung và các công cụ độc lập được xây dựng bởi các đồng nghiệp của chúng tôi.

Trong các công ty nhỏ, một đội có thể chịu trách nhiệm cho toàn bộ vòng đời phát triển. Trong các công ty lớn hơn, nó chia theo bộ phận. DevOps làm cho vòng đời này nhanh hơn, tự động hóa cao và hợp tác liền mạch – cho dù nó là cộng tác giữa các bộ phận hay chỉ trong một đội.

Chọn các công cụ DevOps phù hợp trước hết là về việc xem xét kỹ lưỡng quá trình phát triển phần mềm và hoạt động CNTT hiện tại của bạn và quyết định nơi bạn cần cải thiện.

VI