開放政府標案專案流量爆發的一年記錄與啟發

從 2014 年開發了開放政府標案到現在已經過了超過五年了,這個專案跟著我開始工作到現在,雖然不算達成當初開發專案最初的目的,但是期間挹注了許多讓我個人成長的養分,而在這兩年,這個網站的月流量也成長了八倍,全都來自自然流量,變成一個月有超過二十萬流量的專案,這個成長過程跟我在工作的體驗很一致,無法細數你每天日常做對了哪些事,但重點是要不停的思考跟前進

所以寫篇文章紀念這些年的開放標案演進與我的學習的記錄,跟 side project 亂選技術對工作的幫助,跟作為一個專案的 PM 的角色思考的方式如何轉變。

緣起

簡單介紹一下開放政府標案這個專案,我們公民繳的稅,會被政府依照需求跟政策分配到各個政府機關/部會,然後用招標的方式讓民間的公司或個人可以公平取得這些標案的機會去競標,所以會定期釋出招標的公告跟決標的公告在政府的電子採購網站。

而政府的標案網站,除非你真的需要賺這個錢,其實你很難會有動機去瀏覽這些資訊,主要是這個系統的設計不太友善,不太方便你隨意地瀏覽,而有看過「黑金」這部電影,大概可以理解其實看似公平的標案背後,可能會有政治目的相關的操作隱藏在背後,不見得是嚴重的問題,但是當這個資訊不透明,就不容易被討論跟認知

所以為了響應 g0v 的目標,我就找了這個題目來試試看,主要就是希望可以把這些資料挖出來整理,做出一個容易瀏覽的介面,讓沒有要競標的民眾也可以更容易了解政府機關跟民間公司之間有什麼長期的標案厲害關係,或許可以看出有什麼不尋常的問題。

專案演進

一開始花了很多時間在做爬蟲,把電子採購網公告的資料一天一天的爬出來,就花了幾個月的下班時間,其實對標案的資料結構理解也是零零散散的,也不確定爬蟲的完成度多高,但是也陸續的可以列出每天的標案,跟做一些基本的逐月的得標統計,也算是某種程度的達成我初步的目標,就可以很容易得看出哪些機關分配到的預算最多,有哪些高額的標案在招標,對政府預算的使用有一些基本的輪廓了解

另外一個原本想達成的功能是,可以看出哪些公司特別喜歡投標特定的機關,各單位得標廠商統計,但是做完以後才發現,事實其實沒有那麼單純,特定廠商得標的頻率很高,不見得代表什麼弊案或內幕,純粹就是該廠商在該產業的占比很高,自然就會每次都是特定廠商得標

所以到此為止,第一年亂摸索了一段時間以後,專案告一段落開發就停擺了,因為也不知道要幹嘛了,而且後來電子採購網加裝了一個防火牆,讓原本開發好的機器人停止運作造成資料就無法持續更新了,我也沒有進一步改造的想法

直到大概兩年前ㄅ,榮尼王大大也跳進來做這個政府標案的爬蟲跟 API,才讓我的專案有了一線生機,透過 ronny 的資料導入,才讓我的專案有了新的定位,決心專心做好資訊呈現跟統計的功能

就開始陸續把機關、公司瀏覽的統計跟列表做得更完整,讓不同需求的使用者,都可以快速的了解特定公司跟機關招標跟得標的情形,進一步可以引發當初想像的討論,例如在這兩年 PTT 上只要討論到特定公司跟政黨之間有什麼特殊關係,開放標案的公司得標頁面就會被引用來討論,例如 Re: [新聞] 綠背景新創公司獲政府上億標案,就在分析跟討論公關公司跟民進黨之間的關係,雖然這篇文章討論量不高,但是被引用的當下真是相當感動,因為這個功能就發揮當初想取代電子採購網做不到的某個面向,我也因此得以偶爾了解社會議題的脈動XD

技術演進

來記錄一下著荒唐的技術 stack 跟演進史ㄅ,印象這些選擇都是在我還不會或不熟該技術的時候就選擇的

v1 後端用 nodejs + LiveScript,資料庫用 mongodb,前端用 angularjs + bootstrap,所以寫的當下極度痛苦,突然要用非同步的語言寫爬蟲,用覺得莫名其妙的 mongodb aggregation 整理資料跟統計結果,好幾天都寫到睡著,跟連簡單的語法都要查文件的 LiveScript 開發(最後悔的決定),前端倒是還好,沒有很複雜的流程 Angularjs 還算能應付。

這階段最大ㄉ收穫,學會寫出長的噁心的 mongodb aggregation query

v2 為了嘗試用 SSR 提升 SEO,改用 nextjs + 前端 react,來翻新所有前後端的頁面,搭配用 Nivo 製作統計圖表,至此為止這個專案應用層需要啟動三個 service 才得以運作XD

對 nivo 繪製出的圖覺得滿意

而基礎設施,從 AWS 開 VM 到搬家到 GCP 台灣機房,到 CentOS6 停止維護,換成 Ubuntu,來來去去機器重裝了可能超過五次,也把這環境搬了又搬調了又調,希望能把所有服務(mongodb + mysql + web server + application + php-fpm)作為一個遊樂場用最低的成本跑在單台(1 core 3GB RAM)機器上。

而最近為了滿足使用者很長需要搜尋的情境,在有機器效能的考量下,不想使用 elasticsearch 來解決,就透過 clickhouse 搭配 jieba,做了一個簡易版的搜尋引擎,算是效能不錯,找到的結果也還堪用,覺得過程很有啟發@Q@

回到做 side project 比較私心的部分,其實這個專案就是我的技術遊樂場,全都是挑選我超不熟悉的技術,完全沒有考慮合不合適,無腦就亂選一通,但是卻有七八成都變成我工作上的養分,最後都順利應用到工作中,並且這個專案開發的學習過程,讓我將這些技術導入到工作變得非常順利,無心的讓業務推展變得非常順利,這是當初的目的,但是做下去的時候完全不相信真的有可能發生價值,結果竟然真的發生惹…

Growth hacking

實際上就是作為一個專案的 Owner,你就會開始思考怎麼達成你的目標,使用者是怎麼使用你的專案的,剛開始沒什麼流量的時候,你完全只能用直覺亂做亂猜,但是開始有流量提升以後,你就可以透過 GA、Google Search Console,開始觀察使用者的行為,神奇的事情就會開始發生

你以為你的產品設計的情境,跟實際的使用者其實完全不ㄧ樣,我開始發現這個網站主要的流量來源( TA),不是我想像的想了解政府預算使用狀況的民眾,而是真的有在參與標案的公司,或者是想了解特定公司背景的人,而這些人都會透過搜尋引擎進入網站。

所以我就開始順著這個思路,開始逐漸解決一些 SEO 的問題,把這條路打通,果不其然,當我發現 Google 做 Client Side Render(CSR) 的索引效率極低以後,我就開始嘗試尋找Server Side Render(SSR) 的解決方案,後來決定導入 nextjs 重寫了大部分的前端頁面,讓後端也能進行 SSR 以後,流量竟然就開始爆發性的成長,Google index 頁面的效率大幅提升,讓我完整的觀察到有做 SSR 所帶來的差異跟過程,所以就開始逐一把每個該做的頁面 meta 跟 link 都建好,整個 Google index 的狀況也漸入佳境,最後也就觀察跟著使用者行為數據,做一些基本技術的調整,就讓流量成長了超過八倍

後來這個觀念,也讓我在工作中用到,把公司網站的這些技術細節調整好,搭配不同的情境,讓公司 Organic 的流量也提升了數十倍之多。

總結

如果你作為一個工程師,真的很推薦你找個想嘗試解決問題動手解決,最好是設定一個情境是也可以滿足其他人的需求,當你的專案有使用者,你思考的方式就不只是一個工程師,而是一個主理人,至此你的思考方式就會開始質變,發現很多新的世界

不見得專案最後會成功,但是你亂搞的所有過程,都有很高的機率會變成你成長的養份,這些機會在工作中不見得會有人幫你創造,所以為什麼不嘗試自己來ㄋ

最後希望今年能幫開放政府這個專案找到更廣的使用情境跟滿足更多使用者的需求,期待他可以從一個跳出率很高的網站,變成一個留存率很高的網站👻,又或者我能找到下一個戰場去探索新的世界,ㄏㄏ,ㄅㄞㄅㄞ 2020

4 comments on “開放政府標案專案流量爆發的一年記錄與啟發

  1. 開放政府標案是很棒的站台,有很珍貴的資訊,尤其是歷年的資料都有。
    要繼續維護喔,謝謝~

  2. 請問~為何A公司的案件會有表格化的呈現,然後還會有A公司得標業主的分佈比例, 但B公司則是只有條列式的得標紀錄呢?

    因為在查詢幾家公司的得標紀錄,發現有這樣的不同,故好奇詢問您,希望獲得解答,謝謝您~

    1. 理論上都會有得標的比例分佈耶,你可以提供你覺得沒有的範例我看看嗎

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *