阿裡妹導讀:2020開年極為複雜。面對新型肺炎的疫情,我們每一個人都與國家命運緊密相連。全社會的力量都凝聚在一起,衆志成城,共克時艱。有這麼一群熱愛代碼的人,用自己的方式提升效率,保衛家園。
“擴散!急尋這235個車次、航班同行人”
“緊急尋人!急尋Z264、Z265列車同行人!”
“急尋同行旅客,這趟到瓊海的動車發現确診患者”
……
新型肺炎潛伏期長則14天,春運高峰大大增加了疫情防控難度。一條條跳動在新聞上的患者同行資訊,就是一個個防控疫情的關鍵節點。
狙擊疫情,必須分秒必争!
資訊不斷更新,來源多樣繁雜,如何讓人們快速确認是否與新型肺炎确診患者同行,進而迅速進行診斷和隔離?1月27日,一款由幾位開發者從上午11點緊急開發,到晚上11點已在朋友圈傳播的“新型肺炎同程查詢工具”就已上線——輸入日期、車次以及地區,即可查詢是否與已披露的确診患者同行。
網站: http://2019ncov.nosugartech.com/ “有人是醫務人員,是以他們去了;有人是警察,是以他們去了。我們是工程師,我們可以用自己的技能做一些力所能及的小事,希望可以幫到大家”。今天,阿裡妹采訪到成都無糖資訊技術有限公司聯合創始人兼CTO,也是工具的開發者童永鳌。在他的故事裡,我們看到了中國開發者的力量。童永鳌在辦公
工具上線後,累計通路量已突破3500萬次,并獲得人民日報的點贊轉發。
做力所能及的小事,幫助大家共度難關
阿裡妹:能否簡單介紹新冠病毒确診患者同程查詢工具的開發初衷?
童永鳌:最開始的原因很單純,就我自己有查詢需求。我們日常接觸到的疫情資訊裡包含尋找患者的同程者這塊内容一般就是以圖檔為載體,一張圖羅列了患者曾經搭乘過的交通工具、車次、日期等資訊。通過圖檔逐條查找資訊,一來是有可能看漏資訊,二來是查找起來确實不太友善,每次都要從頭查找。
作為一個程式員,我比較“懶”,一條條的去翻曆史記錄很麻煩,于是就想到把資料摳下來,用搜尋工具去查找更加友善。
阿裡妹:工具開發團隊是如何在短時間内建立起來的,團隊裡都是志願者嗎?
童永鳌:最初的團隊成員都是我自己認識十多年的老網友。我們原本就在一個群裡,平時會閑聊。我看到央視的新聞之後,就在群裡說了想要做個工具的想法。他們也非常支援,就直接開始做。團隊中還有一個人是我公司的,因為工具需要運作維護,我就把公司的運維主管拉進來。也考慮過志願者,但如果一開始公開招募的話,整個周期會很長。
最開始我畫了一張簡單的布局圖丢到群裡,把前端、後端、資料收集的工作安排出去就立馬開始幹活了。其實是一種很簡單、粗暴的方式。後面陸續加入一些志願者,他們看到工具之後,通過郵件的方式聯系,并加入我們。我們再把這些志願者拉到群裡,他們協助我們收集整理資料。
最初大家在群裡讨論工具時手畫的簡單原型圖
阿裡妹:能否分享一下查詢工具最開始的設計思路?
童永鳌:工具本身用到的技術比較簡單。先把網上現有的圖檔和文字内容統一做資訊整合,放到資料庫中。然後再做一個檢索工具,就成了現在大家看到的樣子。
一開始并沒有想太多,總體思路很直接。有想法之後就立刻開始動手搭建網頁。先是在網上查找公開的資訊,交通工具就包含:火車、飛機、公共汽車、計程車等。是以,初步設計資料庫中可能用到的這些字段。
接下來就是考慮使用者可能會用什麼方式來查詢,查詢的關鍵詞等。我就把自己當成使用者,假設自己使用這個工具的話,我需要查些什麼?我想到的第一點是日期,先查詢我哪天乘坐交通工具。第二點就是貼合車次做具體檢索。另外是地區搜尋,如果使用者在某個位置,那麼這個地區的火車、飛機等是否存在已确診患者。
前面兩點是背景資料庫設計,最後就是界面設計。考慮完這兩個設計,就直接開始動手做了。
阿裡妹:從開始到工具上線過程大概用了多少時間?上線後有哪些工作要做?
童永鳌:開發大概用了半天,1月27日 上午11點左右有了這個想法,下午5點左右,功能上基本就已經做好了。後來又花了6個小時整理資料,晚上11點就發朋友圈了。
後期維護上花費的時間比較多,團隊成員每天都會花17個小時甚至更久來維護,這幾天大家基本上早上9點到晚上2點都在工作。剛開始确實沒想到資料會突然增多,資訊量大了之後我們就要做一些功能上的加強,比如:處理資料流暢機制、改動代碼以及回複網友郵件等。事情多又相對比較雜,但是每一件事情都必須仔細對待。
阿裡妹:開發和維護的過程中遇到過哪些挑戰?
童永鳌:最大的挑戰來自于資料整理。這個工具在初版的時候,用到的資料是央視整理過的,資料是現成的,整理起來相對容易些。後期資訊量越來越大,整理資訊的難度也越來越大。現在我們也會靠自己去篩選資訊。一方面通過爬蟲做資訊初篩,另一方面靠網友給我們回報資訊。我們會要求網友提供連結,把連結批量爬蟲回來後,從連結中做一些資訊提取的工作。從目前的資料來看,爬蟲來的資訊和網友提供的資訊大概是五五分。
另外一個挑戰來自于通路量的暴漲,完全沒想到通路量會這麼大。第二天通路量開始暴增的時候,最開始的版本架構就扛不住了。
阿裡妹:能簡單說下通路量的增長過程嗎?面對流量暴漲,是怎麼扛過去的?
童永鳌:1月28号是上線第二天,通路總量是450萬。第二天晚上八點開始就是一個幾何級數的增長,從一個小時10萬通路量跳到300萬。29号和30号總量在2000萬左右。
最開始用的是的朋友的伺服器,一兆帶寬1G記憶體。上線第一天,因為配置太低,無法容納100人同時線上的通路量。後來就直接調用第三方的CDN,我們嵌入遠端資源,就不用自己扛資源通路的這一塊流量。但随着通路量越來越高,我們發現單台伺服器要扛千萬級的流量很難做。
于是我們取了個巧,把頁面和資料檔案生成靜态的。相當于把庫裡的資料生成一個靜态的檔案,再把頁面和資料都放到阿裡雲的OSS上面。讓阿裡雲的OSS對象存儲去扛住高并發、高流量,我們自己就不用擔心流量壓力了。
阿裡妹:需要錄入的資訊大概多少?如何確定資料的準确性?
童永鳌:總量在500-600條左右。最早的資訊是100多條,現在已錄入300多條。後端還沒錄入的資訊大概還有250-300條左右,待錄入的資訊中包括重複的。
資料确認是一個漏鬥狀的篩選過程。網上搜集來的資訊經過驗證、去重後會越來越少。資料量大的時候用自動化方式采集,資料量小就可以直接通過人工采集。在稽核步驟上大概過程是:初始線索 -> 網友整理 -> 内部人員整理(核實糾正普遍性錯誤)-> 内部人員錄入(核實單條錯誤)-> 送出(稽核單條錯誤)-> 複查(有原文連結失效或新聞報道後續修改的情況)。
後來人民日報推送工具的時候,他們幫我們重新把資料認真地再稽核一遍。
對于資訊我們會逐層把關,越到後面關鍵的步驟,資料把關人越少越好。人越多的話,犯錯的可能性也随着增大。而且中間涉及到一個信任問題,特别是後面的稽核的這個步驟,除了我最信任的朋友和公司的制作人,沒讓其他人介入。
在時間上,現在錄入速度沒有之前那麼快了。因為我們對資料的準确性要求越來越嚴格,需要花大量的時間去核實。對我們來說,及時性排第二位,準确性才是第一位。
阿裡妹:對工具的性能會做什麼改進嗎?
童永鳌:現階段最主要的還是後端資料,首先是準确性,其次是及時性。功能上并沒有打算把它複雜化。如果有些新想法,可能會單獨去做嘗試。
當然,還是希望疫情能夠早點結束,就不用考慮這些啦。
阿裡妹:接下來會迎來一個返程高峰,有沒有大流量的預備方案?
童永鳌:我們現在已經不太擔心高并發、大流量的問題了,主要是對資料的準确性要求更高。我們自己現在錄入做資料的時候,感覺已經有點強迫症了,精神高度緊張,生怕敲了一個數字,需要反複确認。
阿裡妹:這次疫情來勢兇猛,你認為開發者的參與對于阻止疫情的蔓延起到了哪些幫助?
童永鳌:這個比較難判斷。假設我是工具的使用者,我也隻是做個查詢确認而已。至于它對疫情起到多大的幫助,我感覺不出來。我覺得醫生是最有幫助的,而工具能夠給大家提供一定的參考意義,我覺得就足夠了。
這兩天也收到一些網友的郵件,有的很簡單,就四個字:謝謝你們。看着其實很暖心。
阿裡妹:作為一個老開發者,有沒有什麼建議可以分享給同行?
童永鳌:這幾天也沒有時間、精力想太多。我想,對于程式員來說,寫代碼不能當成一份工作,應該當它是一個工具。從這個角度,很容易想到做疫情同乘者查詢工具,因為我隻是拿一個程式設計語言來解決我自己想解決的生活中的問題而已,并不是說我要做一個什麼項目,從産品角度去考慮這件事。
對開發者來說,建議他們嘗試把程式設計變成了解決日常生活需求的一個東西,而不是單純地看成工作去對待,可能就會有更多的東西好出來。
共抗疫情,我們能赢
“能做事的做事,能發聲的發聲。有一分熱,發一分光。”疫情沒有旁觀者。感謝開發者們用科技的力量點亮星光。
在新型肺炎同程查詢工具之外,阿裡妹還看到了,GitHub上的「wuhan2020」防疫資訊收集平台,以及目前還在征集開發者的外來人員登記系統、消毒檢查登記系統、學生健康報備管理系統、違紀舉報系統、物資管理系統等項目。
我們誠摯邀請所有開發者集思廣益,如果你有能幫助到戰勝疫情的小工具、好想法,歡迎在下方留言。共抗疫情,我們能赢!