從零開始搭建一個PaaS平臺 - 我們要做什麼

来源:https://www.cnblogs.com/anxin1225/archive/2020/05/23/12944001.html
-Advertisement-
Play Games

前言 從最開始的小公司做小網站,到現在進入現在的公司做項目,發現小公司里很多很多工作都是重覆的勞動(增刪改查),不過想想也是,業務軟體最基礎的東西不就是增刪改查嗎。 但是很多時候,這種業務邏輯其實沒有必要挨個重寫。總不能說你的增刪改查比我的高級很多。很大程度上,複雜的問題只是數據太多了怎麼優化。 簡 ...


前言

從最開始的小公司做小網站,到現在進入現在的公司做項目,發現小公司里很多很多工作都是重覆的勞動(增刪改查),不過想想也是,業務軟體最基礎的東西不就是增刪改查嗎。

但是很多時候,這種業務邏輯其實沒有必要挨個重寫。總不能說你的增刪改查比我的高級很多。很大程度上,複雜的問題只是數據太多了怎麼優化。

 

簡介

在真的開始做之前,先來簡單介紹幾個概念。簡單介紹一下PaaS是什麼,大概意思就是已經做好了一個大的平臺,你可以在上邊快速的配置、擴展你的服務。

詳細的介紹推薦看一下阮一峰老師的博客 http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html

 

概念上

我想從零開始搭建一個能夠配置定義業務,通過代碼擴展業務的平臺。在這個平臺上,簡單的需求,不寫代碼。複雜需求,只寫與標準不同的代碼。

 

有啥好處 

提高生產力

其實,做軟體的大部分時候,都是在寫增刪改查,實在是太簡單了。搬磚誰不會對吧,要想搬得快,不需要你有多麼好的腳力,更多的時候,你可能需要一個塔弔。

 

穩定的高負載

PaaS的設計之初,就是為了比較大的數據量來考慮的。項目小的時候,怎麼著都行,但是,數據量一旦上來之後。小的項目可能根本沒法用,如果是PaaS平臺的話,你可能只需要多幾台機器就完了,還是基礎組搞的事情。

 

分工明確

提到了高負載,其實很大程度上都是底層的事情。普通的開發,更多的好處只是性能的提升。那麼就需要兩撥能力不同的人來共同完成這件事情。搞底層的更專註性能、擴展,搞業務的就更關註自己的核心業務就完了。

 

更少的服務代價

這個指的是客戶花銷,也是PaaS對於傳統軟體的優勢。PaaS平臺一旦做完,他肯定已經有平臺了,如果要開發新的功能,可能並不需要占用更多的資源,只是在原有的資源上增加點業務而已。況且PaaS服務商與客戶更多的是提供服務的續租模式,多一個客戶少一個客戶,其實對於伺服器來說並沒有啥壓力,同一個團隊能夠服務與更多的人。

 

開發更快

就算是往小里做,如果你有這麼一個PaaS的框架,你想要在上邊直接搞一個業務的話。其實也就是搞點配置,然後作為一個單機軟體部署,純定製開發也會變得更快。

 

具體點 我們要做什麼

假設我們現在要做一個人員管理系統,我們一般需要以下內容。

- 增加數據

可以配置一個或者多個新增數據的頁面,點擊保存就保存了數據

 

 

 

 

 

 

- 刪除數據

可以配置個按鈕,點擊一下就把相關數據刪除掉

 

 

 

- 修改數據

可以配置個按鈕,點擊一下出現一個編輯頁面,裡邊會出現對應的數據,你可以修改,然後點擊一下更新,數據就更新了

 

 

 

- 查

-- 列表頁面

你可以在列表頁面,配置幾個篩選項,然後你修改完數據之後,點擊搜索,就會根據你的數據來改變列表內容數據

 

 

 

-- 詳情頁面

你可以在列表頁面點擊名稱(點擊哪個可以配置)然後,就會自動跳轉到詳情頁面

詳情頁面要展示哪些內容也可以通過配置來進行修改

NoCode能力

這個是整個業務的核心,也是PaaS之所以可以將幾個月的工作量濃縮為數周的原因所在。

其實就是一個簡單想法的轉變,原本我們要實現我上邊畫的幾張圖,都是考改變代碼來實現,比如說列表頁面應該是戰士什麼Title、列表要不要出現選擇框、列表究竟展示那幾列、右上角究竟有什麼按鈕等等。

現在將這些原本需要寫到代碼裡邊的邏輯整理到配置裡邊,然後通過解釋這些配置,渲染出頁面,渲染出邏輯。

 

LowCode能力

當然了,上述的情況太過於簡單了,基本上就是一個資料庫的內容簡單展示而已,如果我們需要更複雜一點的內容呢?

 

比如說我們需要輸出這個人的年齡分層(幼兒、少年、青年、中年、老年),我們要怎麼做呢?

很顯然這個狀態不應該被存放在資料庫中的,因為這個實際上是通過年齡動態計算出來的,過一年之後這個展示狀態可能就會過期了,這個時候我們就需要能夠動態插入邏輯根據年齡計算這幾個值,然後輸出結果。

 

當然這並不是全部了,其他還有很多需要解決的事情。比如

  • 使用配置來實現渲染,配置數據,讀取起來是不是要比寫代碼慢很多?
  • 搜索條件可能有很多,怎麼實現這些條件可用呢?
  • 如果預設的頁面滿足不了我的需求怎麼辦?
  • 業務許可權要怎麼處理?總不能進入系統的人都有許可權吧?
  • 開發完了這個玩意怎麼發佈到線上去?
  • ... ...

 

這個玩意有點龐大,一口氣說不完。這次內容就這麼多,我也只能一邊整理一邊寫博客,這可能會是一個很長,也可能是做不下去很短的系列。

寫的不好,能力有限多多見諒


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天小編要跟大家分享的文章是關於想要學習web前端需要掌握哪些技能和工具?互聯網的快速發展和激烈競爭,使得用戶體驗成為一個重要的關註點,導致專業前端工程師成為熱門職業,各大公司對前端工程師的需求量都很大,要求也越來越高,優秀的前端工程師更是稀缺。因此想要學習前端技術的人越來越多,那麼零基礎學習web ...
  • 前端開發因為其上手快,開發難度適中,而應用非常廣泛,成為目前大部分想進入IT行業的年輕人的首選。目前前端開發崗位人員主要分類三類:高校畢業生,培訓生,自學人士三大類。今天主要和大家一起來探討一下,自學前端需要掌握哪些知識點。 ...
  • Ajax 非同步 JavaScript 和 XML 第一步: 創建 XMLHttpRequest 對象,var 對象名 = new XMLHttpRequest(); Xmlhttprequest 對象用來和伺服器交換數據 第二步: XMLHttpRequest 對象的 open()和 send()方 ...
  • JavaScript箭頭函數 語法 基礎語法 高級語法 描述 引入箭頭函數有兩個方面的作用:更簡短的函數並且不綁定 this 。 更短的函數 不綁定 this 在箭頭函數出現之前,每個新定義的函數都有它自己的 this 值(在構造函數的情況下是一個新對象,在嚴格模式的函數調用中為underfined ...
  • 前言 文章只記錄理解以及容易遺忘的知識點。 詞法作用域、塊作用域 詞法作用域 詞法作用域:簡單的說,詞法作用域就是定義在詞法階段的作用域。換句話說,詞法作用域就是在你寫代碼時將變數和塊作用域寫在哪裡來決定的,因此在詞法分析器處理代碼時會保持作用域不變(大部分情況是這樣的)。 當然有一些欺騙詞法作用域 ...
  • # 5.盒模型 - box-sizing:content-box | border-box; 預設content-box 一個盒模型的功能強弱,直接決定了佈局是否簡潔,決定了編程的複雜度。 正常盒子: boxWidth = width + border*2 + padding*2; IE6混雜模式的 ...
  • 表單一點擊提交按鈕(submit)必然跳轉頁面,如果表單的action為空也會跳轉到自己的頁面,即效果為刷新當前頁。 如下,可以看到一點擊提交按鈕,瀏覽器的刷新按鈕閃了一下: 如果想要阻止表單的預設提交事件,有以下幾種方法: 1.將<input>標簽內按鈕類型從type="submit"修改為typ ...
  • 什麼是前端? 前端即網站前臺部分,也叫前端開發,運行在PC端,移動端等瀏覽器上展現給用戶瀏覽的網頁。隨著互聯網的發展,HTML5,CSS3,前端框架的應用,跨平臺響應式網頁設計能夠適應各種屏幕解析度,完美的動效設計,給用戶帶來極高的用戶體驗。 (核心技術:HTML、CSS、JavaScript) 核 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...