Slide 1

Slide 1 text

Reactive Microservices Architecture @tan_go238

Slide 2

Slide 2 text

ࠓ೔࿩͢͜ͱ

Slide 3

Slide 3 text

ͬ͘͘͢͟͝Γ࿩͠·͢

Slide 4

Slide 4 text

ϚΠΫϩαʔϏεͷίϯηϓτ • খͯ͘͞ • ಠཱͨ͠αʔϏεͰ • ͦΕͧΕ͕ࣗ෼ͷυϝΠϯͷσʔλΛ࣋ͪ • ಠཱͯ͠ • ෼཭͞Ε͍ͯͯ • εέʔϥϒϧ • ͦͯ͠ରো֐ੑ͕͋Δ

Slide 5

Slide 5 text

Monolith https://goo.gl/keQyrL

Slide 6

Slide 6 text

SOA Microservices Reactive Microservices ↓ ↓

Slide 7

Slide 7 text

Reactive Microserviceͱ͸ʁ

Slide 8

Slide 8 text

Reactive Manifest • ଈԠੑ • ରো֐ੑ • ஄ྗੑ • ϝοηʔδۦಈ http://www.reactivemanifesto.org/ja

Slide 9

Slide 9 text

Reactive Microservice (Failure isolation) Bulkheading (SPOFΛͭ͘Βͳ͍)

Slide 10

Slide 10 text

Reactive Microservice (Own your state, Exclusively)

Slide 11

Slide 11 text

Reactive Microservice (Event Sourcing, CQRS)

Slide 12

Slide 12 text

Reactive Microservice (Asynchronous Message-Passing)

Slide 13

Slide 13 text

Reactive Microserviceͱ͸ʁ • ಠཱ͍ͯ͠Δ (DockerΈ͍ͨͳԾ૝Խͱ૊Έ߹Θͤͯߋʹޮ཰Խ) • ରো֐ੑ͕͋Δ • ඇಉظϝοηʔδϯά ଎͍͠ɺམͪͯ΋ଞ΁ͷӨڹ͕গͳ͘ɺ εέʔϥϒϧʹͰ͖ͯΔͷͰ͙͢ճ෮͢Δ

Slide 14

Slide 14 text

࣮ࡍͲ͏΍ͬͯ࡞Δͷʁ

Slide 15

Slide 15 text

Microservices Come in Systems (Service Discovery) • ͓ޓ͍ͷαʔϏεͷΞυϨεΛ஌͍ͬͯΔඞཁ͕͋Δ • ͦͷ໾໨Λݞ୅ΘΓ͢Δͷ͕ Service Discovery • CAPఆཧͷ CP-Based ͱ AP-Based ͕͋Δ • CP-Based … Zookeeper, etcd • AP-Based … Lightbend Reactive Platform, eureka, Serf

Slide 16

Slide 16 text

Microservices Come in Systems (API Gateway) ΫϥΠΞϯτ͔ΒͷϦΫΤετΛड͚औͬͯɺਖ਼͍͠αʔϏε΁౉͢ ྫ) Netflix API, Amazon API Gateway

Slide 17

Slide 17 text

Microservices Come in Systems (Managing Communication Patterns) • ίϛϡχέʔγϣϯύλʔϯ΋ෳࡶʹͳͬͯ͘Δ • Publish-Subscribe ύλʔϯΛ࢖͏ • Subscriber͸ҎԼͷϥΠϒϥϦ͔ΒσʔλΛऔಘ͢Δ • Kafka, Amazon Kinesis, Cassandra, Riak • ·ͩෆे෼ • σʔλετϦʔϜ … Akka Stream, Apache Camel

Slide 18

Slide 18 text

Microservices Come in Systems (Back-pressure) • Publish-Subscribe ͷΑ͏ͳύλʔϯͰ͸ Pub ͷॲཧ͕଎ ͗ͯ͢ Sub ͷॲཧ͕௥͍͔ͭͳ͍͜ͱ͕͋Δ • Subscriber͕ࣗ෼͕ॲཧͰ͖ΔྔΛPublisherʹϦΫΤε τΛૹΔ͜ͱͰແବͳ͘Subscriber͕ॲཧͰ͖ΔྔΛॲ ཧ͢Δ࢓૊Έ • Akka Stream, RxJava, Spark Streaming, Cassandra drivers

Slide 19

Slide 19 text

Microservices Come in Systems (Circuit Breaker pattern) • ϦϞʔτΞΫηεͷ੒ޭʗࣦഊΛΧ΢ϯτ͠ɺ Τϥʔ ཰ (failure rate) ͕ᮢ஋Λ௒͑ͨͱ͖ʹࣗಈతʹΞΫη εΛःஅ͢Δ࢓૊Έ • Netflix Hystrix, Akka (akka.pattern.CircuitBreaker)

Slide 20

Slide 20 text

Microservices Come in Systems (Event-Driven Architecture) • σʔλͷมߋ͸͙͢ଞͷαʔϏε͔Β΋ར༻Ͱ͖ͳ͍ͱ͍͚ͳ͍ • Event Sourcing, CQRS • Command … ෭࡞༻͕͋Δૢ࡞ • Event … Կ͔͕ىͬͨ͜ͱ͍͏ϩά (ࣄ࣮) • Event Logging and Event Streaming Product • Riak, RedBull Eventuate

Slide 21

Slide 21 text

Microservices Come in Systems (SAGA pattern) • ෼ࢄγεςϜͰͷτϥϯβΫγϣϯ (Process Manager)

Slide 22

Slide 22 text

Summery • Reactive Microservice ʹ͢Δʹ͸ • ҎԼͷಛੑʹݻࣥ͢Δ • ෼཭͢Δ͜ͱ • ̍αʔϏεʹ͖ͭ̍ͭͷ੹೚ͷΈ • ഉଞతͳঢ়ଶʹ͢Δ • ඇಉظϝοηʔδύογϯά • ػಈੑ͕͋Δ (Mobility) • ߋʹҎԼͷΑ͏ͳಛੑΛซͤ࣋ͭ • αʔϏεಉ࢜ڠௐͯ͠ಈ࡞͢Δ • ͦͷαʔϏε͚ͩͰ׬݁͢Δ

Slide 23

Slide 23 text

͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ