system • It’s really easy to break someone’s modules. • grep(1) is the only tool we can believe. • Deploy everything, revert everything. ڊେͳ୯ҰͷγεςϜͰਏ͔ͬͨɻ
in Scala class User < ActiveRecode::Base def self.find(...) $user_service.find(...) end end User.find(1) #=> #<UserServiceUser: ...> ڊେͳ3VCZPO3BJMTΞϓϦέʔγϣϯΛղͯͦ͠ΕͧΕͷϞδϡʔϧΛ4DBMBͰ ॻ͖ͨ͠ɻ
Array[String]) { // This call is not blocking. val future = func(args.head) // Do awesome things... // Wait until reply is defined println(Await.result(future)) } ྫ͑ɺ͜͏͍͏ײ͡ʹͳΔɻ
Bad assumption may increase tech-debt. Right assumption may reduce tech-debt. Reduces many bad assumptions. ·্͔ͣΒԼ·Ͱͱʹ͔͘ܨ͍Ͱಈ͔͢ɻఆΛͰߟ͑Δ͜ͱΛͰ͖Δ͚ͩݮΒ͢ɻ S S S S S Service Service Service Service Service
state. Users changes the internal state. React to the internal state changes. Applying animation, if needed. ෦ঢ়ଶͱมߋͷྲྀΕΛཧ͢Δɻ6*෦ঢ়ଶΛදݱ͢Δͷɻ S Action State Change UI Update Action U User
source code by deploy SHA-1. Browse entire source code that the system is using. ୯ҰιʔεϨϙδτϦͰਅ࣮ΛݟΔ commit 8270324cdf0d1e60a83dbefa1de29d89f6107587 commit f40648b9105f7478139694acd0821c15d3315dc2 commit fa0dc865887a02b49576bdc1de57f4ad802d4710 commit ebf31743cbe3008ec311d88aea42b987b0288cd3
in reasonable way. Naming is really really important. They never read tech-doc. ਖ਼͍ؔ͠ͷఆٛυΩϡϝϯτΑΓେɻ outputImageProviderFromBufferWithPixelFormat:pixelsW ide:pixelsHigh:baseAddress:bytesPerRow:releaseCallba ck:releaseContext:colorSpace:shouldColorMatch:
retry policy. Right load banaler ApertureLoadBalancer for lower QPS 214ͱϨΠςϯγΛཧɻϥΠϜΞτͱϦτϥΠͷௐɺϩʔυόϥϯαͷௐɻ S S S S S Service Service Service Service Service
downstream, it will cancel request and downstream will see this exception. $BODFMMFE3FRVFTU&YDFQUJPOʹҙɻ 6QTUSFBN͕ݫ͍͠λΠϜΞτΛ࣋ͬͯΔՄೳੑ͋Γɻ S S Service Service Timeout! Cancel Exception Timeout Exception
Build app from top to bottom to deal with product managers. 2. Manage internal state to deal with designers. 3. Read code to deal with engineers. αʔϏεΛθϩ͔Β࡞ͬͯେͩͬͨͭͷ͜ͱ