際際滷

際際滷Share a Scribd company logo
Reactive Programming vs
Reactive Systems
Key Takeaways
 2015 危, 麹 2016   覩碁れ 螻糾 豌伎 蠏  
Reactive  蟯 蟆 讀螳
 Reactive Programming 蟲 譴 Reactive System  讌
 焔/ 煙 豸°伎 覲企 Reactive Programming 螳覦蟆 企
朱Μ/一危 襴 蟯襴襯  蟲  譴 一煙 螻牛
 ろ 譴 覲旧リ骸 レ煙 豸°伎 Reactive System Cloud 蠍磯
轟 蠍壱 蠏覈 覿 ろ 蟲豢  Architects 覦 DevOps 一煙
螻牛
 Reactive System 蟲  企 Reactive Programming  蟆
襷れ
蟯  - "ろ碁Μ覦(streaming)", "蟆暑(lightweight)",
"れ螳(real-time)
豕蠏 Reactive螳 瑚鍵
 讌  ろ 襷り鍵  朱 り 豺
 蟲 蠍磯, 蟯 蟲 覦  伎 伎 覿 蟆曙 ろ ろ豌 覦 語
 螳 覦覯
 Reactive System
 谿企ゼ 襷 蟆 螳覲朱 覃伎   蟆郁骸襯 至鍵  蟷 
蟆, 讀 ろ!
  螳覲 觜るゼ  襦 牛螻 襦襯 語覃伎 譯朱 蟆曙   
ろ豌 ろ殊 蠍磯朱 
 襦 豺朱 /豢, 襦 蠏 譟一, 蠏 譴 朱  
 Reactive Style(Reactive Programming) 谿
  襴貅伎 燕  讌襷 企 殊  覿覿朱願 ろ 豌企ゼ
reactive蟆 襷れ 
Reactive - A Set of Design Principles
Reactive Manifesto
 旧(Responsiveness) -  ろ 旧
 企殊伎誤 / 螻螳  螳豺襯 詞 覈詩覃 るジ 螻褐朱 螳 蟆企朱  語
 旧煙 朱 蠏朱蓋朱 螻螳 螳豺襯 詞 覈詩螻 企 螳豺螳   谿願 
 旧(Responsiveness) 願鍵    螳讌
 レ(Resilience): ろ  覦
 一(Elasticity): 覿  覦
 企ゼ 燕蠍  ろ Message-Driven伎伎
Functional Reactive Programming (FRP)
 FRP 20  Conal Elliott  襷れ 蟆 *
 豕蠏殊 Elm, Bacon.js, Reactive Extensions (RxJava, Rx.NET, RxJS) 螳
蠍一 る蠍  覿蟆 
 FRP襯 讌り 譯殊ロ 覿覿 殊企襴 蟇一 Reactive
Programming襷 瑚螻 朱襦  伎 殊讌  蟆
* FRP  誤 伎 蠍一 る讌
Reactive Programming
 觜蠍 襦蠏碁覦  讌
 ろ 襴 牛  襴 危  襦 覲伎 螳煙 朱Μ
 譯朱 れ
 覓語襯  螳覲 螻襦 覿危 觜蠍/朱襦(non-blocking) 覦朱 螳螳 ろ螻
Workflow襯 燕襦 蟲燕  
 觜蠍 - 覃讌  企欧 豌襴  螳, 襷 覩碁 殊企  
覩誤螻 願 non-blocking execution る 蟆
   豢レ  
 Amdahls Law - 蟆曙 レ煙 螳  
 螻旧 襴るゼ 詞朱り 蟆曙 磯 ろ 谿 麹 (  襭 蟾讌
ろ 磯螳 るジ   蟆 覦讌  )
 讀     るジ
Reactive Programming
Reactive Programming
 企欧 譯朱
 貉碁, 襴覲企る 一危 襴 譴 
 襴″磯 襦蠏碁覦 殊企襴 API (Application Program Interface)
  螳讌 ろ殊 狩伎 螻牛
 Callback-based: 給 覿 貊覦煙 企欧 れ 豌覿覃 企欧瑚 一危 襴
豌伎語 糾骸  語
 Declarative: 蠍磯 譟壱 牛 朱朱 map, filter, fold 炎骸 螳  襴暑 郁屋襯

 譬譬 windowing, count, trigger 炎骸 螳 ろ碁 蠍磯 一一襯 螻牛
Reactive Programming
 Reactive Programming 豢 
 Future/Promise - 螳 觜蠍 覲 讌讌  蟆曙一 豢螳   single-value,
multi-read/single-write 覩語 貉企
 Stream - 覓危 一危 豌襴 襴朱 れ 豢豌 覈讌 螳 asynchronous, non-blocking,
back-pressure 危殊語 螳ロ蟆 
 Dataflow Variable - , 谿 覦 蠍壱  磯 覲蟆  朱 一危碁 
 覲(覃覈襴 )
 れ  ろ語  螳 覲螳 覈 譬 襯 牛 蠍
襦 螳 "れ ろ碁" 燕
Reactive Programming
 JVM 螻 Reactive Programming 蠍一 讌 瑚鍵 殊企襴
 Akka Streams, Ratpack, Reactor, RxJava 覦 Vert.x
 JVM Reactive Programming 殊企襴 螳  伎煙  譴 襴″磯 ろ碁
ろ(Reactive Streams specification, non-blocking back pressure  螳讌 asynchronous
stream 豌襴 譴 螻牛蠍  覦) 蟲
The Benefits
 覃 貊 覦 覃 CPU 伎 貉危 襴  讀
 Amdahl's law螻 レ(extension), G端nther USL(Universal Scalability Law) 磯 讌
讌 譴朱 焔レ レ
  蟲  螳 覈 譟一 煙 蟇壱朱 誤 螳覦
一煙 讀
 旧 襦蠏碁覦 れ 覈 asynchronous/non-blocking螻 IO襯 豌襴蠍 
讌願 讌 覲伎 螳ロ 蠏朱 螻牛蠍  螻蟲磯螻 
 Lock, Semaphore ...
 蟲  炎骸  襦一 蟲
 Asynchronous ろ 豕 る 螻朱    覓危 觜襯 狩蠍
 覦一(back-pressure)  蟆 譴
Event-Driven vs Message-Driven
 Reactive Programming - 殊 一危 襴 豌伎語 牛 螻一 譴 
 Reactive System - 企欧 譯朱(覿 ろ 旧 覦 譟一 牛
レ炎骸 一煙 譴 ) 覃讌 蠍磯
Event-Driven vs Message-Driven
Event-Driven Message-Driven
 Event
 譯殊伎    蟲
螳 企慨 
 るジ  蟯谿壱 れ
 讌朱 
 譯殊 讌 螳ロ 企欧 れ
豐 襷豢
 企欧 蠍磯 ろ 襴殊 Listener
Event-Source 譬 企欧瑚
覦  語
 Message
 轟 朱 覲企伎 一危
覈
 ろ螻 殊企 覈讌螳 
 覃讌 覿 ろ
旧企 ろ語 旧 襦
  
 螳螳 ′ 螳 覿襴蠍
覓語 ′ 覦  觜蠍一
 譯殊 讌 螳ロ  讌譴
 譯殊 讌 螳ロ  Message
谿 蠍磯るΜ螻 覃讌 牛螻
蠏碁讌 朱 企危
Event-Driven vs Message-Driven
 覿 蟆曙 Message襯 伎伎 Event-driven 襦蠏碁覦 覈語 
煙 讌  
 覃讌 企欧碁ゼ 豌覿伎 覲企朱 ろ語襯 牛 企欧 譴 ろ 郁屋
 覓誤螻   襦
 AWS Lambda, Spark Streaming, Flink, Kafka 覦 Akka Streams 螳 覿 ろ碁 豌襴

 Gearpump 覦 Kafka 覦 Kinesis 螳 Distributed Publish/Subscribe
Event-Driven vs Message-Driven
 Tradeoff
 レ - 襦蠏碁覦 覈語 豢 
  - 伎 蟯 る
 Message 覿 ろ り骸 曙 襦 螳
 覿 ろ り骸  - 覿覿 レ, レ 螳讌,  / 譴覲 /  覃讌,
企欧語 蟆螻, れ 煙 蟯襴 
 螻手碓 譯 覦覲給 蟆螻 螳( : EJB, RPC, CORBA 覦 XA) ろ語螳 譟伎讌 
蟆豌 螳ロ伎 觜   豢 れ 蠍磯  覃伎朱 襷覿
  覩 覦  螳レ煙 谿企 覲旧, レ, 企, 豺 覈炎骸 覿 ろ
覲旧′ 蟯襴 煙 伎  襦蠏碁 り 譴 レ 覩語宏
Reactive Systems/Architecture
  襦 蟆 螻 70 80  螳 - Erlang
 Jim Grey, Pat Helland, Tandem System, Joe Armstrong, Robert Virding  螳
 轟 覓  蠍一伎讌襷 讌 5 ~ 10  蠍一 一螻 蠍一 ろ 螳覦 
 "覈覯 襦"襯 螻伎 
 る 覃 貊, 企殊磯 貉危 覦 覓殊 瑚  覦 豺  讌
 覯 覦一磯 螳伎
 Reactive System  - Message-Passing
 蟲  螳 螳 蟆所螳 蟆 蟲 螳 螳 磯 覿襴  
 企 (Concurrency)螻 螻糾(space)  覦壱(distribution) 企(mobility)

  覿襴(De-coupling) 蟲  螳  蟆襴  蟲 企 レ(Resilience)
螻 一(Elasticity) 蠍一襯 燕
From Programs To Systems
 譬 螳 朱Μ(end-to-end logic)襯 蟲豢讌 
  郁屋炎骸 ろ 覲旧′煙 讀
 螳 蟲   蟲 襦 蟲焔覃 螳 蟲  豌願 ろ   
 語願 襦 る  るジ 語伎 譟危蟆 
 る 磯Μ螳 襷れ企企 ろ 螻  貉危, 襦 螳蟾 蟇磯 蟇一 覦朱
伎 貉危一 伎 
 企れ讌  蟲
  殊  蟆 蠍磯ロ   ろ 螳煙   譟危螻 蠍
覓語  蠍磯 譴   企れ讌螻 
  覦 觜讀り 譟危   ろ 螻牛る 旧     
蟆曙 覦襯 旧 螻牛讌 覿 譴讌 朱襦 牛伎 
 企ゼ 燕蠍  磯Μ ろ 覦(レ) 朱 覲 覿
覦(一) 讌  伎
レ(Resilience)
 ろ 
 ろ 螻 蠍磯レ 轟 - 蠍伎 豢螳    蟆  り伎 
 願屋(fault-tolerance) 一企
  焔 螳  レ襦覿  覲糾規   蟆 (螳 豺)
 覲旧 螻 螳 豺 ろ 蟲豢 伎
 語 蟲 襦  る襯 狩蠍  蟲  蟆襴 覦 る 旧螳 
 螳 蟆曙 豺覈 螻 る 襴り 覦
 企 覓碁Д  蟲豌危 覃讌襦 るジ 蟲  (螳  企)襦 °螻
ろ 蟲  碁  覓碁Д 蟯襴襦  蟆
 蠍一 Message-Driving 螳ロ
 覈螳 蟆企慨蟇磯 覓伎, 螳蟆 蟆壱螻 覿讌蠍 所 蟾蟆 譴豌 蠍一 語
豌伎語 覯企蟆 伎
  企企 語 豌伎語 ろ 蟯襴襯 覿襴 企殊伎誤瑚 覯 る襯 豌襴 豈
 蟆
一(Elasticity)
 覿 旧煙
 ろ 豌襴 朱 讀螳蟇磯 螳 一危 狩一 碁/襾語 豢螳  蟇一
螳 朱 襴り 觜襦朱 豢螳蟇磯 蟇磯 れ 蟲襯 豢譟煙
 企   讌覿   企殊磯 貉危 伎     
  , 觜 朱 襷り 蟆 豺
 豺 覈(Location Transparency)
 CPU 貊伎 一危 狩一 企ゴ 覈 蠏覈 狩 襦蠏碁覦 豢襯 
螳 覩碁 狩 覦朱 ろ ロ   蠍磯レ
 螻糾 企 覿襴(decoupling)  ろ 語ろ伎れ 谿語^ 覿襴螳 觜蠍 覃讌
 牛 螳ロ伎
一(Productivity)
 ろ 蟲譟郁 一  豕朱 レ 覩語 
 願 貉危碁ゼ 螳覦 蟆螻 讌 覲伎  覈 伎 
  磯 覲旧′(accidental complexity)  豕伎 
 襦 り讌  ろ 覈 譯手鍵  讌覲伎煙  伎螻 覓語襯 谿場願
蠍  螳螻 碁レ  讀螳蠍 覓語 譴
一(Productivity)
 覃 貊, 企殊磯 覦 覈覦 ろ豌 螳 一 ろ ろ豌
 レ 蟆襴 - 蟲 螳 蟆覯曙 螻牛 レ 覯襯  レ螳  蟆
襷  
 螳 螻豸 蟲譟 - 豌 覲糾規 蠍磯リ骸 蟷 れ 螻 覦 豌願襯 螻牛覩襦 譟一
觜 れ伎 螻 覿覿 殊 レ襯 襷 蟇壱
 覃讌  覦 豺 覈 - 豕譬  蟆曙 レ 譯殊 螻 蟲 襯
ろ殊語朱 螻 蟲豌危蟇磯 蟆暑襯 覲蟆渚  螻 企ゼ 牛 譴 觜, 
蠍願 覦 讌 覦   襴るゼ 譴  
 覲旧 - 一危   譴願 レ螳 覲 蟆 覦 レ 螳煙 覩語 レ 譴
 レ -  覲 磯 襴るゼ 渚  朱襦 覿螳   伎 觜
豕螻 覿螳 讀螳    レ煙  蠍願   豕
Reactive System Reactive Programming
 貉危  企 襦讌螻 一危 襴 覲蟆曙 蟯襴蠍  襯
蠍磯伎  貊襯 覈蟆 螻 焔リ骸  煙 豕 覦覯
螻牛
 覓語 1. レ 覿
 企欧 蠍磯 貊覦 轟 語 襦蠏碁 一 螻螳 蠍企蟆 郁屋 覲旧煙 至鍵
り 襷
 一危磯ゼ 覲 豌伎語 覈 讌ш 貊覦煙企 蟆壱(combinator)螳 給 讀 譯殊襦
讌  蠍 覓語
 碁ゼ 伎  豺螳 覿覈讌 螻 朱朱   蠍 覓語 螳覲
螻 覲糾規螳 企れ讌
 螳 碁 瑚 襴讌 螻 炎概  ろ襯 讌 豌襴蠍 覓語 企殊伎誤語蟆
る螳 
 一危 襴 豌伎語 螻 譴  る螳 覦覃 豌 豌伎語 れ 伎 
 螳 豺襭   覃讌 蠍磯  ろ螻朱 譟一
Reactive System Reactive Programming
 覓語 2. 一煙 覿
 螻糾 覿襴螳  螳 覿襴襷 螻牛 - 螳朱覿 覿襴 蟆 煙 螻牛讌襷
螻糾 覿襴 蟆  訖襷   启讌 覿一炎骸 企煙
螻牛
 豺 覈煙 覿
 企ゼ 願屋蠍  Message Bus, Data Grid, bespoke network protocols 螳 豢螳
螻豸旧
Reactive System Reactive Programming
 Reactive System  り 殊企襴 
 . Akka 襦碁 Erlang 
 る 螳 讌 蠍  覈 蠍瑚 譯殊螳 讌 螳ロ 蟲 襯 
 レ螳 覦  レ襯 覦 覃讌 蟷 貉危碁ゼ 螻蟆 覲  
 覈磯 襭 貉危 覈語 旧 譯殊 讌 螳レ煙企朱 螳 牛 
ID襯  讌 一危磯ゼ 螻牛 覩  覦覯 螻牛
 譯殊讌 螳レ炎骸 レ 蟯襴 螳 蠍磯レ  譬 襦蠏碁覦 れ 
蟆 伎  る 蟆 讀覈
 願 れ 螳麹 朱 螻 り螻 レ襯 襷朱り  螻殊
語 谿場 覈詩 蟆覲企る レ襯 螻 覦れ  襦  蟆
Fast Data Streaming 
  蟆壱 貊覦炎骸 螳 襴″磯 襦蠏碁覦 蟲譟磯ゼ  API襯
螻牛
  蟯 覲企 朱朱 讌朱   Event 蠍磯/Stream
蠍磯 豢襦 覲  
 豌企 豕譬  API 覿 Message-passing 覃 碁 螳 ろ碁 豌襴
螻 覿 ろ, 願規  企欧 襦蠏, 覲旧 襦貊(replication protocols)
讌 襴″磯 ろ 豺  企 覿覿 覲危 螳覦蟆  讌 
  譴 Reactive Programming 螻 ろ 譴
Reactive System  譬
Microservice 
 Cloud襯 讌 覦壱 弰朱   覿 觜 ろ
り 蟆 Reactive襯 覃 螻給 螳豺 襷 伎 詞 

 Reactive Programming -  Microservice 伎 觜 企 襦讌 覦 一危 襴 蟯襴襯
蟲  
 Reactive System - Microservice 伎 覃 覃讌 譯朱襦 螳ロ伎 レ炎骸
レ煙 牛 覦煙 螳讌  Microservice ろ 襷
Mobile Application螻 IoT 
 蠏覈 覲 襴
 郁屋 殊, レ 覦 螳  覦
 蟆, 讌螻, 覿 覦 語 伎  襷  一危磯ゼ 燕
  郁屋 覈 レ襯 豌襴 覦覯 覓語螳 覦
 レ襯 蟯襴 覦煙 觜
 レ 螻レ 豌襴蠍  , 覲願 る , 觜り ろ 襯 觜
旧 
 覈 蟆 蟯襴 覦煙 ろ  襷蟆 ロ螻  覲旧レ 伎 
 Back-pressure
 襷  殊螳 一危磯ゼ 燕螻 一危郁 谿 襯 豌襴   
 Back-pressure 蟲 螳
Traditional Web Application 
 觜 語 覿蠍壱螻 觜蠍一朱 襴るゼ 螳語る 旧 襷 
企殊伎誤語 襷襷  豌/  襦磯ゼ 蟲燕  
 Server-Sent Event/WebSocket
 蠏覈襦 覃 企れ 襷 郁屋 讌  覦覯 
 IO螳 谿讌  蟆曙 Reactive Programming 伎  蟲襯 覲企 蟲豌伎朱 螻牛
 Streams/Futures襯 覃 觜 谿 覦 觜蠍 覲 螻 企ゼ 企殊伎誤語 
 
 覃讌 覦  讌 譯殊 讌 蟆 譴 願鍵 覓語 螳 讌
 一危 ′語 螻豸旧 譴  
 觜 殊企螳  SQL  NoSQL 一危磯伎るゼ  蟆 襴
 覦朱 一危磯ゼ 螳煙螻 貎朱Μ
 覿 貂, 一危 手 覦 碁 螳 襴殊 螻牛
Reference
 Reactive Programming versus Reactive Systems: Landing on a set of simple
Reactive design principles in a sea of constant confusion and overloaded
expectations
 襴″磯 襦蠏碁覦  襴″磯 ろ
 襴″磯 碁

More Related Content

Reactive programming vs reactive systems

  • 2. Key Takeaways 2015 危, 麹 2016 覩碁れ 螻糾 豌伎 蠏 Reactive 蟯 蟆 讀螳 Reactive Programming 蟲 譴 Reactive System 讌 焔/ 煙 豸°伎 覲企 Reactive Programming 螳覦蟆 企 朱Μ/一危 襴 蟯襴襯 蟲 譴 一煙 螻牛 ろ 譴 覲旧リ骸 レ煙 豸°伎 Reactive System Cloud 蠍磯 轟 蠍壱 蠏覈 覿 ろ 蟲豢 Architects 覦 DevOps 一煙 螻牛 Reactive System 蟲 企 Reactive Programming 蟆 襷れ
  • 3. 蟯 - "ろ碁Μ覦(streaming)", "蟆暑(lightweight)", "れ螳(real-time) 豕蠏 Reactive螳 瑚鍵
  • 4. ろ 襷り鍵 朱 り 豺 蟲 蠍磯, 蟯 蟲 覦 伎 伎 覿 蟆曙 ろ ろ豌 覦 語 螳 覦覯 Reactive System 谿企ゼ 襷 蟆 螳覲朱 覃伎 蟆郁骸襯 至鍵 蟷 蟆, 讀 ろ! 螳覲 觜るゼ 襦 牛螻 襦襯 語覃伎 譯朱 蟆曙 ろ豌 ろ殊 蠍磯朱 襦 豺朱 /豢, 襦 蠏 譟一, 蠏 譴 朱 Reactive Style(Reactive Programming) 谿 襴貅伎 燕 讌襷 企 殊 覿覿朱願 ろ 豌企ゼ reactive蟆 襷れ Reactive - A Set of Design Principles
  • 5. Reactive Manifesto 旧(Responsiveness) - ろ 旧 企殊伎誤 / 螻螳 螳豺襯 詞 覈詩覃 るジ 螻褐朱 螳 蟆企朱 語 旧煙 朱 蠏朱蓋朱 螻螳 螳豺襯 詞 覈詩螻 企 螳豺螳 谿願 旧(Responsiveness) 願鍵 螳讌 レ(Resilience): ろ 覦 一(Elasticity): 覿 覦 企ゼ 燕蠍 ろ Message-Driven伎伎
  • 6. Functional Reactive Programming (FRP) FRP 20 Conal Elliott 襷れ 蟆 * 豕蠏殊 Elm, Bacon.js, Reactive Extensions (RxJava, Rx.NET, RxJS) 螳 蠍一 る蠍 覿蟆 FRP襯 讌り 譯殊ロ 覿覿 殊企襴 蟇一 Reactive Programming襷 瑚螻 朱襦 伎 殊讌 蟆 * FRP 誤 伎 蠍一 る讌
  • 7. Reactive Programming 觜蠍 襦蠏碁覦 讌 ろ 襴 牛 襴 危 襦 覲伎 螳煙 朱Μ 譯朱 れ 覓語襯 螳覲 螻襦 覿危 觜蠍/朱襦(non-blocking) 覦朱 螳螳 ろ螻 Workflow襯 燕襦 蟲燕 觜蠍 - 覃讌 企欧 豌襴 螳, 襷 覩碁 殊企 覩誤螻 願 non-blocking execution る 蟆 豢レ Amdahls Law - 蟆曙 レ煙 螳 螻旧 襴るゼ 詞朱り 蟆曙 磯 ろ 谿 麹 ( 襭 蟾讌 ろ 磯螳 るジ 蟆 覦讌 ) 讀 るジ
  • 9. Reactive Programming 企欧 譯朱 貉碁, 襴覲企る 一危 襴 譴 襴″磯 襦蠏碁覦 殊企襴 API (Application Program Interface) 螳讌 ろ殊 狩伎 螻牛 Callback-based: 給 覿 貊覦煙 企欧 れ 豌覿覃 企欧瑚 一危 襴 豌伎語 糾骸 語 Declarative: 蠍磯 譟壱 牛 朱朱 map, filter, fold 炎骸 螳 襴暑 郁屋襯 譬譬 windowing, count, trigger 炎骸 螳 ろ碁 蠍磯 一一襯 螻牛
  • 10. Reactive Programming Reactive Programming 豢 Future/Promise - 螳 觜蠍 覲 讌讌 蟆曙一 豢螳 single-value, multi-read/single-write 覩語 貉企 Stream - 覓危 一危 豌襴 襴朱 れ 豢豌 覈讌 螳 asynchronous, non-blocking, back-pressure 危殊語 螳ロ蟆 Dataflow Variable - , 谿 覦 蠍壱 磯 覲蟆 朱 一危碁 覲(覃覈襴 ) れ ろ語 螳 覲螳 覈 譬 襯 牛 蠍 襦 螳 "れ ろ碁" 燕
  • 11. Reactive Programming JVM 螻 Reactive Programming 蠍一 讌 瑚鍵 殊企襴 Akka Streams, Ratpack, Reactor, RxJava 覦 Vert.x JVM Reactive Programming 殊企襴 螳 伎煙 譴 襴″磯 ろ碁 ろ(Reactive Streams specification, non-blocking back pressure 螳讌 asynchronous stream 豌襴 譴 螻牛蠍 覦) 蟲
  • 12. The Benefits 覃 貊 覦 覃 CPU 伎 貉危 襴 讀 Amdahl's law螻 レ(extension), G端nther USL(Universal Scalability Law) 磯 讌 讌 譴朱 焔レ レ 蟲 螳 覈 譟一 煙 蟇壱朱 誤 螳覦 一煙 讀 旧 襦蠏碁覦 れ 覈 asynchronous/non-blocking螻 IO襯 豌襴蠍 讌願 讌 覲伎 螳ロ 蠏朱 螻牛蠍 螻蟲磯螻 Lock, Semaphore ... 蟲 炎骸 襦一 蟲 Asynchronous ろ 豕 る 螻朱 覓危 觜襯 狩蠍 覦一(back-pressure) 蟆 譴
  • 13. Event-Driven vs Message-Driven Reactive Programming - 殊 一危 襴 豌伎語 牛 螻一 譴 Reactive System - 企欧 譯朱(覿 ろ 旧 覦 譟一 牛 レ炎骸 一煙 譴 ) 覃讌 蠍磯
  • 14. Event-Driven vs Message-Driven Event-Driven Message-Driven Event 譯殊伎 蟲 螳 企慨 るジ 蟯谿壱 れ 讌朱 譯殊 讌 螳ロ 企欧 れ 豐 襷豢 企欧 蠍磯 ろ 襴殊 Listener Event-Source 譬 企欧瑚 覦 語 Message 轟 朱 覲企伎 一危 覈 ろ螻 殊企 覈讌螳 覃讌 覿 ろ 旧企 ろ語 旧 襦 螳螳 ′ 螳 覿襴蠍 覓語 ′ 覦 觜蠍一 譯殊 讌 螳ロ 讌譴 譯殊 讌 螳ロ Message 谿 蠍磯るΜ螻 覃讌 牛螻 蠏碁讌 朱 企危
  • 15. Event-Driven vs Message-Driven 覿 蟆曙 Message襯 伎伎 Event-driven 襦蠏碁覦 覈語 煙 讌 覃讌 企欧碁ゼ 豌覿伎 覲企朱 ろ語襯 牛 企欧 譴 ろ 郁屋 覓誤螻 襦 AWS Lambda, Spark Streaming, Flink, Kafka 覦 Akka Streams 螳 覿 ろ碁 豌襴 Gearpump 覦 Kafka 覦 Kinesis 螳 Distributed Publish/Subscribe
  • 16. Event-Driven vs Message-Driven Tradeoff レ - 襦蠏碁覦 覈語 豢 - 伎 蟯 る Message 覿 ろ り骸 曙 襦 螳 覿 ろ り骸 - 覿覿 レ, レ 螳讌, / 譴覲 / 覃讌, 企欧語 蟆螻, れ 煙 蟯襴 螻手碓 譯 覦覲給 蟆螻 螳( : EJB, RPC, CORBA 覦 XA) ろ語螳 譟伎讌 蟆豌 螳ロ伎 觜 豢 れ 蠍磯 覃伎朱 襷覿 覩 覦 螳レ煙 谿企 覲旧, レ, 企, 豺 覈炎骸 覿 ろ 覲旧′ 蟯襴 煙 伎 襦蠏碁 り 譴 レ 覩語宏
  • 17. Reactive Systems/Architecture 襦 蟆 螻 70 80 螳 - Erlang Jim Grey, Pat Helland, Tandem System, Joe Armstrong, Robert Virding 螳 轟 覓 蠍一伎讌襷 讌 5 ~ 10 蠍一 一螻 蠍一 ろ 螳覦 "覈覯 襦"襯 螻伎 る 覃 貊, 企殊磯 貉危 覦 覓殊 瑚 覦 豺 讌 覯 覦一磯 螳伎 Reactive System - Message-Passing 蟲 螳 螳 蟆所螳 蟆 蟲 螳 螳 磯 覿襴 企 (Concurrency)螻 螻糾(space) 覦壱(distribution) 企(mobility) 覿襴(De-coupling) 蟲 螳 蟆襴 蟲 企 レ(Resilience) 螻 一(Elasticity) 蠍一襯 燕
  • 18. From Programs To Systems 譬 螳 朱Μ(end-to-end logic)襯 蟲豢讌 郁屋炎骸 ろ 覲旧′煙 讀 螳 蟲 蟲 襦 蟲焔覃 螳 蟲 豌願 ろ 語願 襦 る るジ 語伎 譟危蟆 る 磯Μ螳 襷れ企企 ろ 螻 貉危, 襦 螳蟾 蟇磯 蟇一 覦朱 伎 貉危一 伎 企れ讌 蟲 殊 蟆 蠍磯ロ ろ 螳煙 譟危螻 蠍 覓語 蠍磯 譴 企れ讌螻 覦 觜讀り 譟危 ろ 螻牛る 旧 蟆曙 覦襯 旧 螻牛讌 覿 譴讌 朱襦 牛伎 企ゼ 燕蠍 磯Μ ろ 覦(レ) 朱 覲 覿 覦(一) 讌 伎
  • 19. レ(Resilience) ろ ろ 螻 蠍磯レ 轟 - 蠍伎 豢螳 蟆 り伎 願屋(fault-tolerance) 一企 焔 螳 レ襦覿 覲糾規 蟆 (螳 豺) 覲旧 螻 螳 豺 ろ 蟲豢 伎 語 蟲 襦 る襯 狩蠍 蟲 蟆襴 覦 る 旧螳 螳 蟆曙 豺覈 螻 る 襴り 覦 企 覓碁Д 蟲豌危 覃讌襦 るジ 蟲 (螳 企)襦 °螻 ろ 蟲 碁 覓碁Д 蟯襴襦 蟆 蠍一 Message-Driving 螳ロ 覈螳 蟆企慨蟇磯 覓伎, 螳蟆 蟆壱螻 覿讌蠍 所 蟾蟆 譴豌 蠍一 語 豌伎語 覯企蟆 伎 企企 語 豌伎語 ろ 蟯襴襯 覿襴 企殊伎誤瑚 覯 る襯 豌襴 豈 蟆
  • 20. 一(Elasticity) 覿 旧煙 ろ 豌襴 朱 讀螳蟇磯 螳 一危 狩一 碁/襾語 豢螳 蟇一 螳 朱 襴り 觜襦朱 豢螳蟇磯 蟇磯 れ 蟲襯 豢譟煙 企 讌覿 企殊磯 貉危 伎 , 觜 朱 襷り 蟆 豺 豺 覈(Location Transparency) CPU 貊伎 一危 狩一 企ゴ 覈 蠏覈 狩 襦蠏碁覦 豢襯 螳 覩碁 狩 覦朱 ろ ロ 蠍磯レ 螻糾 企 覿襴(decoupling) ろ 語ろ伎れ 谿語^ 覿襴螳 觜蠍 覃讌 牛 螳ロ伎
  • 21. 一(Productivity) ろ 蟲譟郁 一 豕朱 レ 覩語 願 貉危碁ゼ 螳覦 蟆螻 讌 覲伎 覈 伎 磯 覲旧′(accidental complexity) 豕伎 襦 り讌 ろ 覈 譯手鍵 讌覲伎煙 伎螻 覓語襯 谿場願 蠍 螳螻 碁レ 讀螳蠍 覓語 譴
  • 22. 一(Productivity) 覃 貊, 企殊磯 覦 覈覦 ろ豌 螳 一 ろ ろ豌 レ 蟆襴 - 蟲 螳 蟆覯曙 螻牛 レ 覯襯 レ螳 蟆 襷 螳 螻豸 蟲譟 - 豌 覲糾規 蠍磯リ骸 蟷 れ 螻 覦 豌願襯 螻牛覩襦 譟一 觜 れ伎 螻 覿覿 殊 レ襯 襷 蟇壱 覃讌 覦 豺 覈 - 豕譬 蟆曙 レ 譯殊 螻 蟲 襯 ろ殊語朱 螻 蟲豌危蟇磯 蟆暑襯 覲蟆渚 螻 企ゼ 牛 譴 觜, 蠍願 覦 讌 覦 襴るゼ 譴 覲旧 - 一危 譴願 レ螳 覲 蟆 覦 レ 螳煙 覩語 レ 譴 レ - 覲 磯 襴るゼ 渚 朱襦 覿螳 伎 觜 豕螻 覿螳 讀螳 レ煙 蠍願 豕
  • 23. Reactive System Reactive Programming 貉危 企 襦讌螻 一危 襴 覲蟆曙 蟯襴蠍 襯 蠍磯伎 貊襯 覈蟆 螻 焔リ骸 煙 豕 覦覯 螻牛 覓語 1. レ 覿 企欧 蠍磯 貊覦 轟 語 襦蠏碁 一 螻螳 蠍企蟆 郁屋 覲旧煙 至鍵 り 襷 一危磯ゼ 覲 豌伎語 覈 讌ш 貊覦煙企 蟆壱(combinator)螳 給 讀 譯殊襦 讌 蠍 覓語 碁ゼ 伎 豺螳 覿覈讌 螻 朱朱 蠍 覓語 螳覲 螻 覲糾規螳 企れ讌 螳 碁 瑚 襴讌 螻 炎概 ろ襯 讌 豌襴蠍 覓語 企殊伎誤語蟆 る螳 一危 襴 豌伎語 螻 譴 る螳 覦覃 豌 豌伎語 れ 伎 螳 豺襭 覃讌 蠍磯 ろ螻朱 譟一
  • 24. Reactive System Reactive Programming 覓語 2. 一煙 覿 螻糾 覿襴螳 螳 覿襴襷 螻牛 - 螳朱覿 覿襴 蟆 煙 螻牛讌襷 螻糾 覿襴 蟆 訖襷 启讌 覿一炎骸 企煙 螻牛 豺 覈煙 覿 企ゼ 願屋蠍 Message Bus, Data Grid, bespoke network protocols 螳 豢螳 螻豸旧
  • 25. Reactive System Reactive Programming Reactive System り 殊企襴 . Akka 襦碁 Erlang る 螳 讌 蠍 覈 蠍瑚 譯殊螳 讌 螳ロ 蟲 襯 レ螳 覦 レ襯 覦 覃讌 蟷 貉危碁ゼ 螻蟆 覲 覈磯 襭 貉危 覈語 旧 譯殊 讌 螳レ煙企朱 螳 牛 ID襯 讌 一危磯ゼ 螻牛 覩 覦覯 螻牛 譯殊讌 螳レ炎骸 レ 蟯襴 螳 蠍磯レ 譬 襦蠏碁覦 れ 蟆 伎 る 蟆 讀覈 願 れ 螳麹 朱 螻 り螻 レ襯 襷朱り 螻殊 語 谿場 覈詩 蟆覲企る レ襯 螻 覦れ 襦 蟆
  • 26. Fast Data Streaming 蟆壱 貊覦炎骸 螳 襴″磯 襦蠏碁覦 蟲譟磯ゼ API襯 螻牛 蟯 覲企 朱朱 讌朱 Event 蠍磯/Stream 蠍磯 豢襦 覲 豌企 豕譬 API 覿 Message-passing 覃 碁 螳 ろ碁 豌襴 螻 覿 ろ, 願規 企欧 襦蠏, 覲旧 襦貊(replication protocols) 讌 襴″磯 ろ 豺 企 覿覿 覲危 螳覦蟆 讌 譴 Reactive Programming 螻 ろ 譴 Reactive System 譬
  • 27. Microservice Cloud襯 讌 覦壱 弰朱 覿 觜 ろ り 蟆 Reactive襯 覃 螻給 螳豺 襷 伎 詞 Reactive Programming - Microservice 伎 觜 企 襦讌 覦 一危 襴 蟯襴襯 蟲 Reactive System - Microservice 伎 覃 覃讌 譯朱襦 螳ロ伎 レ炎骸 レ煙 牛 覦煙 螳讌 Microservice ろ 襷
  • 28. Mobile Application螻 IoT 蠏覈 覲 襴 郁屋 殊, レ 覦 螳 覦 蟆, 讌螻, 覿 覦 語 伎 襷 一危磯ゼ 燕 郁屋 覈 レ襯 豌襴 覦覯 覓語螳 覦 レ襯 蟯襴 覦煙 觜 レ 螻レ 豌襴蠍 , 覲願 る , 觜り ろ 襯 觜 旧 覈 蟆 蟯襴 覦煙 ろ 襷蟆 ロ螻 覲旧レ 伎 Back-pressure 襷 殊螳 一危磯ゼ 燕螻 一危郁 谿 襯 豌襴 Back-pressure 蟲 螳
  • 29. Traditional Web Application 觜 語 覿蠍壱螻 觜蠍一朱 襴るゼ 螳語る 旧 襷 企殊伎誤語 襷襷 豌/ 襦磯ゼ 蟲燕 Server-Sent Event/WebSocket 蠏覈襦 覃 企れ 襷 郁屋 讌 覦覯 IO螳 谿讌 蟆曙 Reactive Programming 伎 蟲襯 覲企 蟲豌伎朱 螻牛 Streams/Futures襯 覃 觜 谿 覦 觜蠍 覲 螻 企ゼ 企殊伎誤語 覃讌 覦 讌 譯殊 讌 蟆 譴 願鍵 覓語 螳 讌 一危 ′語 螻豸旧 譴 觜 殊企螳 SQL NoSQL 一危磯伎るゼ 蟆 襴 覦朱 一危磯ゼ 螳煙螻 貎朱Μ 覿 貂, 一危 手 覦 碁 螳 襴殊 螻牛
  • 30. Reference Reactive Programming versus Reactive Systems: Landing on a set of simple Reactive design principles in a sea of constant confusion and overloaded expectations 襴″磯 襦蠏碁覦 襴″磯 ろ 襴″磯 碁