paint-brush
Kỹ sư hoàn hảotừ tác giả@alexeysutyagin
578 lượt đọc
578 lượt đọc

Kỹ sư hoàn hảo

từ tác giả Alexey Sutyagin10m2022/11/10
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Nhiều công ty CNTT đã áp dụng phương pháp làm nhiệm vụ trực tiếp. Nhiệm vụ của kỹ sư trong vai trò này khác nhau giữa các công ty, nhưng có một số điểm chung. Để trở thành một kỹ sư giỏi, nếu có vấn đề xảy ra, bạn cần phải giải quyết chúng càng nhanh càng tốt và tiết kiệm chi phí nhất có thể. Một kỹ sư được đào tạo bài bản hiểu rõ nơi nào anh ta có thể tự xử lý và nơi nào đáng để tình hình leo thang hơn nữa. Chúng tôi sẽ nói về cách chuẩn bị tốt cho nhiệm vụ của một kỹ sư trong bài viết này.

Company Mentioned

Mention Thumbnail
featured image - Kỹ sư hoàn hảo
Alexey Sutyagin HackerNoon profile picture


Giới thiệu

Nhiều công ty CNTT đã áp dụng phương pháp làm nhiệm vụ trực tiếp. Một kỹ sư đang làm nhiệm vụ, và nhiệm vụ của anh ta kéo dài trong một ca làm việc. Thông thường, ca làm việc kéo dài một ngày hoặc một tuần. Có trường hợp tăng hoặc giảm giai đoạn này, nhưng trường hợp này hiếm. Nhiệm vụ của kỹ sư trong vai trò này khác nhau giữa các công ty, nhưng có một số điểm chung.

  • Bạn phải trả lời các câu hỏi đi kèm với nhóm.
  • Cần phải giám sát việc thực hiện các dịch vụ mà nhóm chịu trách nhiệm.
  • Để đối phó với hỏa hoạn và sự cố.
  • Nâng cấp sự cố thêm nếu bạn không thể tìm ra nó.

Chúng tôi sẽ nói về cách chuẩn bị tốt cho nhiệm vụ của một kỹ sư trong bài viết này.

Định nghĩa về kỹ sư nhiệm vụ hoàn hảo

Nếu sự cố hoặc hỏa hoạn xảy ra trong ca làm việc của bạn trong môi trường chiến đấu, điều đó không có nghĩa là bạn là một kỹ sư tồi. Để trở thành một kỹ sư giỏi, nếu có vấn đề xảy ra, bạn cần phải giải quyết chúng càng nhanh càng tốt và tiết kiệm chi phí nhất có thể. Một kỹ sư được đào tạo bài bản hiểu rõ nơi nào anh ta có thể tự xử lý và nơi nào đáng để tình hình leo thang hơn nữa. Anh ta nên biết khi nào và ai để kêu cứu. Anh ta không được phép, nếu có thể, những vấn đề tương tự lặp lại.

Trải qua

Sẽ rất hữu ích nếu bạn tận dụng kinh nghiệm của bản thân và đồng đội để chuẩn bị tốt hơn cho nhiệm vụ.

Bạn nên bắt đầu bằng cách xem tài liệu nào đã tồn tại để xử lý các sự cố. Có tài liệu ở cấp công ty hoặc cấp đội không? Điều cần thiết là phải biết nó ở đâu và làm quen với nó. Nếu nó không tồn tại, bạn có thể thử bắt đầu quá trình tạo nó không?

Sau đó, cần kiểm tra xem những sự cố nào đã xảy ra và chúng được ghi lại như thế nào trong kho kiến thức. Có bất kỳ bưu gửi nào không và có nhiệm vụ nào cần sửa không? Bạn có biết nếu những nhiệm vụ này đang được thực hiện? Nếu các nhiệm vụ để khắc phục tình huống được tạo nhưng không được thực hiện, thì đây là lý do để thảo luận vấn đề này trong cuộc họp với người quản lý của bạn.

Không biết nhiệm vụ của công binh khi làm nhiệm vụ có được ghi lại không? Họ có trách nhiệm gì, và không chịu trách nhiệm gì? Nếu không có tài liệu hoặc hiểu biết như vậy, sẽ rất hữu ích cho cả nhóm.

Công cụ

Bộ công cụ dành cho kỹ sư làm việc cụ thể và hơi khác so với bộ công cụ hàng ngày của nhà phát triển. Các nhiệm vụ chính phát sinh trong quá trình chữa cháy là những nhiệm vụ không thể giải quyết được bằng các truy vấn hiện có

Hãy xem xét các công cụ này chi tiết hơn:

  1. Công cụ kỹ thuật chính cho người làm nhiệm vụ, với sự trợ giúp mà bạn có thể giải quyết nhiều vấn đề, là bash. Nếu kiến thức về công cụ tuyệt đẹp này vẫn chưa có trong kho vũ khí của bạn - hãy sử dụng một trong các khóa học sụp đổ (
  2. Thường ở chế độ cháy, bạn cần thực hiện một số thao tác với cơ sở dữ liệu sản phẩm. Kỹ năng làm việc với cơ sở dữ liệu thông qua thiết bị đầu cuối - psql cho PostgreSQL https://www.postgresguide.com/utilities/psql/ hoặc mongosh cho MongoDB https://www.mongodb.com/docs/mongodb-shell/ sẽ hữu ích . Các công cụ này được đưa ra làm ví dụ, bạn có thể tìm kiếm cơ sở dữ liệu của riêng mình. Đối với nhiều cơ sở dữ liệu, có các công cụ trực quan để làm việc, nhưng thiết bị đầu cuối có sẵn ở mọi nơi, yêu cầu mạng internet tối thiểu và rất linh hoạt. Đối với chế độ lửa, nó có thể rất hữu ích.
  3. curl là một công cụ cho phép bạn thực hiện một số lượng truy vấn đáng kể và khi kết hợp với kiến thức về bash, bạn sẽ trở nên gần như toàn năng.

Sẽ rất hữu ích nếu bạn có sẵn một bộ kịch bản được làm sẵn tại thời điểm xảy ra hỏa hoạn. Chúng phải đơn giản và dễ hiểu nhất có thể. Có, bạn có thể viết chúng rất nhanh, nhưng khi bạn có thời gian hạn chế, thật tuyệt khi bạn có một bộ tài liệu làm sẵn cho phép bạn chỉ nghĩ về sự cố chứ không phải cách thực hiện cùng một cách buộc. Các tập lệnh dưới đây chỉ là sự trình bày cấu trúc tiềm năng của các tập lệnh như vậy. Tất nhiên, mã của bạn nên được kiểm tra trước khi sự cố xảy ra và càng đơn giản càng tốt. Sẽ rất hữu ích nếu có các tập lệnh sau:

Tập lệnh tạo tệp từ dữ liệu được cung cấp. Chúng có thể được lấy từ các lệnh khác hoặc bằng cách đưa ra một yêu cầu độc lập. Dưới đây là một ví dụ về một tập lệnh như vậy bằng Python.

 import csv def modify(filename): tmpFile = "tmp.csv" # Reading file with data and creation of output file with open(filename, "r") as file, open(tmpFile, "w") as outFile: # Create reader for initial file reader = csv.reader(file, delimiter=',') # Create writer for output file writer = csv.writer(outFile, delimiter=',') # Read header line header = next(reader) # Write header line writer.writerow(header) # Process initial file line by line for row in reader: colValues = [] # Process each column of each line for col in row: # Let for example transform all columns to lowercase colValues.append(col.lower()) # Write modified line to final file writer.writerow(colValues) filename = 'sample_data.csv' modify(filename)

Một tập lệnh sẽ gọi các điểm cuối được yêu cầu với độ song song được chỉ định. Nó không phải là bất cứ điều gì phức tạp. Dưới đây là một ví dụ về mã JavaScript đơn giản sẽ tạo tệp sh với chế độ song song được chỉ định có thể giúp bạn điều đó. Có, chúng tôi không có xử lý kết quả ở đây, nhưng nó không phải lúc nào cũng cần thiết và bạn có thể sửa đổi bộ công cụ của mình với một phiên bản xử lý kết quả nếu được yêu cầu. Ví dụ: chúng tôi có một tệp đọc và ghi toàn bộ dữ liệu, nhưng bạn có thể tạo tập lệnh luồng cho các tệp lớn.

 const fs = require('fs'); const initialFilePath = 'sample_data.csv'; const outputFilePath = 'sample_script.sh'; const amountOfParallelRequests = 5; // Remember about the throughput and the bandwidth of your services const delimiterForCSV = ','; // Read the initial file and split it by lines // You could transform it to an object if it's relevant to your situation let initialFile = fs.readFileSync(initialFilePath).toString().split('\n'); // Prepare boilerplate for sh script let outputString = '#!/bin/bash\n\n'; // Write data with parallel execution // Skip header for CSV // The code for parallel requests was received from https://serverfault.com/questions/456490/execute-curl-requests-in-parallel-in-bash // and you could implement your version instead for (let i = 1; i < initialFile.length; i++){ let line = initialFile[i]; if (!line) { continue; } let processedLine = line.split(delimiterForCSV); // We don't implement processing of errors here // Let's suggest that the necessary for request value lies in second column let desiredValue = processedLine[1]; if (desiredValue === undefined) { console.error('We have a trouble ' + line); } outputString += `curl -s -o foo http://example.com/file${desiredValue} && echo "done with ${desiredValue}" &\n`; if (i % amountOfParallelRequests === 0 || i === initialFile.length - 1) { outputString += '\nwait\n\n'; } } fs.writeFileSync(outputFilePath, outputString); // Indicate the success console.log('Success');

Một tập lệnh lấy thứ gì đó từ cơ sở dữ liệu hoặc dịch vụ và đặt lại kết quả đã chuyển đổi hoặc có thể gọi một điểm cuối khác. Tôi khuyên bạn nên tự mình thực hiện nó, đừng quên về việc ủy quyền và các trường hợp sử dụng thích hợp.

Hiểu biết

Ngoài công cụ và kinh nghiệm, một lượng kiến thức nhất định rất hữu ích khi bạn đi làm nhiệm vụ.

Tôi muốn biết về nhật ký và số liệu của các dịch vụ của bạn. Họ đi đâu và làm thế nào để bạn đến đó? Bạn có tình cờ biết cách sử dụng những công cụ này không? Khi bạn nhận được cuộc gọi vào ban đêm từ một dịch vụ theo cuộc gọi cho bạn biết rằng dịch vụ của bạn đang ngừng hoạt động - bạn nên nhanh chóng phát hiện ra điều gì đang xảy ra. Để làm được điều đó, bạn cần biết chính xác nơi lưu trữ các chỉ số và nhật ký của mình và những gì cần xem xét trước.

Làm thế nào để hoãn cảnh báo? Sau khi phân tích sự việc, thường phát hiện ra tai nạn hiện tại có thể chờ trời sáng, nên hiểu chuyện hoãn báo động là tốt rồi. Không phải đóng cửa, bởi vì trong trường hợp của một số hoạt động, bạn sẽ được thông báo một lần nữa, nhưng chính xác là để hoãn lại. Bạn nên nhớ xử lý và khắc phục tình huống hoặc cảnh báo ngay sau khi bạn bắt đầu ngày làm việc điển hình của mình.

Các mối liên hệ nằm ở đâu hoặc làm thế nào để bạn liên lạc với đồng nghiệp hoặc thành viên của các nhóm khác? Trong đầu bạn phải có một công cụ hoặc kiến thức rõ ràng - người hiểu / nên biết về tình huống khi nó xảy ra. Các chuyên gia có thể giúp bạn giải quyết sự cố và các bên liên quan cần biết rằng có điều gì đó không ổn. Bạn phải có quyền truy cập vào danh bạ của họ, lý tưởng là điện thoại của họ, vì nhiều người tắt thông báo từ các cuộc trò chuyện văn phòng ngoài giờ làm việc.

Làm cách nào để bạn có quyền truy cập vào sản xuất / cơ sở dữ liệu và tăng quyền truy cập nếu tồn tại các cấp độ truy cập? Nếu bạn không có quyền truy cập, bạn cần biết phải đến gặp ai hoặc phải làm gì để có được quyền truy cập bạn muốn.

Làm thế nào để bạn đưa mã vào sản xuất một cách nhanh chóng? Đôi khi các vấn đề yêu cầu thay đổi nhanh chóng mã dịch vụ trong quá trình sản xuất. Nói chung, điều này đúng được coi là hành vi xấu, nhưng thường trong trường hợp khẩn cấp, điều này không đúng. Đôi khi bạn không muốn đợi các bài kiểm tra E2E lâu nhưng cần nhanh chóng đưa mã vào môi trường sản xuất. Tôi muốn bạn hiểu làm thế nào để làm điều này.

Dữ liệu nào được lưu trữ trong cơ sở dữ liệu? Có bất kỳ kế hoạch di chuyển dữ liệu nào trong sản phẩm và giữa các dịch vụ không? Nếu bạn cần tương tác với cơ sở dữ liệu, bạn nên biết cách tổ chức dữ liệu trong một dịch vụ cụ thể, nó đến từ đâu và ai sử dụng nó. Điều này sẽ cho phép bạn giải quyết các vấn đề, nếu có, sớm hơn.

Ngoài công cụ và kinh nghiệm, một lượng kiến thức nhất định rất hữu ích khi bạn đi làm nhiệm vụ.

Tôi muốn biết về nhật ký và số liệu của các dịch vụ của bạn. Họ đi đâu, và làm thế nào để bạn đến đó? Bạn có biết làm thế nào để sử dụng các công cụ này? Khi bạn nhận được cuộc gọi vào ban đêm từ một dịch vụ theo cuộc gọi cho bạn biết rằng dịch vụ của bạn đang ngừng hoạt động - bạn nên nhanh chóng phát hiện ra điều gì đang xảy ra. Để làm được điều đó, bạn cần biết chính xác nơi lưu trữ các chỉ số và nhật ký của mình và những gì cần xem xét trước.

Làm thế nào để hoãn cảnh báo? Sau khi phân tích sự việc, thường thấy vụ tai nạn vừa rồi có thể đợi trời sáng, nên hiểu chuyện hoãn báo động là tốt rồi. Không phải đóng cửa, bởi vì, trong trường hợp của một số hoạt động, bạn sẽ được thông báo một lần nữa, nhưng chính xác là để hoãn lại. Sẽ là tốt nhất nếu bạn nhớ xử lý và khắc phục tình huống hoặc cảnh báo ngay sau khi bạn bắt đầu ngày làm việc điển hình của mình.

Các mối liên hệ nằm ở đâu, hoặc làm thế nào để bạn liên lạc với đồng nghiệp hoặc thành viên của các nhóm khác? Trong đầu bạn phải có một công cụ hoặc kiến thức chính xác - người hiểu / nên biết về tình huống khi nó xảy ra. Các chuyên gia có thể giúp bạn giải quyết sự cố và các bên liên quan cần biết rằng có điều gì đó không ổn. Bạn phải có quyền truy cập vào danh bạ của họ, lý tưởng nhất là điện thoại của họ, vì nhiều người tắt thông báo từ các cuộc trò chuyện văn phòng ngoài giờ làm việc.

Làm cách nào để bạn có quyền truy cập vào sản xuất / cơ sở dữ liệu và tăng quyền truy cập nếu tồn tại các cấp độ truy cập? Nếu bạn cần quyền truy cập, bạn cần biết phải đến gặp ai hoặc phải làm gì để có được quyền truy cập bạn muốn.

Làm thế nào để bạn đưa mã vào sản xuất một cách nhanh chóng? Đôi khi các vấn đề yêu cầu thay đổi nhanh chóng mã dịch vụ trong quá trình sản xuất. Nói chung, điều này đúng được coi là hành vi xấu, nhưng thường trong trường hợp khẩn cấp, điều này không đúng. Đôi khi bạn muốn nhanh chóng đưa mã vào môi trường sản xuất trước khi kiểm tra E2E dài. Tôi muốn bạn hiểu làm thế nào để làm điều này.

Dữ liệu nào được lưu trữ trong cơ sở dữ liệu? Có bất kỳ kế hoạch di chuyển dữ liệu nào trong sản phẩm và giữa các dịch vụ không? Nếu bạn cần tương tác với cơ sở dữ liệu, bạn nên biết cách tổ chức dữ liệu trong một dịch vụ cụ thể, nó đến từ đâu và ai sử dụng nó. Điều này sẽ cho phép bạn giải quyết các vấn đề, nếu có, sớm hơn.

Sự kết luận

Ngay cả trong các công ty và đội có văn hóa kỹ thuật xuất sắc, tai nạn và hỏa hoạn khi thi hành công vụ vẫn xảy ra. Để tránh điều này, nhóm phải nỗ lực hết sức để cải tiến các quy trình và sản phẩm hiện tại. Tuy nhiên, mỗi kỹ sư cũng phải chuẩn bị sẵn sàng rằng một tai nạn sẽ xảy ra và phải khẩn trương giải quyết nó. Để làm được điều này, bạn nên sử dụng tất cả kinh nghiệm cá nhân và nhóm tích lũy được. Biết về tổ chức và dịch vụ và tự tin vào bộ công cụ của bạn là điều đáng biết.

Liên kết hữu ích

https://zach-gollwitzer.medium.com/the-ultimate-bash-crash-course-cb598141ad03

https://www.youtube.com/watch?v=oxuRxtrO2Ag

https://www.postgresguide.com/utilities/psql/

https://www.mongodb.com/docs/mongodb-shell/