DevOps & SRE 必備技能清單- IT閱讀
文章推薦指數: 80 %
可以用它們作為一個清單來評估你自己或其他人,或者為下一次面試DevOps/SRE(Site Reliability Engineers,網站可靠性工程師)工作做準備。
科技
DevOps&SRE必備技能清單
DevOpsDockerNginx·
發表2018-10-1707:15:00
摘要:
導讀
這個列表並非詳盡無遺,只是列舉了技術基礎、必須知道的技能和一些隨機的想法。
可以用它們作為一個清單來評估你自己或其他人,或者為下一次面試DevOps/SRE(SiteReliabilityEngineers,網站可靠性工程師)工作做準備。
補充下,這個清單是比較個人的想法。
...
導讀
這個列表並非詳盡無遺,只是列舉了技術基礎、必須知道的技能和一些隨機的想法。
可以用它們作為一個清單來評估你自己或其他人,或者為下一次面試DevOps/SRE(SiteReliabilityEngineers,網站可靠性工程師)工作做準備。
補充下,這個清單是比較個人的想法。
免責宣告
這個清單由ofollow,noindex">SahilSharma
和作者
共同完成。
我們已經發布了它的第一個版本(DevOps和網站可靠性工程師必備技能清單
)。
本文是最新的版本更新。
下一步是什麼?更瞭解DevOps生態系統:
首先,一定要了解文化要點的重要性:在這裡(15點DevOps檢查表
)可以讀到更多資訊。
您應該掌握*nix系統並且很好地理解Linux發行版的工作原理。
為產品設定選擇一個作業系統。
不需要掌握每一個作業系統,這會讓你的工作陷入困境,選擇其中一個並掌握它。
能輕鬆使用終端,可能有一些GUI來管理伺服器,但是無論如何,必須熱愛終端,它更快、更安全,坦白說,一旦掌握了用起來會更容易。
如何獲取CPU/系統資訊(cat/proc/version,/proc/cpuinfo,uptime,等。
)
cron作業如何運作。
在特定日期/時間/月設定cron作業。
瞭解在機器上執行的作業系統是什麼(cat/etc/lsb-release)
瞭解不同的*nix作業系統之間的區別,以及瞭解在機器上執行的作業系統(例如cat/etc/lsb-release)
shell之間的區別:sh/dash/bash/ash/zsh
如何設定和取消設定ENV變數。
匯出的ENV變數是臨時的,如何匯出永久的變數?
什麼是shell配置檔案:〜/.bashrc,.bash_profile,.environment..如何為程式初始化檔案“新增”設定?
瞭解Vim,其配置(.vimrc)及其一些基本提示是必須的。
日誌如何在*nix系統中執行,什麼是日誌記錄級別以及如何使用日誌管理工具(rsyslog,logstash,fluentd,logwatch,awslogs..)
swapping如何工作。
swappiness是什麼。
(swapon-s,/proc/sys/vm/swappiness,sysctlvm.swappiness..)
能輕鬆使用指令碼語言輕鬆自如。
Bash是必須瞭解的(其他指令碼語言也是非常有用的,如Python,Perl..)。
掌握有用的命令,例如程序監控命令(ps,top,htop,atop..),系統性能命令(nmon,iostat,sar,vmstat..)和網路故障排除和分析(nmap,tcpdump,ping,traceroute,airmon,airodump..)。
你的備份策略是什麼?如何測試備份的可靠性?
你知道ext4,ntfs,fat?知道聯合檔案系統(UnionFS)嗎?
如何在系統上檢視/設定網路配置?
如何在具有不同子網的計算機上設定靜態/動態IP地址?(提示:CIDR)
使用網路資料包分析來分析和了解網路的工作原理:tcpdump,Wireshark..
你熟悉OSI模型和TCP/IP模型的規範嗎?TCP和UDP有什麼區別?你知道vxlan嗎?
如何設定防火牆(iptables,至少知道ufw):設定規則,列出規則,路由流量,阻止協議/埠..
如何檢視/設定/備份路由器設定?
DNS如何工作?如何設定DNS伺服器(Bind,Unbound,PowerDNS,Dnsmasq..)?遞迴(recursive)和權威(authoritative)DNS有什麼區別?如何排除DNS故障(nslookup,dig..)
熟悉DNS和A,AAAA,C,CNAME,TXT記錄
當你在瀏覽器中點選google.com時會發生什麼?從瀏覽器的快取、本地DNS快取、本地網路配置(hosts檔案)、路由、DNS、網路、Web協議中,快取系統到Web伺服器(如果深入分析,最基本的問題也很難回答)。
熟悉CDN提供商(fastly,Akamai等)
熟悉SSL/TLS的工作原理以及數字證書的工作原理(https)
瞭解SSL證書(需要加密)
熟悉更安全的協議和工具:TLS,STARTTLS,SCP,SSH,
SFTP,FTPS..
瞭解PPTP,OpenVPN,L2TP/IPSec之間的區別
學習為域設定記錄集(可以使用Route53或Flare/">CloudFlare等託管雲服務)
SSH如何工作,如何除錯它,如何生成ssh金鑰以及無密碼登入到其他計算機
什麼是init系統?你知道Systemd(自15.04以來由Ubuntu使
用),Upstart(由Ubuntu開發),SysV..
用任何軟體的原始碼編譯它(gcc,make和其他相關內容)
如何通過終端用不同的格式壓縮/解壓縮檔案(主要是:tar/tar.gz)
如何設定Web伺服器(Apache,Nginx..)
學習使用“awk,sed,sort,uniq”操作Nginx/Apache日誌檔案
Nginx和Apache有什麼區別?什麼時候使用Nginx?什麼時候使用Apache?在同一個Web應用程式中,何時以及如何同時使用它們?
如何設定反向代理(Nginx..)
如何設定快取伺服器(Squid,Nginx,Varnish..)
如何設定負載均衡器(HAproxy,Nginx..)
如何為您的微服務建立API閘道器(Ambassador,Kong,Traefik,Nginx..)
熟悉Systemd以及如何使用systemctl和journalctl等命令分析和管理服務
熟悉OAuth、SAML、Auth0整合
熟悉RESTfulAPI,Webhooks,GraphQL,RPC/">gRPC
確保ES叢集安全(XPack(商業),OpenSource:ReadOnlyREST,SearchGuard)
使用snapshotAPI或esdump進行ES備份(快照和增量)(注意:需要nodejs/npm)
使用DB備份
學習Python(pip+setup.py)和BASH。
您是否開始使用Golang作為指令碼語言?嘗試一下吧。
發展雲端計算技能。
從選擇雲基礎架構提供商開始:AmazonWebServices,GoogleCloudPlatform,Digitalocean,MicrosoftAzure。
或者使用OpenStack建立自己的私有云。
staging伺服器怎麼樣?單元測試的測試策略是什麼?端到端?真的需要staging伺服器嗎?Google下“stagingserversmustdie”。
閱讀有關PaaS/Iaas/Saas/CaaS/FaaS/DaaS和無伺服器架構的資訊
瞭解如何通過CLI中的CloudShell,或你的程式中的CloudSDK,來使用和配置雲資源
瞭解如何使用至少一個配置管理和遠端執行工具(Ansible,Puppet,SaltStack,Chef等)。
您的選擇應基於以下標準:語法,效能,模板語言,推拉模型,效能,架構,與其他工具的整合,可伸縮性,可用性等等。
用於image構建的Packer
將Jenkins整合到CI/CD中
設定Consul(用於服務發現)
開始研究“基礎架構即程式碼”(infrastructureascode),以及基礎架構配置自動化工具,如Terraform和Packer
開始研究容器和Docker。
容器是底層架構(cgroups和namespaces),它是如何工作的?
開始熟悉基本的Docker命令(logs/inspect/top/ps/rm)。
另外得研究dockerhub(push/pullimage)
開始研究容器編排工具:DockerSwarm,Kubernetes,MesosphereDC/OS,AWSECS
閱讀有關無狀態和有狀態應用程式的知識
學習為您的應用程式構建小型的dockerimage(alpine比較合適)。
僅安裝所需的包就夠了。
瞭解預設執行服務的最常用埠號(如:SSH(22),Web(80),HTTP/S(443)等)
從分散式角度學習網路(在容器世界中建立網路)。
利用分散式系統中的8個謬論,讓自己輕鬆應對。
瞭解L4/L7負載均衡器。
瞭解如何確保代理伺服器和反向代理伺服器的安全(Nginx,Traefik,Ambassador..),並瞭解它們的網路系統是如何工作的。
熟悉幫助建立可分發和可移植開發環境的工具(例如:Vagrant和Docker)。
部署應用程式時,管理私密資訊。
HashicorpVault會幫助你。
瞭解AWSSQS,GooglePubSub或其它替代方案。
熟悉Kafka,AWSKinesis或其它替代方案。
瞭解AWSRDS,大多數時候Ops發現很容易將普通任務委派給服務提供商以避免額外的工作,但這會帶來一些費用。
如果你在使用Kubernetes,那麼瞭解它的所有元件和工作。
學習如何首先處理K8s內建功能,然後學習Helm/Istio。
瞭解監控的方式和內容(從作業系統和應用程式的角度來看)。
一旦到了合適的階段,接著會需要追蹤(Tracing)來幫助理解和挖掘,並且應用程式需要直接支援它
如果您正在處理(大)資料工程相關應用程式,那麼得熟悉Hadoop,HBase,Zookeeper,Spark以及如何設定相關叢集
學習如何根據應用需求設定和調整Redis,如何新增身份驗證。
瞭解應用程式的性質:CPU密集型,記憶體密集型,I/O密集型,然後瞭解如何相應地進行處理。
學習根據需要在不同型別的資料庫之間進行選擇:SQL,NoSQL,TSDB,圖形資料庫..
學習管理IAM角色/許可權以及如何管理不同使用者的金鑰(AWSIAM,GCPIAM..)。
如果您喜歡分享並幫助其他人解決遇到過的問題,請將程式碼釋出到GitHub。
學習對基礎架構和應用程式進行基準測試以填補空白。
不要直接去執行。
先視覺化最終目標、畫圖、與開發人員詳細討論、毫不猶豫地提問、讓問題徹底變得愚蠢。
不時做小型演示或PoC以便更好地理解。
你熟悉IDE(SublimeText,Atom,Eclipse..)嗎?
深入瞭解DB(MySQL或任何其它你喜歡的資料庫)。
瞭解Redis/Memcache以及類似工具。
瞭解微服務架構的優缺點,並開始構建類似的架構。
瞭解如何配置和使用持續整合和持續交付工具,如Jenkins,TravisCI,Buildbot,GoCd。
將這些工具與其它工具(如Selenium,構建工具,配置管理軟體,Docker,雲供應商的SDK等)整合是非常有幫助的。
學習分散式版本控制系統Git及其基本命令(pull/push/commit/clone/branch/merge/logs等)。
瞭解git工作流程。
你知道如何將Git儲存庫恢復到以前的提交嗎?
如何使用SSH金鑰。
嘗試使用Github,Bitbucket或Gitlab..來配置對repo/account的無密碼訪問。
熟悉核心版本的混亂以及如何修補它們。
瞭解如何生成校驗(md5,SHA..)以驗證任何檔案的完整性。
瞭解單體(Monolithic)和微服務(Microservices)架構之間的區別。
如何實現零宕機部署?制定回滾、自修復、自動擴充套件的策略是什麼?
瞭解可擴充套件性和高度分散式系統,如何讓它們一直保持執行狀態?
熟悉API和服務:RESTfull,RESTful-like,API閘道器,Lambda函式,serverless計算,SOA,SOAP,JMS,CRUD..
如何確保基礎架構、網路和執行的應用程式的安全?
你知道什麼是ChatOps嗎?是否嘗試過使用一個已知框架?Hubot,Lita,Cog?
瞭解如何設定、配置和使用某些監控系統(Nagios,Zabix,Sensu,Prometheus..)
無論你做什麼都“記錄下來”,無論多麼粗糙,做吧。
稍後,你會感謝自己的。
製作小的程式碼指令碼以方便使用,記下命令或片段(通過StackOverflow,GithubGists或其它線上記事板),它會幫助你得到想要的東西。
讓Google,StackExchange,Quora和其它專業論壇成為您的朋友。
讀,讀,讀。
在Twitter/StackOverflow上提問。
參加會議。
可以加入我們當地的聚會,如DevOpsLinksCommunity會議(班加羅爾)
,DevOpsLinksCommunity會議(倫敦)
和DevOpsLinksCommunity會議(巴黎)
。
如果想組織當地的聚會,請聯絡我們,我們將為您提供幫助!
與同一領域的研究員交談並討論您的問題。
通過社群
學習。
加入我們的Slack頻道
並詢問您的所有(菜鳥級)問題,都沒問題!我們都是從開始起步的。
不要試圖解決所有問題。
永遠記住一件事:沒有人是一座孤島。
你不能做、學習、實現一切。
要了解對於手頭的任務最重要的是什麼。
閱讀DevOps詞彙表(請Google它)
關注開源專案(Kubernetes/Docker等)或者讓您感到興奮的東西。
關注來自社群
的志同道合的人,並瞭解最新的科技趨勢。
嘗試搭建良好的開發實踐以及堅實的架構。
瞭解如何在生產級別進行擴充套件。
瞭解如何在生產伺服器中實時除錯和跟蹤執行的應用程式。
關注一些合適的科技公司的技術部落格(我們跟隨:Google/Uber/Quora/Github/Netflix)。
這是您可以直接從專家那裡學習的地方,並有機會看到他們解決任何問題的方法。
瀏覽一些新聞聚合器,如Reddit,hackernews,medium等。
在twitter上關注志同道合的開發人員和技術公司。
(我總是閱讀文章和觀看談話/會議,事後剖析(post-mortems)是我最喜歡的內容。
我也關注一些github庫看看我使用的技術發生了什麼。
)
加入DevOpsLinks
、Kaptain
和Shipped
!我們相信你會學到很多東西,即使你是專家,你仍然不得不更多地學習。
閱讀各種與技術相關的部落格並訂閱DevOpsNewsletters。
順便說一句,我們有一份出版物
,您可以提交您的文章並與社群分享。
瞭解開源以及如何
為開源專案做出貢獻。
如果系統出現問題,您應該能夠進行事後剖析。
詳細記錄出現了什麼問題,以及如何防止它再次發生。
嘗試學習StackOverflow的專家如何解決問題。
永遠記住,方法是不斷變化的,不像基礎知識總是保持不變。
讀書。
最後這點也很重要......不要假設任何事情,永遠不要把現實視為理所當然,總是去嘗試並享受旅程。
如果您擁有以上大部分技能,則可以確保您具備DevOps、SRE和系統工程知識的先決條件。
你無法一次性學習所有這些,但是具備這樣一個思維模式是主要的。
即使去熟悉所有這些也肯定需要時間,但俗話說旅程很有趣。
你會失敗很多次,並從錯誤中吸取教訓,不要重蹈覆轍。
永遠記住,我們都是學生。
我們通過碰撞和試驗來學習。
不要羞於失敗,因為這就是學習的方式。
我們希望聽到您的反饋和建議:
顯然,針對這個清單的反饋和建議。
您想學習哪種技術?(請與我們分享)。
我們將推出一個DevOps線上學院,我們希望您成為我們的第一個貢獻者,所以分享您的建議,不要害羞!
其他的東西,我們將與您在未來分享,我們將很高興聽到您的建議和反饋!
進一步聯絡
我們會很高興聽到您的建議,並願意為這個清單增加其它觀點。
為了取得聯絡,請訂閱我們的一個或多個線上社群,因為這是瞭解最新資訊並與我們以及社群保持聯絡的好方法:
DevOpsLinks
,一個來自世界各地的DevOps專業人士和從業者的社群。
Shipped
,一個專注於無服務計算、FaaS和其他有趣主題的技術的社群。
Kaptain
:一個Kubernetes社群中心,主要包括手工策劃的時事通訊、團隊聊天、培訓和更多(即將推出)。
如果您喜歡這篇文章,請通過訂閱上述一個或多個線上社群與我們保持聯絡。
請為我們鼓掌並分享給您的粉絲。
原文連結:TheMustKnowChecklistForDevOps&SiteReliabilityEngineers
感謝張嬋對本文的審校。
來源:InfoQ
您可能也會喜歡…
2018年,14個網頁設計師必備技能助你拿高薪!
自建-模擬JSONRESTAPI-從入門到精通-前端必備技能-你還在等你後臺API嗎?
未來,這將是UI設計師的必備技能……|新書·Afte
Java必備技能:clone淺克隆與深克隆
阿里P8架構師經驗總結——Java架構師必備技能之少走彎路系統學習
【必備技能】HashMap在jdk1.7和1.8中的實現
"儲存狂人"必備技能OPPO雲服務讓刪照片成過去
Java後端大廠面試必備技能點
鄭剛:2019年創業賺錢必備技能大全(精華版)
2019手機圈高管必備技能:懂技術、當客服,還得當網友出氣筒
贊助商廣告
上一則中國電信助力精準扶貧再出實招
下一則百度外賣提前四個月謝幕外賣市場差異化競爭加速
南方都市報
首款搭載華為鴻蒙作業系統產品釋出
2019-08-1107:04:50
有道熱點
摩拜第一,4家企業退出或整改,北京如何給共享單車打分?
2019-08-1107:04:03
有道熱點
事關8000萬人!馬雲的相互寶分攤費為何增長到1.48元?最新迴應來了
2019-08-1107:03:59
真相君
董明珠不服輸,贏雷軍10億賭約,還不放棄做手機正研發5G手機
2019-08-1107:02:45
真相君
失望於美國?華為或將放棄等待安卓,“鴻蒙”手機將於這時問世?
2019-08-1107:02:31
每日經濟新聞
重新評估網際網路巨頭:究竟是中國崛起的奠基石還是埋藏危機的落井石?
2019-08-1106:15:59
千龍網
首款搭載鴻蒙產品“榮耀智慧屏”釋出
2019-08-1101:12:27
參考訊息
華為告訴你,六年後我們的世界會變成什麼樣——
2019-08-1100:37:23
搜狐焦點廣州站
傳郭臺銘610億增城專案將易主當地宣傳部迴應:專案正常推進
2019-08-1100:03:44
新京報
鴻蒙系統面世華為:並非做另一個安卓
2019-08-1000:33:30
新京報
“鴻蒙”面世
2019-08-1000:32:27
環球網
社評:鴻蒙,中國高科技突圍的英勇帶動點
2019-08-1000:17:12
環球網
華為開發者大會開幕:鴻蒙OS、EMUI10.0等悉數亮相
2019-08-1000:10:55
央視財經
App收集隱私將有“國標”!個人資訊有望不再“裸奔”!
2019-08-1000:10:32
新策展資訊圈
能源需求側綜合管理
2019-08-1000:03:28
Android
WEB開發
其它
0.0021190643310547
延伸文章資訊
- 1DevOps 是什麼? Google 實做DevOps 的SRE 方法介紹
2003年成立SRE Team (Site Reliability Engineering) ,組成如下:. 50%~60%純軟體工程師。 40%~50%接近軟體工程師,兼有SRE 技能(系統和...
- 2SRE 工程師Site Reliability Engineer|弋揚科技 - 104人力銀行
新北市中和區- 職務說明工作內容: 1. 良好的shell script或是Python等腳本語言技能並有強烈渴...。薪資:月薪55000~100000元。職務類別:網路管理工程師、系統維護/...
- 3[DevOps] 初階DevOps/SRE 工程師是如何煉成的
技能樹這一部份會以https://roadmap.sh/devops 搭配講解。 以下的順序以我個人學習、接觸的時間軸做排列: 語言建議Python、Go、JavaScript 三者至少 ...
- 4科普:什么是SRE工程师?SRE工程师一般需要掌握什么技能?
SRE是指Site Reliability Engineer (网站可靠性工程师)。他是软件工程师和系统管理 ... 下面制作了一张技能图谱,如需完整版,下拉文末百度网盘领取。
- 5Day01 - DevOps 技能樹怎麼點? 如何學?