微服務這系列的文章暫停了三個月,不是沒興趣寫了,而是這幾個月都在 “還債” + “充電”,換了另一種形式在產出分享內容,同時 也花了些時間累積微服務的基礎建設研究及評估經驗。我想分享的都是實際的開發及導入經驗,如果沒實際做過是寫不出來的.. 因此才暫停 文章的寫作計畫一陣子。
這幾個月,工作的方向做了些轉變,不變的是我仍然在 .NET & 微服務架構開發與導入這領域努力。在這陣子,幾個單位 也不約而同的找我分享這些內容,因此就 microservices & windows containers 這領域,有這幾場現場的演講 & 互動:
DevOps Taipei, 這一夜讓我們來聊聊 Microservices
微服務的架構與觀念,以及導入時要留意的陷阱。導入微服務架構,最重要的是了解微服務能解決你現有的那些問題,最忌諱的就是一窩蜂的
改寫 + 擁抱新技術,這樣會得不償失。這個 session 則是我親身執行過的案例經驗分享。
Study4.TW, Visual Studio Everywhere 台北場
專注在 .NET 開發人員,為甚麼一定要關注 windows container 這項技術? 容器化的部署方式,已經是大家關注的焦點了。
也被認定是要落實 DevOps 的必要技術之一。不過身為 .NET 開發人員,總覺得 container 技術離 .NET 還很遙遠,因為
目前主流的容器化應用,都還是在 linux 平台上面的 docker. windows container 在去年年底推出,讓 .NET 開發人員也開始
有機會接觸容器化的部署技術了。這個 session 則是針對 .NET 開發人員的 windows container 介紹及 demo 。
TibaMe - Windows Container容器技術, 線上課程
這是我初次嘗試錄製一系列的線上課程,其中一段也進棚拍攝,算是很特別的體驗。這次的內容我挑了 windows container 入門,
想從容器化的技術基礎開始談起,說明為何容器技術對於微服務架構而言是很重要的推手。這課程內容包含 docker / microservice 的背景
介紹。課程要傳遞的概念與 VS Everywhere 的那場一樣,只是形式是以線上課程 (video) 為主。總時數約 6 hr, 因此在觀念,架構以及
實作 Labs 講得比較仔細,包含 Step by step 的操作影片教學。
TibaMe - 線上小聚主題分享-Windows Container 入門與實作, 線上讀書會 (Free)
第二次跟線上讀書會的紀相安合作,由 TibaMe 主辦的線上小聚分享活動。主題一樣是圍繞在 windows container,不過線上互動的形式,
重點就比較偏向實際的 labs 操作,與 QA 的進行。因為容器化的技術觀念並不難,一般都很容易了解。倒是 windows container 相對的
使用族群較少,很多操作上會踩到的地雷都需要一一克服,因此線上的互動可以實際 live 操作,所以我把較多的時間擺在這邊,也當作是
線上課程的延伸。希望藉著線上互動的方式,解決自己在看影片或是文章時,無法自己搞清楚的一些細節及觀念問題。
這四個場子的屬性都不大一樣,每場講的主題都圍繞在 .NET + Microservices + Windows Container, 只不過重點擺的地方都不同。 每場講完都覺得有點缺憾,好像都可以再補足些什麼… 我還是擅長用寫的啊,寫下來的東西總是比用講的精確。因此我打算用這篇文章, 把這四個場次的分享重點都串起來。沒機會參加前面幾場的朋友們,可以看這篇文章;有參加過的朋友也可以看看文章,補上了我沒機會在 現場提到的重點。
這篇文章我不打算帶到 code 或是太硬的技術,只打算帶到單純的觀點 & 經驗分享。不過別擔心,這陣子累積了一些實作的技巧,這篇 之後就會繼續看到一堆 code 的內容了 XD, 敬請期待!
接續 上一篇,如果你以為要在本機解 LeetCode 的題目,只是把 test cases 改成 unit test 就結束的話,那 我就不需要寫這幾篇文章了。如果你的目標只擺在 “解題”,那的確看第一篇就夠了。如果這是老闆或是客戶給你的 “需求”,那 你得訂更高的目標去執行才行,包含正確性,執行效率之外,還有可維護性等等考量。
這篇就會跳出大家常看到的 “狹義” 的 TDD 做法。TDD 絕對不只是寫單元測試而已。你總是會有想像不到的狀況發生,我面對這問題時採取 兩個做法來解決:
(2) 可能抽象一點,我的想法是先創造一個 “可敬的對手“,再讓這個對手不斷隨機的產生測試案例來測試自己,同時由這個對手來告訴我做的對不對…
這情境有沒有很熟悉? 2016 的大事: AlphaGo 打敗世界冠軍,背後一個關鍵成功因素, 就是 AlphaGo 沒日沒夜的跟自己對練,累積的經驗。我們面對的問題不像圍棋這麼複雜 (10170 種組合),實作起來很容易的, 唯一的障礙是你想不想做而已…。
其實在這十幾年的工作期間,不時地都有人問我 coding 能力怎樣才能更上一層樓? 我的答案都是一樣的老生常談,就是 “要打好基礎”。 不過這實在很抽象啊! 最近有空就會上 LeetCode.com 來練習一下 coding 技巧,這其實是個練功的好方法, 你可以把 LeetCode 當成訓練 coding 能力的健身房。
我就拿這當作主題,分享一下我的作法,還有為什麼這樣做的道理吧! 其實用到的技巧都不算很新穎,但是卻很實用。幾個能提升 code 品質的 基本技巧 (尤其是 TDD,以及測試相關的環節) 若能徹底落實,你寫出來的 code 品質就會大幅提升。有心鑽研 coding 技巧的朋友們可以參考看看!
最近外務比較多,文章耽擱了一陣子… 在繼續寫 microservices 系列文章前,我先補一篇最近跟 windows container network 奮鬥的紀錄吧,踩過的地雷跟掃雷的經驗,就分享給有同樣困擾的朋友們…
對,我的感受就像 Frodo 在山洞碰到蜘蛛一樣… 被 network 困住了… T_T
圖片來源: http://blog.mixflavor.com/2013/12/ticket.html
很多線上訂票,或是限時搶購等等的應用,都會碰到一個困擾:
我的電腦時鐘跟網站的時鐘有誤差,我怎樣才能在網站的 00:00 整按下訂購的按鈕??
如果你有這種困擾,哈哈哈,那你看這篇就對了 :D
如果你以為這是自動搶票的機器人,那你可以關掉瀏覽器了 XD 這篇文章不會教你任何後門,用非正當手段搶到票,只是個輔助工具,讓你能更精確掌握 server 的時鐘,可以 更準確的在那關鍵的一秒按下訂購的按鈕而已..