原來可以這麼寫(12): 我❤️Golang

最近處理兩個大功能,一個是要建立websocket server 讓交易流程去串(開發官網購買)(但說真的交易流程用websocket 真的有點怪怪的?就我的認知 websocket 的部分應該是在一個很即時的情境,但用在這種只是為了獲得通知的目的確實有點怪怪的… 但說真的我也沒有辦法提出更好更優的方案,作為一位只能聽命行事的超基層也只能照做QAQ)

另外是要做有關於批次匯入的功能…. 呵呵以前就有做過類似Excel 匯入的功能,我深知道那是一個巨大無比的坑,坑是在一開始的規劃,你既然開放前面使用者可以用Excel 檔匯入,那你就得面對使用者的Excel檔可能有千起百怪的樣式、無法驗證或無法預期的輸入…套句我之前有位主管說的話:你要防使用者想防賊一樣啊!

總之,這個功能其實去年有做一下下,但後來被靠北中止了….現在又復活,當然給他們凹一下,仔細把流程討論清楚先,然後再做…. (其實正確的流程及我想表達的意思是:PM/SA 你們給我生出流程圖和規格書啊!

然而,在這兩大功能夾擊下,我算是很平安的度過及學習、開發,並沒有像之前趣聽小說匯入被搞得人仰馬翻、混亂不已….在這個過程中,修修幾個bug、調整幾段程式碼…. 其中一項是調整拆帳報表的功能

原本,我是用Laravel 匯出拆帳報表,並用上 Laravel-excel 這個套件,殊不知測試環境都弄好好的,但到了正式就完蛋(匯不出來)

因此,我發現當前端送 request 直接製作檔案的這個版本實在有點….糟糕。

後來規劃出了第二套版本:就是當前端送出request 後丟到queue後再慢慢做… 也是一樣用到剛剛說的那個套件,那個套件可以很輕易的用queue的方式製作excel 檔。

測試環境一樣好好的,但正式環境還是爆掉…. 後來發現只要調大我們機器的CPU 就可以匯出了….,不然就是我真的功力不精無法好好使用這個套件囧!

但是!每次調大機器CPU 實在不是什麼好方法…. 而同事告訴我:不應該堅持用laravel/php處理這種CPU bound的事項…. 於是….我採用的AWS Lambda 方案,而Lambda 用Go 開發….

結果是:原本用Laravel Queue要跑兩三十分鐘的報表居然奇蹟的在5~15秒內搞定

然後再寫的過程當中也越來越喜歡Go這門語言。不過我知道我要學習的還太多,這在我使用Go上面只是剛開始而已。

謝謝後端團隊的大家讓我可以任性的使用看看這門語言,並且在我有問題的時候願意幫助我^^

於是乎,這個月的技術分享會就分享我使用Golang的心得了……

額外加碼:

最近docker 使用上常常有那個build 失敗的image 和container bla bla 的,最近看到一個很好用的清除指令紀錄一下:docker system prune

小君曰:想要轉職成Golang 工程師。。。