Slide 1

Slide 1 text

DON’T BUILD FRAMEWORK, BUILD PLATFORM - Empower high flexibility and scalability in the enterprise with good design principles - 2018/05/11 M3 Tech Talk #92 @yoskhdia

Slide 2

Slide 2 text

Hello! ScalaMatsuri2018 CfP(落選) 2

Slide 3

Slide 3 text

Using Akka? Akka is awesome & flexible. However… Systems in PRODUCTION requires: ▸ Logging ▸ Monitoring ▸ Security ▸ etc... 3

Slide 4

Slide 4 text

Flexibility brings us many choices but often means making chaos “High flexibility” has a trade-off. We DON’T want each team to implement their non-functional requirements. We want to focus on the business domain. 4

Slide 5

Slide 5 text

Don’t hide open knowledge Many people often choose to build their own framework for covering their requirements. However, it forces developers to learn the framework’s SPECIAL SHINY AWESOME PRIVATE API. This is a risk. 5 Any Good Toolkit (Akka, Spring, etc...) Your own Framework

Slide 6

Slide 6 text

One approach 6 Any Good Toolkit (Akka, Spring, etc...) Your own Framework Any Good Toolkit (Akka, Spring, etc...) Your Infrastructure Thin Platform ▸ Don’t build framework ▸ Build platform

Slide 7

Slide 7 text

I want to introduce squbs squbs is: ▸ Developed by PayPal ▸ NOT framework ▸ Suite of components enabling standardization and operationalization of Akka Overview Introduction - squbs 7

Slide 8

Slide 8 text

“While squbs provides a server infrastructure, it does not define a framework.” - squbs Top page 8

Slide 9

Slide 9 text

5 Design principles of squbs ▸ Separation of Concerns ▸ Loose Coupling ▸ DRY ▸ Minimize Duplication of Effort ▸ Thin Platform Principles of squbs Design - squbs 9

Slide 10

Slide 10 text

Separation of Concerns “Allowing infrastructure to plug in infrastructure concerns without disturbing the application in any way.” ▸ Separate non-functional requirements from functional requirements. ▸ Make those “Concerns” pluggable components. 10

Slide 11

Slide 11 text

Loose Coupling 11 “Tangling of large systems comes from tight coupling of the type system.” ▸ Separate an application into (service) modules called “cube”. ▸ They communicate with each other only via messages, this brings isolation of the service.

Slide 12

Slide 12 text

DRY 12 “The drop-in design of squbs allows for at-most-once coupling.” ▸ Drop-in Modular System provides auto detection of each service modules. ▸ It is easy to add/remove them to/from the system.

Slide 13

Slide 13 text

Minimize Duplication of Effort 13 “Most of the low-level components of the application that deal with application lifecycle and monitoring are common across applications.” ▸ By dealing with lifecycle management will hide and abstract away such duplications, to be standardization & operationalization.

Slide 14

Slide 14 text

Thin Platform 14 “We realize the emergence of the thin platform and try to keep squbs as lightweight and non-imposing as possible.” ▸ Reduce dependencies and Do not impose further requirements. ▸ Developers can leverage general knowledge.

Slide 15

Slide 15 text

Conclusion 15 Any Good Toolkit (Akka, Spring, etc...) Your own Framework Any Good Toolkit (Akka, Spring, etc...) Your Infrastructure Thin Platform ▸ Don’t build framework ▸ Build platform

Slide 16

Slide 16 text

THANKS! Presented by Yoshitaka Okuda Special Thanks @jooohn1234 ! You can find me at @yoskhdia 16

Slide 17

Slide 17 text

Appendix ▸ Back-Pressure in Action: Handling High-Burst Workloads with Akka Streams & Kafka @PayPal ▸ squbs探訪 その1 ▸ squbs探訪 その2(簡単なWebアプリケーションをつ くってみる) 17

Slide 18

Slide 18 text

CREDITS Special thanks to all the people who made and released these awesome resources for free: ▸ Presentation template by SlidesCarnival ▸ Photographs by Unsplash 18