網(wǎng)站運(yùn)營(yíng)介紹阿里指數(shù)官網(wǎng)最新版本
在工作中,有時(shí)會(huì)有對(duì)接其他部門系統(tǒng)的需求,這種需求雖然不復(fù)雜,但是跨部門協(xié)作,往往會(huì)出現(xiàn)各種難以溝通、協(xié)調(diào)的情況。
踩的坑多了,就記錄下來(lái)。
注意:在本文中,A系統(tǒng)調(diào)用B系統(tǒng),A依賴B,稱B系統(tǒng)為下游系統(tǒng),A系統(tǒng)為上游系統(tǒng)。
不同團(tuán)隊(duì)有不同的叫法,可能上下游還是相反的叫法。沒(méi)有絕對(duì)的正確。
一、系統(tǒng)之間不要盲目對(duì)接
系統(tǒng)之間對(duì)接時(shí),最好不要盲目從中間系統(tǒng)接數(shù)據(jù)。
上游系統(tǒng),最好從生成數(shù)據(jù)的最下游系統(tǒng)去接數(shù)據(jù),不要從中間系統(tǒng)去拿這些數(shù)據(jù)。
中間系統(tǒng)往往會(huì)對(duì)數(shù)據(jù)進(jìn)行加工,如果上游系統(tǒng)出現(xiàn)問(wèn)題要排查非常困難,很難弄清到底是下游系統(tǒng)出問(wèn)題,還是中間系統(tǒng)出問(wèn)題。
明確數(shù)據(jù)中心
核心數(shù)據(jù)最好只存在一個(gè)系統(tǒng),其他系統(tǒng)去查詢/調(diào)用。
如果數(shù)據(jù)分散在多個(gè)系統(tǒng),數(shù)據(jù)同步/數(shù)據(jù)一致性,數(shù)據(jù)會(huì)很混亂,很容易出問(wèn)題。
二、提前商量好系統(tǒng)對(duì)接的環(huán)境
不一定所有的系統(tǒng)都會(huì)有灰度環(huán)境,也不是所有的系統(tǒng)都能在測(cè)試環(huán)境模擬真實(shí)數(shù)據(jù)。
有些比較奇葩的系統(tǒng),甚至測(cè)試環(huán)境是沒(méi)數(shù)據(jù)的,直接在灰度環(huán)境測(cè)試。
因此,提前商量好對(duì)接的環(huán)境挺重要的。
三、商量好系統(tǒng)對(duì)接的方式
是http接口,還是MQ消息隊(duì)列,還是通過(guò)大數(shù)據(jù)平臺(tái)的Hive、ETL對(duì)接等。
四、必須排期
-
什么時(shí)候開(kāi)始排期?
開(kāi)完需求會(huì)議之后的一兩天。 -
排期包括:
下游系統(tǒng)什么時(shí)候給上游系統(tǒng),接口文檔、參數(shù)定義,或者M(jìn)Q集群、消息主題,或者表結(jié)構(gòu)、數(shù)據(jù)類型等設(shè)計(jì)細(xì)節(jié)。
上下游系統(tǒng)什么時(shí)候在測(cè)試環(huán)境進(jìn)行對(duì)接,聯(lián)調(diào)。
下游系統(tǒng)什么時(shí)候上線功能。上游系統(tǒng)什么時(shí)候上線功能。
上游系統(tǒng)的后端什么時(shí)候給前端接口文檔。什么時(shí)候前后端聯(lián)調(diào)。
上下游系統(tǒng)什么時(shí)候在灰度/生產(chǎn)環(huán)境進(jìn)行對(duì)接。
排期最好寬松些。留一些buffer。往往溝通、開(kāi)會(huì)、驗(yàn)收,都會(huì)浪費(fèi)很多時(shí)間。
總的流程如下(具體流程根據(jù)項(xiàng)目情況靈活調(diào)整):
日期\流程 | 下游出接口文檔 | 上游后端出接口文檔 | 下游轉(zhuǎn)測(cè) | 上下游后端聯(lián)調(diào) | 下游上線 | 上游前后端對(duì)接 | 上游轉(zhuǎn)測(cè) | 上游發(fā)布評(píng)審 | 上游上線 |
---|---|---|---|---|---|---|---|---|---|
日期1 | 日期2 | … | … | … | … | … | … | … | … |
五、下游系統(tǒng)要注意什么?
下游有變動(dòng),及時(shí)通知上游
作為下游系統(tǒng),不能直接變更系統(tǒng)對(duì)接的接口url、參數(shù)、字段類型,或者是集群ip,消息主題等信息。
在變更之前,必須及時(shí)通知上游系統(tǒng),并商議好是否變更,如果確定變更,給出變更日期。
下游系統(tǒng),最好能提供普通性適用性強(qiáng)的數(shù)據(jù)
一個(gè)下游系統(tǒng),可能對(duì)接五六個(gè)上游系統(tǒng)。
如果針對(duì)每個(gè)上游系統(tǒng),都做定制化,那開(kāi)發(fā)成本和維護(hù)成本會(huì)很高。
六、上游系統(tǒng)要注意什么?
上游系統(tǒng)最好直接拿最終的結(jié)果
透?jìng)髯詈谩?shù)據(jù)從下游系統(tǒng)傳輸給上游系統(tǒng),上游系統(tǒng)最好能直接拿到最終的結(jié)果。
如果上游系統(tǒng),還需要對(duì)數(shù)據(jù)進(jìn)行加工,會(huì)增加出錯(cuò)的概率。
上游系統(tǒng)得做兜底
作為上游系統(tǒng),永遠(yuǎn)都不知道下游系統(tǒng)會(huì)傳什么樣的數(shù)據(jù)過(guò)來(lái)。
可能之前約定好了某個(gè)字段是數(shù)字類型,下游系統(tǒng)莫名奇妙就發(fā)個(gè)英文字母或者日期過(guò)來(lái)。
因此,上游系統(tǒng)得兜底,做好異常處理,處理掉異常數(shù)據(jù)、臟數(shù)據(jù)。
可以讓下游系統(tǒng)給demo示例
曾經(jīng)對(duì)接過(guò)某個(gè)系統(tǒng),給出的接口調(diào)不通,明明都是按照文檔上的來(lái),怎么都調(diào)不通。
最后要求下游系統(tǒng)給出相關(guān)的demo示例。才發(fā)現(xiàn)文檔是舊的,跟實(shí)際不相符。
推進(jìn)測(cè)試及時(shí)介入
如果下游系統(tǒng)的測(cè)試同事沒(méi)有及時(shí)界入,那么上游的開(kāi)發(fā)就會(huì)變成下游的測(cè)試。就會(huì)非常痛苦。
可以及時(shí)詢問(wèn)下游系統(tǒng)是否轉(zhuǎn)測(cè),是否開(kāi)始測(cè)試,測(cè)試進(jìn)度如何。
上游驗(yàn)收要及時(shí)
驗(yàn)收的時(shí)候,不要私聊,要在群里反饋問(wèn)題,讓領(lǐng)導(dǎo)們看到驗(yàn)收的結(jié)果,避免反復(fù)驗(yàn)收。
上游必須讓下游研發(fā)參與發(fā)版
上游系統(tǒng)在發(fā)版當(dāng)天,必須做發(fā)布評(píng)審,準(zhǔn)備好下游同事的聯(lián)系方式。
提前通知下游同事,讓下游同事當(dāng)天一起參與發(fā)版!!
否則發(fā)版當(dāng)天,出現(xiàn)下游問(wèn)題,沒(méi)法解決。
七、其他
信息要全員同步
最好拉一個(gè)群,把所有相關(guān)人員都拉上。不要只通知其他一人,忽略了其他人。
記錄對(duì)接的系統(tǒng)及聯(lián)系人
如果一個(gè)系統(tǒng)對(duì)接了多個(gè)系統(tǒng),最好記錄下對(duì)接的系統(tǒng)及聯(lián)系人。
如果系統(tǒng)的數(shù)據(jù)比較復(fù)雜,也最好把各個(gè)功能模塊的數(shù)據(jù)源記錄下來(lái),防止人員變動(dòng)后無(wú)法接手。
及時(shí)跟進(jìn)
如果系統(tǒng)對(duì)接方?jīng)]有在對(duì)應(yīng)日期給出設(shè)計(jì),或者是功能沒(méi)有在承諾的日期上線。
要及時(shí)去跟進(jìn),去了解原因,看到底是在哪個(gè)環(huán)節(jié)阻塞了。
先發(fā)消息,緊急的就打電話,電話打不通就直接現(xiàn)場(chǎng)找人,當(dāng)面溝通。
重要的功能必須打日志
打印日志,出現(xiàn)問(wèn)題,方便排查。
哪怕不是己方系統(tǒng)的問(wèn)題,也能把日志相關(guān)的參數(shù)、時(shí)間等重要信息發(fā)給系統(tǒng)對(duì)接方查看問(wèn)題。
工作要留痕
對(duì)接其他系統(tǒng),最好雙方都發(fā)郵件留痕。后續(xù)出現(xiàn)問(wèn)題,才能弄清楚到底是哪個(gè)系統(tǒng),在哪些環(huán)節(jié)出現(xiàn)問(wèn)題。
對(duì)接的系統(tǒng)甩鍋時(shí),我方系統(tǒng)還能留有證據(jù)。
匯報(bào)進(jìn)度
如果是特別特別重要的功能,可以每天/每周進(jìn)行匯報(bào)。
跟上級(jí)領(lǐng)導(dǎo)匯報(bào)系統(tǒng)對(duì)接的進(jìn)度。
跟對(duì)接系統(tǒng)的負(fù)責(zé)人溝通進(jìn)度。
系統(tǒng)調(diào)用出錯(cuò)
對(duì)接第三方系統(tǒng)。如果有問(wèn)題,找人解決,要提供問(wèn)題的環(huán)境、url 接口、參數(shù)等等。
對(duì)方不回復(fù),怎么辦?
直接大群 @人,再不回就 @ 負(fù)責(zé)人和領(lǐng)導(dǎo),再不行就直接崗位找人,不要阻塞著。
解決問(wèn)題
系統(tǒng)對(duì)接方出現(xiàn)問(wèn)題,如果對(duì)方遲遲解決不了,那就得升級(jí)問(wèn)題。
可以讓對(duì)方系統(tǒng)的高級(jí)開(kāi)發(fā)去幫忙解決。
實(shí)在沒(méi)有人力,也可以自己去解決。
曾經(jīng)在對(duì)接一個(gè)系統(tǒng)時(shí),對(duì)方有個(gè)bug一直解決不了,直接讓他共享屏幕,兩個(gè)人一起定位解決了。
再不行就跟雙方領(lǐng)導(dǎo)匯報(bào),讓領(lǐng)導(dǎo)找人,給資源。
系統(tǒng)對(duì)接,不順利怎么辦?
平復(fù)情緒,好好談,好好復(fù)盤,不要生氣,氣壞了身子沒(méi)人替。