收穫人生第一個 5k Star 開源項目,經驗教訓分享給你們

前言

開發產品永遠都是既痛苦,又開心的事情。一方面由於不瞭解用戶真實需求、懼怕閉門造車、擔憂技術沒法實現而痛苦;另外一方面,卻會由於取得小小成就、得到用戶承認、不斷幫助用戶解決問題而開心,從而繼續堅持下去。Crawlab 就是這樣讓我既痛苦又開心的開源項目。它從去年 3 月份提交第一次 commit,到最近,已經在 Github 上積攢了 5k Star,成長爲了最受歡迎的開源爬蟲管理平臺。其中,Crawlab 屢次上榜到 Github Trending,不斷被全球的開發者所認識瞭解;同時,也被碼雲 Gitee、開源中國所收錄,讓更多國內開發者所熟知。社區也不斷完善,微信羣成員已接近 1.2k,天天都有人在上面各類諮詢問題和交流經驗。同時 Github 上也有不少熱心用戶在上面提出各類 Issue,幫助咱們優化產品。git

從最開始的 Flask + Celery 架構,到現在用 Golang 自研開發調度引擎,經歷了不少次大大小小的迭代。產品不斷成熟的同時,也在不斷髮展。相信不久將衍生出更多實用的功能,包括用戶們提出的各類很好的反饋建議。程序員

下圖是 Crawlab 的 Github 累計 Star 趨勢圖,能夠看出 Crawlab 已達到 5k Star 的過程當中經歷了兩次大的增加以及不斷的小規模增加。github

本文的目的主要是記錄一下本身和小夥伴們一塊兒努力的里程碑。去年 8 月份的時候(8 個月前),我寫了一篇文章, 《如何打造一個上千Star的Github項目》,探討了如何獲取 Github 的關注度,打造受人歡迎的產品。面試

項目簡介

Crawlab 是基於 Golang 的分佈式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。對爬蟲管理平臺不瞭解的同窗,能夠參考這篇文章,《如何快速搭建實用的爬蟲管理平臺》,裏面有對爬蟲管理平臺詳細的介紹。算法

查看演示 Demo編程

項目自 2019 年 4 月份上線以來受到爬蟲愛好者們和開發者們的好評,超過一半的使用者表示已經在用 Crawlab 做爲公司的爬蟲管理平臺。通過近數月的迭代,咱們陸續上線了 定時任務、數據分析、可配置爬蟲、SDK、消息通知、Scrapy 支持、Git 同步 等功能,將 Crawlab 打造得更加實用,更加全面,可以真正幫助用戶解決爬蟲管理困難的問題。後端

Crawlab 主要解決的是大量爬蟲管理困難的問題,例如須要監控上百個網站的參雜 scrapyselenium 的項目不容易作到同時管理,並且命令行管理的成本很是高,還容易出錯。Crawlab 支持任何語言和任何框架,配合任務調度、任務監控,很容易作到對成規模的爬蟲項目進行有效監控管理。微信

Crawlab 能夠很容易的將開發者的爬蟲集成進來。配合 CLI 工具,您能夠將任何爬蟲項目上傳到 Crawlab,並被同步到全部的節點上,造成分佈式架構。另外,Crawlab 自帶的 SDK 讓您能夠很是輕鬆的將抓取到數據可視化到 Crawlab 界面中。您能夠在界面上查看、下載抓取到的任務結果(以下圖)。架構

項目發展

Crawlab 到現在已經有 1 年了,在 Github 上的 Star 數量已過半萬,但這還不能說明任何問題。以前有網友指出,Github 上的 Star 數並不能說明問題,其實在淘寶上也能夠買到 Star... 另外一個有趣的事實是,不少在 Github 上成千上完 Star 數的做品,居然是 Markdown 項目。什麼是 Markdown 項目?也就是這個項目中沒有多少可執行的代碼文件,絕大多數是寫滿技術知識的 Markdown 文件,能夠是面試題,能夠是知識整理,也能夠是唐詩宋詞,等等。這些 Markdown 項目的盛行,反映了開發者們的知識焦慮。其實,有時候,專心使用一個項目,多閱讀理解一下源碼,甚至本身動手碼幾行代碼,也是能不斷提升本身的。我是一個野生程序員,不喜歡底層原理和理論推導,喜歡拿起鍵盤,埋頭開(fu)發(zhi)產(zhan)品(tie)。所以,我喜歡在產品中找到用戶的痛點,並用技術的方式加以解決。併發

下圖是 Crawlab 項目的發展歷程。

能夠看到,項目初期是用 Flask + Celery 來完成分佈式調度邏輯的,這實際上是無奈之舉。由於當時我最熟悉的語言是 Python,不會 Java、不會 Golang、不會 C++,所以選擇了當時上手最快的 Python 做爲主力編程語言,爲後來的更換框架埋下伏筆。

積攢了首批用戶以後,他們提出了各類各樣的意見和反饋。其中有用 Docker 來部署的建議,這成爲了後來部署 Crawlab 的首選。還有人提出可配置爬蟲的概念(當時不是這個名字,可配置爬蟲是我取的名字),我也用 Python 把它實現了出來。

但很是使人惱火的是,在 v0.2.x 版本的時候,定時任務常常出各類各樣的 Bug:有時會重複執行兩次或屢次;有時會不按時間執行;有時甚至壓根漏掉執行。更讓人擔心的是,當爬蟲的數量增長的時候,後端的壓力開始加大,每次返回結果須要耗費 1 秒甚至幾秒的時間。連我本身使用起來都很難受。因而,我開始從根本上思考,是否是 Python 這一套架構根本知足不了咱們的需求。

而恰巧我當時在掘金小冊上購買了關於 Golang 學習的課程,天然而然的想到應該用 Golang 來重構 Crawlab 的後端應用。所以,在邊學邊練的狀況下,我將 Crawlab 從 Python 版本重構爲了 Golang 版本,併發布爲了 v0.3 版本。重構後的 Crawlab 像是升了好幾級同樣,無論是從性能仍是穩定性上輕輕鬆鬆碾壓 Python 版本。Bug 再也不多了,響應也再也不延遲了,併發數也高了。更好的一點是,Golang 是靜態類型語言,能夠很是方便的規避一些由於類型產生的低級錯誤(成本是須要更多的代碼量)。我以爲用 Golang 重構 Crawlab 是這個項目中最成功的決定。

相比於 Golang 重構帶來的受歡迎效應,我以爲 v0.4.x 相對來講就沒那麼直接了。不少 v0.4.x 的迭代功能都是根據用戶的反饋來的,包括消息通知、權限管理、界面安裝依賴、Scrapy 支持等等。這些功能都是針對許多須要在企業中應用爬蟲管理平臺的用戶開發的。如今我不知道有多少企業在真正使用 Crawlab,但我相信隨着 Crawlab 的不斷完善,跟多的中小企業、甚至是大型企業能夠開箱即用的將 Crawlab 部署使用起來,進一步推廣給其餘有需求的用戶。

項目經驗

Crawlab 帶來的經驗教訓很是多。不少人都在問我,是什麼讓你堅持了這麼久來開發一個免費產品呢?又有不少人也在問我爲何不開發商業版呢?這些問題我以爲都是天然而然的,也是理所固然的。就我來看,要作好一個開源項目,光光是有這個 idea 是不行的,固然靠此賺錢的這種思想更會將項目帶往歧途。如下幾點,是我以爲打造一個受歡迎的開源項目的要素。

尋找痛點,並嘗試解決

不少人在工做生活自身有很多痛點。若是能發現這些痛點(注意,是 「痛」,而不是 「癢」),就極可能會發現一個解決它的機會。咱們能夠從身邊來嘗試尋找痛點。例如,Crawlab 就是在思考一個工做問題時誕生的。我所在的部門有上百個爬蟲,其中包括了 Selenium 爬蟲和其餘類型的爬蟲。咱們當時的爬蟲管理方式和實現方式都有很是多的侷限性,致使了擴展性不高、排查異常困難等問題。咱們有一個 Web UI 界面,可是僅僅侷限於業務,沒有專一於爬蟲自己。做者當時思考,是否是隻有咱們公司才遇到這個問題,仍是這個問題是一個廣泛問題,幾乎每一個須要爬蟲的公司都會遇到。

固然,僅僅是找到這個痛點還不夠,還須要驗證它。例如,我爲了驗證以前這個假設,花了半個月的時間作了一個最小可行性產品(MVP),Crawlab v0.1 版本,只有最基本的執行爬蟲腳本的功能。結果,初版發佈後陸陸續續收到正面反饋,也有很多改進建議。第一天的 Star 數就達到了 30,後面兩天漲到了100。這驗證了個人假設,爬蟲管理困難這個問題是廣泛存在的,你們都以爲 Crawlab 是個不錯的 idea,願意來嘗試。這纔開始讓做者更有動力不斷完善這個產品。因此,從身邊的問題出發是個很好的開始。

經過用戶調研完善產品

不少人開發產品都是閉門造車,企圖一廂情願的讓用戶愛上他們的產品。這對於技術人員來講是一個陷阱,咱們須要時刻警戒不要陷入敝帚自珍的境地沒法自拔。怎麼來了解用戶需求呢?一個頗有效的方法就是用戶調研。

《如何打造一個上千Star的Github項目》 中,我提到有兩種用戶調研的方式。一種是直接詢問。我常常在微信羣中詢問用戶關於 Crawlab 的使用狀況,是否有什麼能夠提高的,哪些地方使用比較困難,有什麼 Bug,之類的問題。不少時候,我都可以得到相應的反饋,有時並且是比較重要的反饋。另外一種方式是問卷調查。這種方式比較客觀,能夠定量的獲取用戶的使用情況,這對咱們瞭解用戶使用狀況是很是有幫助的。例如,我會按期利用問卷星設計調查問卷並投放到微信羣裏,一般能收到幾十上百個答案。這個樣本對調查來講已經足夠,並且問卷星能夠幫助分析各個問題的數據分佈狀況,可以一目瞭然看到使用和需求狀況。

不要低估產品推廣的力量

其實這一部分就是營銷和運營。當產品推出時,應該第一時間讓用戶知道並試用你的產品。由於這樣才能即時得到用戶反饋,纔有機會不斷完善你的產品。推廣的渠道多種多樣。第一,能夠是寫文章,每次發佈的時候,我會在掘金、SF、V2ex、開源中國等平臺上寫發佈文章,介紹新的功能,以及產品規劃等等,讓更多的用戶瞭解並試用 Crawlab。第二,須要作SEO,Crawlab 的文檔網站被推到了百度索引,讓百度可以不斷收錄 Crawlab 的頁面,並根據其內部的算法將品牌詞例如 「Crawlab」、「爬蟲管理平臺」 排到前幾位。第三,打造 Demo 平臺,這是用戶可以試用產品的最簡單的方式,用戶會第一眼看到你的產品,根據外觀、功能來決定是否要進一步安裝、使用,實踐證實,這是很是有效的手段。

總結

爬蟲管理平臺 Crawlab 到現在已經進入第二年。Crawlab 是一個後起之秀,相比於前輩 Gerapy、SpiderKeeper、ScrapydWeb 來講,更加年輕,也更加靈活和實用。所以纔會有這麼多人來嘗試使用 Crawlab。打造開源產品是個須要長期經營的事業,那種一晚上衝天的 「暴發戶」 不是人人都可以創造的。所以,須要保持耐心以及匠人精神。所謂匠人精神,不是將產品打造得多完美,而是將產品打造得更接地氣,更加使用友好,更能讓用戶滿意,更能解決用戶的問題,這纔算是匠人精神。因此,咱們不能閉門造車,一味的追求技術上的完美,而忽略了用戶真正的問題。Crawlab 在解決用戶的問題上,還有很長的道路須要走。但咱們不擔憂,由於咱們如今有強大的開發組,不斷成長的社區,和不斷給出反饋意見的用戶。相信第二年,Crawlab 會解決更多用戶的問題,讓爬蟲變得簡單,迎來第二個 5k Star。

但願本篇文章對您的工做和學習有所幫助,有任何疑問,請加做者微信 tikazyq1,或者在底部留言提問,做者將盡力回答。謝謝!

參考

相關文章
相關標籤/搜索