javascript
SpringOne 2017:与Pivotal聊大会、Spring、Reactor、WebFlux及其他
在舊金山舉行的SpringOne平臺大會上,我們采訪了來自Pivotal的Pieter Humphrey和Simon Basle。
\\InfoQ:歡迎二位。你們能介紹一下你們是做什么的嗎?
\\Pieter:我負責Spring團隊產品和市場方面的工作,比如提供視頻在YouTube頻道上播放,等等。\\Simon:我是Reactor項目的軟件工程師。\\InfoQ:這次大會令人印象深刻。你們帶來了很多很好的內容,你們是怎么找到這些講師的?又是如何評選演講內容的?以及如何向潛在的與會者進行宣傳的?
\\Pieter:我們的挑戰在于如何找到合適的主題,包括開源項目、基礎設施開發相關的主題和應用開發相關的主題。在之前,我們還沒有經歷過這些。對于大多數人來說,他們習慣了參加開發者大會或者基礎設施大會。要把這兩種大會結合在一起,你需要面對一大幫人,他們有不同的興趣點,他們可能會說“我對這個不感興趣”,或者“為什么不能多講一些這方面的內容”,所以要讓每個人都滿意是很難的。不過我覺得事情在往好的方面發展,人們開始意識到基礎設施即代碼,這是他們需要關注的東西。所以,把這些東西放在一個大會上就沒有那么難了,比如用于應用開發的基礎設施、敏捷、案例學習。這就是我們面臨的最大的一個挑戰。\\InfoQ:這個世界正朝著DevOps的方向發展,我發現DevOps的發展有跡可循,我覺得這是不是要歸功于CloudFoundry提供的DevOps CI/CD能力?
\\Pieter:是的,不僅僅是CloudFoundry,Kubernetes也是以容器管理為中心。事實上,CI/CD是很重要的,我們在談論這些平臺時,你可能是以人們能夠很好地實施CI/CD為前提。我們的產品在很大程度上也依賴了好的CI/CD。這是一個巨大的挑戰。\\InfoQ:你能介紹一下CloudFoundry是如何助力DevOps的嗎?
\\Pieter:Concourse在前期取得了一定的成功。Jenkins服務器是有狀態的,所以無法將配置提交到代碼版本控制系統上。而Concourse是無狀態的,開發人員可以將配置管道提交到系統中,可以在任何時候重新創建worker節點。在開發人員看來,這是Concourse的優點之一。這種方式相當流行,管道即代碼,基礎設施即代碼,一切皆代碼。\\InfoQ:不過我們從演講中聽到,Pivotal CloudFoundry處理了很多DevOps管道細節,你能解釋一下PCF是怎么做到的嗎?
\\Pieter:我們看到Kubernetes在市場上很受歡迎,而在Kubernetes之前好幾年,我們就已經在CloudFoundry中嵌入了一個容器管理系統。不管怎么說,Pivotal的應用服務是對應用的高度抽象,PKS(我們正在開發的Kubernetes服務)就對容器進行了抽象。如果你是一名開發者,而且你只喜歡CloudFoundry好的一面,你的應用程序是無狀態的,并且只有服務層,那么PAS就能夠滿足你的需求。但如果你想加入數據庫,或者要使用ElasticSearch,或者想要控制TCP流量、自定義端口,那么Kubernetes會是更好的選擇。這是一個不斷演化的過程,我們并不想做出萬金油式的產品,我們知道一種方案只適用于某一部分場景。\\InfoQ:Reactor API似乎發展得很快,涵蓋了很多內容,而且越來越健壯和成熟。你們是怎么做到的?你們是如何添加新特性的?你們是怎么知道這些特性有沒有用的?你們是如何實現它們的?
\\Simon:實現是最困難的部分!因為我們的用戶越來越多,他們的應用場景也在不斷變化,他們會說“如果能夠提供這種操作就好了”。我們歡迎來自社區的反饋。但我們首先要看看通過組合已有的操作是否能夠滿足用戶的需求。這個庫真的很強大,我們有很多基本特性,通過組合它們可以實現復雜的異步操作管道。但有時候會有人說“這太難調試了,或許你們可以提供新的操作”,這些建議我們也會采納。當然,除此之外,也會有bug修復、特性改進和優化。 也有一些代碼提交者不是Pivotal的員工,他們也會向我們提供反饋。比如David Karnok,他負責RxJava的開發,同時也參與了Reactor項目。最初,他重度參與到項目中,設計了所有的下一代反應式組件。他現在仍然很活躍,大家可以在拉取請求上看到他給出的批注。 Reactor沒有像RxJava那樣的歷史包袱,這是Reactor好的一面,但兩者都有它們好的地方,所以David繼續活躍在Reactor項目上當然是一個好跡象。\\InfoQ:為什么我們需要兩個反應式項目?如果我是一名Spring開發者,我為什么要選擇RxJava?
\\Simon:它們其實是不一樣的,RxJava面向的是另一波人。事實上,RxJava仍然支持Java 6,這也是Android大量使用RxJava的主要原因,而Reactor的目標并不在Android上。如果你是做Android開發,那么可以使用RxJava,而如果是做后端的Spring開發,那么可以選擇Reactor。但它們都遵循相同的反應式流規范,選擇在于你自己。Spring內部使用了Reactor,但如果你要使用RxJava Route和Flowable,那也沒有問題。\\InfoQ:我經常覺得需要用到Flux操作,Java的可擴展性讓我在必要的時候可以自己實現這類功能。是否可以使用Reactor來創建組件生成新的Flux?
\\\Simon:我們的目標是提供一系列高效的操作來滿足大家的需求。如果你們看過Reactor的源代碼,你會發現一些新的東西。我們使用了一些高級的模式,用戶不需要自己去實現操作,因為那樣太麻煩了,我們提供了一組反應式流API,可以幫助用戶來實現操作。但如果這些仍然無法滿足你們的需求,那么就有點麻煩了。David寫了一些有關RxJava2的Wiki,解釋了他的實現模式,但那個很復雜,不到萬不得已最好不要那么做。如果你們實在找不到你們需要的操作,可以嘗試換一種方式來解決問題?;蛟S可以進行組合操作,或者使用命令式的方式來處理。如果非要一個新的操作不可,那么可以在我們的問題跟蹤系統里提交請求。
\\在今天的一個演講中,有人建議增加一個zip操作,在第一個流結束時不結束zip操作,有點類似左連接zip。目前還沒有這樣的操作,所以或許可以考慮增加一個。
\\\InfoQ:我想你應該知道,如果能夠通過現有的操作來組合出任意一種新的操作,那么你們的工作也就完成了。
\\Simon:是的,問題在于我們要知道需要提供哪些操作。要知道,命令式編程習慣會影響到我們尋找正確的解決方案。\\InfoQ:在演講中,你們在強調Spring Web MVC和Spring WebFlux的互操作性,我想這樣可以降低學習門檻,我可以開發一個Web MVC Controller,然后把它變成WebFlux Controller,只需要把返回類型改成Flux。這是出于技術決策還是市場決策的考慮?
\\Simon:我們嘗試為不熟悉反應式編程的開發者提供良好的開發者體驗。如果你有一個MVC Controller,返回的是Flux類型,框架會知道怎樣處理它。我們想盡可能逐步為開發者提供這種簡單的開發體驗。剛開始先邁出一小步,先從Web MVC開始,將返回類型改成Flux。如果這樣沒問題,就繼續,或者可以直接切換到WebFlux,進入新的世界。\\Pieter:是的,這更多是一種技術上的決策,我們嘗試著從用戶的角度看待問題,逐步幫助他們轉向新的思維。\\InfoQ:我覺得這是一個非常好的決策,學習反應式開發方式最難的部分就是如何克服陡峭的學習前,事實上,可以說它是一門新的編程語言。我們很感激你們所做的每一件。之前你們面向對象,后來又面向流,跨度非常大。
\\Pieter:是的。另一方面,我們也想說的是,并非所有的東西都是反應式的。我們可以做出自己的選擇,這個世界不是非黑即白。\\InfoQ:我發現大會有很多內容是關于流程的,比如敏捷,Vaughn Vernon還提到了領域驅動設計,還有整個系列是關于DevOps的。
\\Pieter:我們試著多做一些架構方法論方面的演講。我們是Pivotal實驗室,所以會有很多演講是關于敏捷、測試驅動開發、CI/CD。我希望能夠看到更多這樣的內容,談論設計、架構、新的工具,開發者們如饑食渴地想聽到這類演講,所以我們會關注這一塊。\\InfoQ:與會者的組成是怎樣的?
\\Pieter:他們大部分都來自美國,60%是開發者,40%來自其他領域,如Ops、IT管理、管理層,等等。我們也為他們準備了特定的內容,比如案例學習、技術故事等。\\InfoQ:SpringOne大會未來有什么計劃?2018年將在哪里召開?
\\Pieter:下一屆將會在華盛頓舉行,明年的9月24日至27日。我們想多去幾個地方,東海岸、西海岸、東海岸中部,時間根據具體情況而定,一般在每年的最后一個季度。今年我們賣出了3000張票,也賣出了贊助廣告位,地點在莫斯康會展中心。今年的規模是去年的兩倍。你們可以看到基礎設施即代碼正在發展,你也看到有些與會者不僅僅是來看應用開發相關的內容,也是來看基礎設施開發的相關內容。\\InfoQ:對我的開發工作來說,Spring已經變得與Java同樣重要,我無法想象不使用Spring將會是怎樣的一番景象。相信大部分Java開發者也有同感,Pivotal為開發社區做的事情是非常有意義,而對于Pivotal來說這又意味著什么呢?
\\Pieter:是的。我們要教會客戶如何實施敏捷,如果進行測試驅動開發,如何開發自己的平臺。我們走向商業化的動機主要來自那些正在尋找CloudFoundry和Bosh這樣平臺的用戶,在擺脫了應用程序開發的桎梏,他們還要做很多其他的事情,而這也這是我們的機會。我們的策略就是為開發者提供足夠的價值,把他們留在我們的編程范式里,在我們的平臺上可以很容易地運行他們的應用。對于小公司來說,他們或許不需要我們的產品,但大企業或許能從我們的平臺中看到價值。\\查看英文原文:SpringOne 2017 - Chat with Pivotal about the Conference, Spring, Reactor, WebFlux and Other Goodies
總結
以上是生活随笔為你收集整理的SpringOne 2017:与Pivotal聊大会、Spring、Reactor、WebFlux及其他的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring的Bean的初始化
- 下一篇: HTML5 移动页面自适应手机屏幕四类方