有沒有發現,每隔幾年總會有一些火熱的前沿詞彙出如今咱們面前,好比:雲原生、微服務、中臺、Servless、低代碼等等。那麼你是否有想過,這些概念的背後是什麼推進的呢?結論並不難發現,從各類概念的目標上去合併同類項,它們的本質目標都是:提升研發效率!php
在提升研發效率的道路上,各類方案都有着不一樣的側重點,有的着力於基礎設施的完善,有的着力於系統架構的優化,有的着力於生產工具的更新。拿最近最爲熱門的低代碼平臺來講,更多的是站在生產工具這一側重點之上。html
說到生產工具的提高,咱們每每第一反應想到的是IDE上的優化,好比:IDEA、Eclipse這些開發工具上所作的文章,而低代碼平臺與這些還有着本質區別。程序員
在傳統開發工具的產品迭代上,咱們更多看到優化點是:更酷炫的界面、更友好的編碼聯想、更精準的錯誤提示、更方便的調試流程、更便捷的構建工具等面向傳統開發者的完善方向。這方面的生產工具擁有更高的靈活性,由於咱們能夠根據團隊偏好和管理須要去自由的構建咱們的工程風格,來完成咱們的開發目標。數據庫
而低代碼平臺的實現目標與傳統開發工具產品不一樣,他們致力於讓用戶寫更少的代碼,以更友好的編碼方式,下降數字化系統建設的人才門檻,讓更多的人能夠快速的上手並參與到企業信息化建設中去。那麼爲何低代碼平臺能夠下降開發人員的上手門檻,能夠加速企業的數字化建設呢?緩存
我以爲主要有如下幾個方面:架構
開發者對領域模型的設計、用戶界面的實現、業務流程的規劃等核心編碼邏輯,均可以用拖拉拽的方式實現。併發
好比:咱們以專一低代碼領域多年的奧哲旗下產品雲樞爲例。假設咱們要實現一個企業常規的請假流程,是如何實現的,來體會與傳統開發之間的主要差別!框架
第一步:領域模型設計。傳統開發模式之下,咱們要作的是根據咱們所用的數據庫來完成表結構的建立,這裏就須要咱們維護好相關的建立腳本。而這裏咱們能夠看到,咱們只須要經過可視化的方式來完成領域模型的設計,同時並不須要考慮具體用的什麼數據庫,對於選擇不一樣數據庫之間的差別可最後依靠平臺來自動完成適配。less
第二步:操做界面設計。在全部的低代碼平臺中,幾乎都提供了所見即所得的表單設計能力。其原理就是將各類經常使用的頁面元素實現組件化,並與領域模型實現關聯綁定以後,經過配置完成業務數據的輸入存儲與讀取展示。因此,若是業務需求在已有的現成組件均可以知足的狀況下,用戶在實現的時候,是不須要編寫代碼就能夠完成界面的設計與實現。運維
第三步:業務流程設計。對於流程化的業務需求,常規模式之下,簡單的咱們能夠用狀態模式或一些輕量級的狀態機框架來編碼實現,複雜或靈活一些的,咱們須要引入工做流框架來實現,須要作不少複雜的前置配置而且須要較多的學習才能上手並用好。而經過低代碼平臺中的流程設計界面能夠看到,流程開發配置過程被簡化了不少。
從上面的幾個產品開發核心步驟中,咱們能夠發現,低代碼平臺都在儘量去封裝各類經常使用編碼操做,儘量的讓用戶能夠所見即所得的去完成各階段的設計與開發步驟,儘量的減小代碼的編寫,對於一些簡單需求,甚至實現零代碼完成的目標。
經過上面可視化的編碼,咱們是能夠快速的完成一個業務需求的開發了。但開發過程對於一個需求的實現,只是前期過程,那麼後續的項目打包、版本管理、產品上線又是怎麼樣的呢?
對於一個成熟的低代碼平臺來講,這些內容必須涵蓋其中!這也是與傳統開發模式存在較大差別的部門。但這裏因爲低代碼平臺的定位不一樣,可能會有幾種不一樣的處理方案,常見的主要有兩類:
第一類:SaaS化的部署能力。這種低代碼平臺每每提供較爲輕量級的實現能力,好比:在線化的Excel工具。用於實現一些簡單的問卷調查、數據採集與統計等功能。這類需求不須要太複雜的界面交互、流程控制或數據處理的狀況。好比:奧哲旗下的另外一個產品:有格
這一類產品,因爲定位於輕量級低代碼平臺,因此他的應用範圍會更偏向於一些常見的模型,因此平臺也會提升一些模版,便於用戶快速上手,基於行業固有模版去作二次定製來快速實現符合本身團隊須要的一套應用。
而整個開發過程也相較上面提到的雲樞也更爲簡單,好比:下面是用該工具完成的一個敏捷研發管理應用。
因爲這類平臺所面向的應用場景較爲簡單,每每它們具備臨時性、週期短等特色,它們並不須要部署到特定的環境,天然也沒有與私有資源的對接,因此這類平臺每每直接就能夠在平臺側實現對用戶應用的部署與使用。
第二類:提供DevOps與私有化資源的整合能力。相較於上面的輕量級低代碼平臺來講,這種就是比較重量級的了。在可視化的編碼方式一節中,咱們所舉的雲樞]就是這樣一個兼備了運維能力整合的低代碼平臺。
它涵蓋了從產品版本的構建構建:
到基礎設施的維護:
再到產品的發佈:
涵蓋了一個需求從開發到上線的完整流程。因此,咱們能夠看到對於一個業務需求的時候,經過低代碼平臺的應用,整個產品研發過程,都被整合到了一個平臺之中。這與咱們應用傳統生產工具備着很是大的差別,咱們不須要再去本身設計代碼庫的版本管理、構建包的管理、部署資源的管理等一系列的架構管理設計。經過這類低代碼平臺提供的總體管理方案就能支持產品的開發、測試、上線全流程管理。
在看了上面介紹的第二類低代碼平臺,是否是感受這東西很是強大,那麼它會是開發效率提高的銀彈嗎?將來會像有些廠商說的:將來人人都是開發者,程序員都要失業了?
對於宣傳「將來人人都是開發者」這樣的觀點,我是不認同的。由於我仍是相信軟件開發不存在銀彈!雖然低代碼平臺看上去已經很強大,但不管是輕量級、仍是重量級的低代碼平臺來看,也都是針對一些特殊客戶羣體的。並不存在一款低代碼平臺可以適應全部的開發團隊與業務場景,因此低代碼平臺也不能被籠統稱做爲提高效率的銀彈,應該說在更符合個性化需求的前提下,來幫助開發團隊或者企業提高效率。
對於輕量級的低代碼平臺而言,由於功能相對簡單,對於複雜多變、須要更多創新元素的互聯網C端產品來講,就不太適合使用。我認爲這一類平臺更適合應用於一些業務邏輯更爲穩定的場景,或一些臨時性的數據採集、統計類需求,就像奧哲有格中的那些模版應用,這些通過行業長期沉澱,大部分團隊都相似,最多有一些小變化的應用方向。或者一些相似問卷等臨時性的需求,就特別適合使用。選擇一些產品易用性好的平臺,甚至都不須要開發介入,一些聰明的產品和運營都能本身經過配置實現一些簡單需求。
對於重量級的低代碼平臺而言,由於功能更爲專業,能夠知足比輕量級平臺更爲複雜的業務需求,並能適配更多不一樣團隊的管理模式。但這類平臺使用中涉及的概念仍是很是衆多的。因此,只能說這類平臺對於開發人員來講會更容易上手。對於沒有開發思惟的純業務人員來講,仍是具有必定的門檻。這類平臺更適合應用於大型開發團隊對大企業內部系統的開發,對於人員配置上,相較傳統開發要求更低,但對於開發速度表現更快。
但目前這類平臺對於一些複雜場景,尤爲對於一些高併發的業務場景還有提高空間。由於在這些場景中,咱們每每須要動用不少中間件、緩存、限流、熔斷等技巧來保障系統的良好運行。所以,雖然我認爲低代碼平臺是一個很好的工具,不論輕量級的仍是重量級的,都能解決部分場景的開發效率問題。但若是想讓業務開發人員專一於業務功能實現,並覆蓋全部場景,那麼在性能架構方面要作出強化。
總的來講,我建議咱們在選型與應用低代碼平臺時,必定要充分理解自身業務場景的特色與各低代碼平臺優點之間的關係,必須有的放矢,才能讓低代碼平臺發揮最大的價值!切勿拿了平臺看到需求就處處推,不要由於好工具用錯場景,被噴的一無可取!
最後,作個小調研:大家開始使用低代碼平臺了嗎?你以爲低代碼平臺給大家帶來了效率的提高嗎?加入咱們的技術交流羣,聊聊你的觀點!
歡迎關注個人公衆號:程序猿DD,得到獨家整理的免費學習資源助力你的Java學習之路!另每週贈書不停哦~