2022年軟件開發的趨勢
?1.可觀察性[跟蹤、監控和記錄是至關重要的
你正在開發你的軟件,你已經準備好部署它了。所有的測試都通過了,測試覆蓋率也達到了一個不錯的水平。知道這一點后,我們可以部署我們的代碼,并繼續平靜地工作。盡管這不是最理想的情況(而且很罕見),我們的代碼仍然可能失敗。是的!因此,開發人員需要一直觀察他們的代碼,并讓它一直報告指標。萬一有什么故障,你需要讓你的系統準備好向你提供日志。正如Andrzej所寫的。
可觀察性是至關重要的。沒有它,開發者就是瞎子。它使我們有機會隨時對系統中發生的每個問題作出反應。
2.同時使用 "無服務器 "和 "有服務器 "方法是一種很好的做法。在這種情況下,我們可以從兩種軟件開發方法中獲益。
Serverless是一種運行應用程序的方式(似乎),沒有任何服務器參與。當然,這是一個重大的簡化--總是有服務器參與其中;只是在這種情況下,你不需要對它們做任何事情,而且它們是預先配置好的。它被吹捧為新的黑科技,除了......它并不是解決所有疾病的完美療法。首先,你不能配置底層服務器,正如我們之前提到的。你也不能真正知道引擎蓋下有什么。這個主要的缺點同時也是這個方法的主要優點。你不需要配置任何東西,所以與其說是部署?擔心,不如說是部署?忘記。
無服務器或有服務器的解決方案都有好處。在現代系統中,將兩種方法結合起來以獲得大部分的解決方案是很常見的。
3.容器化一切!Kubernetes是一項熱門技術!
并非所有的軟件開發趨勢都是好主意。你還記得CoffeeScript或Ruby嗎?遺憾的是,我們有。幸運的是。 Kubernetes(K8S)似乎并不打算加入這兩個人的悲哀谷。K8S正在使DevOps專家的生活變得更加、更加、更加容易。
以下是引入容器化和容器編排作為技術戰略的核心條款所能帶來的好處。
- 你將能夠輕松地優化你的IT基礎設施成本
- 由于無縫擴展,你的用戶可以期待更高的可用性和更好的服務水平協議
- 使用Kubernetes使你的團隊更容易使用多云解決方案
- 由于容器和容器編排工具與技術無關,你可以使用任何你想要的技術來建立一個更精簡的團隊。
- 通過容器化, 你不再遇到 "它在我的機器上能用 "的 老問題了
- 在收購了一家金融科技初創公司后,西北互惠銀行必須整合云原生和內部流程之間的工作流程,更頻繁地進行部署,并統一其團隊的操作,以確保他們的客戶繼續獲得他們所習慣的無縫體驗。使用Kubernetes幫助他們將部署速度提高了25倍以上,從一年24次到10個月500次以上,計劃內的中斷已經成為過去,由于他們的API管理是部署在Kubernetes上的整體堆棧的一部分,基礎設施成本大幅下降。你可以在案例研究中了解更多關于這些要點、向AWS的過渡、使用微服務、更新的開發者自主權,以及讓他們的450萬客戶對其服務的質量和速度感到滿意。
- 在Capital One的案例中,底線是一個大話題。他們的估計顯示,如果不使用K8s自動和輕松擴展的能力,他們的AWS基礎設施成本將很容易增加兩倍甚至四倍。他們通過使用Kubernetes看到的其他好處是新產品的上市時間,現在只需2周,而以前可能需要3個月或更多的時間。開始關注Kubernetes開發的主要原因?Capital One的團隊希望提高他們處理流數據的速度,以便在欺詐檢測和信貸決策領域做出關鍵決策,以及處理對銀行日常運營至關重要的其他大數據和機器學習應用。你可以在案例研究中了解更多關于這些要點、部署速度的提高、K8s如何幫助統一Capital One的開發環境等等。
除了顯而易見的好處外,我們將留給你一些案例研究,希望能給你帶來啟發,幫助你決定使用Kubernetes是否適合你,并展示更深入的好處。
- 縮短新功能的上市時間,將配置速度從幾個月提高到幾分鐘,并確保一家為7500萬用戶服務的教育公司的高SLA。
- 在包括許多產品在內的復雜開發環境中,應用程序版本之間的停機時間為零,新的部署時間從幾小時縮短到幾秒鐘,新的發布速度提高了3倍。
- Zalando 這家歐洲時尚電子商務領導者使用K8s進行擴展,實現了多種業務用例,如當日交付、多租戶、增加他們的產品和地理范圍,并使他們能夠重新編寫和創建他們一直作為定制軟件使用的所有SaaS產品。
- Adidas 電子商務網站的加載時間減少了一半,每天發布多次,而不是每月一次,由于阿迪達斯轉向云原生,開發人員的自主性大大增強。
4.當涉及到軟件架構時,我們應該分而治之。
大尺寸的單體在某種程度上是一個昨天的故事。它們長期困擾著開發者,但現在不會了。將巨大的單元代碼庫分割成較小規模的應用程序是新的做事方式。它可以使你的應用程序防火,減少錯誤的頻率,使應用程序在發生錯誤時更加安全。缺點是,應用程序變得更難測試,而且需要更多的資源來完成。對于規模較小的團隊來說,維護一個單體機仍然更有意義。
將一個單體應用分成獨立的微服務。
5.開源和自由軟件是未來的方式。
React, Angular,以及Zuul,分別來自Meta(曾經是Facebook)、谷歌和Netflix,是無數開發者每天在工作中使用的工具。如果沒有這些組織向所有愿意使用它們的人免費發布的工具,每個人的工作就會變得更加困難。無數的服務將不會出現在陽光下,因為編寫這些應用程序太難或太耗時了。所有這些都是因為,在編寫這些應用程序之前,人們必須弄清楚如何為規模編寫前端,而不分享所學到的經驗將是極其低效的。
這就是為什么我們必須贊揚開源和自由軟件的維護者、創造者以及所有其他為創造和維護這種軟件做出貢獻的人。
創造一種工具/技術并使其開源(或使其免費)給組織帶來永恒的榮耀。
6.使用架構模式。
在軟件開發中,有一條常見的規則--不要重新發明車輪。由于知道我們很可能曾經面臨過與別人相同的問題,這條規則就變得更加有價值了。這就是為什么世界各地的工程師和開發人員使用建筑模式來組織他們的項目--而不是浪費時間去思考如何找出別人已經想出的解決方案。
許多現代軟件都使用CQRS和Event Sourcing等模式。不要重新發明輪子,使用這些模式。
7.編程語言在不斷發展。
我們有越來越多新的編程語言的事實并不奇怪。它們都是來來去去,離開后又被其他語言取代。沒有人再用Algol或Pascal編碼了。然而,有一個老前輩,C,仍然存在,盡管這是一個值得單獨探討的話題。
一個值得注意的方面是它們多年來的演變方式。起初,命令式語言是唯一存在的語言。然后,面向對象的語言蓬勃發展,現在,有些人可能會爭辯說,它們正被更靈活的語言所淘汰,這些語言混合了一些命令式、函數式和面向對象的特性。
語言的發展方式越來越獨立于我們工作的系統,以及與之相關的系統?,F代語言是跨平臺的。由于DevOps的發展,語言的選擇變得越來越不重要了。
8.由于現代基礎設施的存在,復雜性正在從應用程序轉移到外部平臺。
在地下室的物理服務器上的傳統基礎設施被云供應商和相關技術所取代。我們有作為服務的虛擬機、作為服務的數據庫和作為服務的許多其他信息元素。軟件解決方案中的主要規劃已經轉移到了基礎設施的高水平設計,因為很多東西可以在此基礎上自動化。此外,我們還有容器和容器協調。它接管了復雜性,因為我們可以把系統分成更小、更簡單的部分。
應用程序代碼變得更加獨立于平臺。然而,其復雜性在于基礎設施和運營。應用程序開發人員越來越專注于業務邏輯。DevOps工程師處理其余部分。
9.SCRUM != AGILE
采用特定的過程通常會導致學習行為,最終導致習慣。至少,這是它的理論。
然而,在某些情況下,過程仍然是過程,人們只是為了走過場而苦苦掙扎,但行為從未發展。這樣想吧,你見過多少開發團隊經歷了所有的Scrum儀式,但實際上沒有以敏捷的方式工作?太多了嗎?我們同意。
那么你能做什么呢?首先,團隊認同,這始終是需要建立的第一步。如果你的團隊沒有看到使用這種方法論工作的價值,那么所有的過程和儀式在長期內都不會有什么進展。
第二步是確保你有一個偉大的scrum master和項目經理,以確保良好的實踐被傳遞下去,并確保任何反對意見被采納。
第三步是認識到:當敏捷價值和Scrum框架沒有任何價值時,將其強行灌輸到人們的喉嚨里,會讓你很快就一無所獲。我們已經在我們的文章中詳細介紹了這一點以及更多的內容,標題為 “Scrum isn’t the answer for every IT project”.
SCRUM可以是敏捷的,但它并不能保證敏捷性。敏捷性來自于行為,而不僅僅是過程。
10.持續安全
正如我們之前多次寫到的,安全不能是事后的想法。我們不能簡單地 "留待以后"。"檢查應用程序的安全問題必須被整合到DevOps流程中,并且從第一天起就被整合到開發流程本身。幸運的是,我們可以使用一些工具來使這個過程無摩擦。其中之一是 Snyk.它是一個全面的工具,可以 "發現并自動修復你的代碼、開源依賴、容器和基礎設施中的漏洞[...]。"
我們必須在開發周期中應用安全檢查程序。安全是信任的基礎--未來的貨幣。
11.審計云供應商的服務價格
由于三個主要的云計算供應商幾乎不存在競爭,他們提供的服務的差異是(或多或少)任意的。在現實中,我們可能看到的唯一差異是服務價格的差異。這就是為什么,對這個特定的供應商有偏見并不一定是壞事。大多數情況下,確實沒有什么區別。
選擇你感到舒服的,并且已經了解的供應商。邊走邊評估,不要害怕改變。
云供應商沒有虛擬競爭,沒有成本套利。云基礎設施的成本非常依賴于通貨膨脹和經濟衰退。
12.一切都可以 "作為服務 "來做。
平臺即服務,基礎設施即服務,數據庫即服務,軟件即服務,后端即服務......我們沒有給你更多的例子,你應該明白我們的意思。你能想到的一切都可以由第三方完成并出售給你。
使用這些服務是一種權衡。你放棄了一些控制權,以便變得更精簡,能夠更快地進行迭代,并在前期節省一些資金。
由于云供應商和無服務器方法的重要性的增長,每一個軟件都可以作為一個服務來完成。
13.每個人都在使用Visual Studio Code。
Visual Studio Code在全世界掀起了一場風暴。擁有微軟的支持,擁有開源許可證,用TypeScript編寫,并允許輕松擴展功能,這些都是偉大的決定。到目前為止,文本編輯器是現代程序員中最受歡迎的選擇。其他選擇,如基于Intellij的集成開發編輯器(IDE)或Vim,都在VS Code的陰影下,盡管 JetBrains’ Fleets可能會改變這種狀況。
由于有多種擴展和定制工具,VS Code成為開發者中最受歡迎的IDE。
14.如今,TensorFlow被廣泛使用。
TensorFlow,谷歌的機器學習框架在程序員中是一個非常受歡迎的選擇。首先,它在GitHub的前20個最受歡迎的存儲庫里。然后,有多個端口。 支持 JavaScript ,這些團隊在他們的例如。 React Native應用程序,或 web apps in React或任何其他 JS 框架。 這提供了巨大的靈活性,并允許團隊將解決方案嵌入許多解決方案中。
由于TensorFlow,我們可以在網絡應用中實現AI解決方案。訓練的模型是由庫提供的。開發人員應該專注于訓練它們。
15.一個很好的長期雇傭策略是雇傭年輕工程師并對他們進行培訓。
雇用年輕工程師是一個良好的長期戰略。雖然沒有適合所有公司的 "最佳戰略",但雇用年輕工程師并培訓他們絕對是成長和保留內部人才的最佳方式之一。
雇用年輕人是一種很好的方式,可以隨著時間的推移慢慢擴大你的團隊,并建立一種內部文化,與雇用那些可能已經定型的人相比,更容易塑造。初中生還能提供一個新的視角,并更多地接觸到當前的趨勢。
在一些情況下,這并不理想,例如,當你的公司需要快速擴展和開發新功能時。如果你有一個小的內部團隊,由于不現實的開發期望,他們總是試圖趕上他們的積壓工作,這也不是最好的。
雇用年輕工程師培訓他們的策略并不是沒有陷阱的。在你的團隊中的初級員工沒有經過以前公司的審查,他們沒有工作經歷,而且很可能是一擊即中。不幸的現實是,雖然這種策略在適當的補償方案下可以很好,但初級雇員可能會發現自己的位置,他們只需轉移公司,而不是等待或推動晉升或加薪,就可以使自己的工資翻倍、三倍甚至四倍。
這就是為什么要有透明的工資和薪資表,向人們展示他們在職業道路上的發展方向和方式。這就是為什么擁有優秀的入職培訓計劃也非常重要,以確保花在培訓后輩上的時間得到很好的利用,并使導師和學員都受益。
根據許多研究,對軟件開發人員來說,一個很好的長期雇用做法是雇用沒有經驗的工程師,并對他們進行培訓,讓他們了解組織的方式。
這就是了。2022年最有影響的15個趨勢。在你看來,哪一個是最有影響的?我們錯過了什么嗎??