Microservices
Insights with
Microservices
Lior Bar-On,
Purim 2016
Who is this Guy? (Lior Bar-On)
SAP: microservices-inspired architecture, to ease code maintenance
Gett: 24 microservices, 18 created in the last year
Developer, Architect, Chief-Architect
‫תוכנה‬ ‫ארכיטקטורת‬ ‫בלוג‬
Career
Microservices
Blogger
About
Company
About
R&D
TONS 76
RUBY-ON-RAILS
GOLANG
NATIVE IOS/ANDROID
REACTJS+FLUX+REDUX
200+
OF POSITIVE ENERGY EMPLOYEES
AWS PRODUCTION
SERVERS
ON PEAK TIME
In this talk...
Microservices is the new Black
… or the new DEFAULT Architecture Style
We do Microservices too - like everyone else!
● Microservices with Docker
Microservices are Clearly a Hype
● VB.NET for Microservices in 21 days
● Testing Microservices
● Microservices with node.js / Meteor /
Nginx / Go / Closure / ...
● Event-Driven Microservices
● Security for Microservices
‫הנושאים‬ ‫מהם‬ ‫בדקתי‬ ,‫ההרצאה‬ ‫לצורך‬
‫של‬ ‫בהקשר‬ ‫באינטרנט‬ ‫ביותר‬ ‫המדוברים‬
...‫מיקרו-שירותים‬
:‫שלי‬ ‫המסקנה‬ ??MSA ‫בגלל‬ ‫מחדש‬ ‫התוכנה‬ ‫הנדסת‬ ‫מקצוע‬ ‫כל‬ ‫את‬ ‫ללמוד‬ ‫צריך‬ ‫האם‬ ?‫המסקנה‬ ‫מה‬
We do Microservices too - like everyone else!
● Microservices with Docker
● Testing Microservices
● Microservices with node.js / Meteor / Nginx /
Go / Closure / ...
● Event-Driven Microservices
● Security for Microservices
● VB.NET for Microservices in 21 days
‫בין‬ ‫רב‬ ‫שוני‬ ‫היה‬ ‫לא‬ .MSA ‫ל‬ ‫אותן‬ ‫קשרו‬ ‫ורק‬ - ‫השונות‬ ‫הטכנולוגיות‬ ‫על‬ ‫לדבר‬ ‫רצו‬ ‫כולם‬ ,‫בעצם‬
‫הוסיפו‬ ‫רק‬ - ‫זהים‬ ‫הרעיונות‬ .Testing Microservices ‫על‬ ‫לכתבות‬ Testing ‫על‬ ‫כתובת‬
.‫קישור‬ ‫נקודות‬ ‫במאמרים‬
.‫בצחוק‬ ‫זה‬ - ‫האחרונה‬ ‫הדוגמה‬
Pattern: Assume Microservices
Microservices is what everyone do.
If you speak to everyone - connect yourself to
microservices. "with Microservices" ‫תכלול‬ ‫מעכשיו‬ ‫שלכם‬ ‫מצגת‬ ‫שכל‬ ‫ממליץ‬ ‫אני‬
!‫אישית‬ ‫דוגמה‬ ‫נותן‬ ‫ואני‬ -
Seriously:
Beware of “Microservices Envy”
Microservices are not “one architecture to rule
them all”
Microservices
Design Patterns
Some Commonly used Patterns
● Circuit Breakers, Bulkheads
● Single Sign-On (SSO) (e.g. OKTA, PingFederate)
● Distributed Tracing (e.g. Dapper, ZipKin)
● Centralized Configuration (e.g. Consul, Zookeeper, Spring Cloud)
● Service Discovery (e.g. Consul, Zookeeper, Euroka)
● Client (service) Side load balancing (e.g. Ribbon)
● Micro-Proxy / API Gateway (e.g. Zuul, ….)
● CQRS / Stream Processing
● Containers (e.g. Docker, Unikernel, then: Mesos, Kubernetes, Swarm,...)
Patterns ‫של‬ ‫נכבדת‬ ‫כמות‬ ‫כבר‬ ‫יש‬
.MSA‫ל‬ ‫המקושרים‬
We do Microservices too - like everyone else!
Remember:
No Software Engineer was ever got fired for
implementing ALL Microservices-related
Patterns to the system.
Though, they may get fired for not delivering
Business Value within a reasonable time.
Seriously:
Don’t implement Patterns eagerly.
Match Pattern per pain-point.
MSA Patterns & Gett
● Circuit Breakers
● Custom*
Implemented within 9 months
● Distributed Tracing
● Centralized Configuration
Implemented within 15 months
● Single Sign-On (SSO)
● API Gateway - onto the Monolith
Implement within 20 months (soon)
● API Gateway
● Containers* - in pilot
Desired
● Service Discovery
○ we use simple DNS.
● Client (service) Side load
balancing
● Bulkheads
● CQRS / Stream Processing
Not on our plans
blog post
.‫לכך‬ ‫ממשי‬ ‫צורך‬ ‫קיים‬ ‫באמת‬ ‫עכשיו‬ ‫רק‬ - ‫אחרי‬ ‫וחצי‬ ‫שנה‬ .API GW ‫במימוש‬ ‫להתחיל‬ ‫מייד‬ ‫לנו‬ ‫יעצו‬ ,‫בגט‬ ‫כשהתחלנו‬
.‫ומתי‬ - ‫מימשנו‬ ‫אנחנו‬ Patterns ‫אלו‬ ‫הנה‬
.‫פרספקטיבה‬ ‫קצת‬ ‫לתת‬
Not all common problems mapped to Patterns
Network Error rate of TCP 3-way-handshakes: ~ 1:20,000
Charging operations failed due to network on Legacy: none
Charging operations failed due to network on MSA: ~ 1:240
.Patterns ‫עם‬ ‫נפתרות‬ ‫הבעיות‬ ‫כל‬ ‫לא‬
‫חשיפה‬ ‫בגלל‬ ‫בה‬ ‫שנתקלנו‬ ‫בעיה‬ ‫הנה‬
‫שקודם‬ ‫תקשורת‬ .‫הרשת‬ ‫של‬ ‫לרגישות‬
‫כעת‬ - ‫המונוליט‬ ‫של‬ ‫בזיכרון‬ ‫הייתה‬ ‫לכן‬
‫עם‬ ‫ומתמודדת‬ ‫הרשת‬ ‫דרך‬ ‫עוברת‬
...‫שלה‬ ‫הרעשים‬
Seriously:
Understanding what you are doing >> using
the BEST(!!1) patterns.
… are not really “microservices patterns”
● Circuit Breakers, Bulkheads
● Centralized Configuration
● API Gateway (Gateway / Proxy / Facade)
● CQRS / Steam Processing
Much Older than Microservices
Somewhat Related to SOA
● Single Sign-On (SSO)
● Distributed Tracing
● Service Discovery
Happened to arrive at the same time
● Containers (Docker, Unikernel, etc.)
‫בעצם‬ ‫הם‬ - MSA ‫של‬ Patterns ,‫ובכלל‬
‫וזמנים‬ ‫ממקומות‬ ‫דפוסים‬ ‫של‬ ‫אסופה‬
...‫שונים‬
‫מהפיכה‬ ‫שזו‬ Containers ‫אולי‬ ‫מלבד‬
MSA ‫ו‬ MSA ‫ללא‬ ‫גם‬ ‫מתרחשת‬ ‫שהייתה‬
.‫בלעדיה‬ ‫מתרחשת‬ ‫הייתה‬
.‫סינרגיה‬ ‫נקודות‬ ‫הללו‬ ‫המגמות‬ 2-‫ל‬ ‫יש‬
Seriously:
Many of the above are classical Patterns of
Distributed Systems.
Microservices = Distributed Systems.
(‫מסובכת‬ ‫היא‬ ‫)כי‬ ‫מבוזרת‬ ‫ממערכת‬ ‫המנעו‬ - ‫האפשר‬ ‫במידת‬ :‫מבוזרות‬ ‫מערכות‬ ‫של‬ #1 ‫כלל‬
Why do you
need MSA?
Key Motivation #1
Continuous Deployment, A/B testing
A/B Testing is a core business activity
MSA is about Continuous Deployment
Services = parallel deployment pipeline
Services = independent deployment pipeline?
Key Motivation #2
Development Scalability
MSA is about Dev Org’s Scalability
● Services are small enough for code not to become ugly / lose control
The number of services scale with the System’s growth
● Services are small enough to be sometime fully re-written
MSA is about Dev Org’s Scalability (2)
Fences make good neighbours
Not-Sharing Memory makes fewer “dependency breaches”
Now: Cross-Service APIs - are what you need to watch!
- ‫למודולים‬ ‫ברורה‬ ‫חלוקה‬ ‫לנו‬ ‫יש‬ ‫במונוליט‬
‫זמן‬ ‫לאורך‬ ‫ולהתפזר‬ ‫אותה‬ ‫להפר‬ ‫קל‬ ‫אבל‬ ‫יותר‬ ‫יש‬ ‫אזי‬ APIs ‫ו‬ ‫רשת‬ ‫בתקשורת‬ ‫מגובה‬ ‫החלוקה‬ ‫כאשר‬ ,MSA ‫ב‬
‫פעמיים‬ ‫לחשוב‬ ‫גם‬ ‫לנו‬ ‫שעוזר‬ ‫מה‬ - ‫נוספים‬ ‫תקשורת‬ ‫קווי‬ ‫ליצור‬ ‫עבודה‬
.‫הסדר‬ ‫על‬ ‫ולשמור‬
Seriously:
Microservices have downsides too:
● The “Whole Picture” now shattered and you need to re-assemble it
(monitoring, logs, business logic needs, etc.)
● Network sensitivity
● Development overheads; Performance overheads.
Seriously:
Consider a “Monolith First” approach (a best-practice!)
Remember microservices are new. Question everything!
Make your own variations!
Allow yourself using non-microservices architecture
E.g. facebook, etsy, etc.
Summary
Approach to MSA with understanding...
image credits: @alvaro_sanchez
‫כבר‬ ‫שאתם‬ ‫מערכת‬ ‫לכם‬ ‫ויש‬ ‫ייתכן‬
‫לעשות‬ ‫ורוצים‬ ,‫אוהבים‬ ‫כל-כך‬ ‫לא‬
.‫שינוי‬ ‫בה‬
‫בהכרח‬ ‫לא‬ ‫למיקרו-שירותים‬ ‫חלוקה‬
!‫הבעיה‬ ‫את‬ ‫תפתור‬
… to make a better use of it
‫בעיה‬ ‫של‬ ‫נכונה‬ ‫התאמה‬ ‫עם‬
‫עמוקה‬ ‫הבנה‬ ‫מתוך‬ ‫ועבודה‬ ,‫לפתרון‬
‫מוצלח‬ ‫למימוש‬ ‫הסיכויים‬ ‫גדלים‬ -
!‫מיקרו-שירותים‬ ‫של‬
THANK YOU

Microservices (msa) insights with comments

  • 1.
  • 2.
    Who is thisGuy? (Lior Bar-On) SAP: microservices-inspired architecture, to ease code maintenance Gett: 24 microservices, 18 created in the last year Developer, Architect, Chief-Architect ‫תוכנה‬ ‫ארכיטקטורת‬ ‫בלוג‬ Career Microservices Blogger
  • 3.
  • 4.
    About R&D TONS 76 RUBY-ON-RAILS GOLANG NATIVE IOS/ANDROID REACTJS+FLUX+REDUX 200+ OFPOSITIVE ENERGY EMPLOYEES AWS PRODUCTION SERVERS ON PEAK TIME
  • 5.
    In this talk... Microservicesis the new Black … or the new DEFAULT Architecture Style
  • 6.
    We do Microservicestoo - like everyone else! ● Microservices with Docker Microservices are Clearly a Hype ● VB.NET for Microservices in 21 days ● Testing Microservices ● Microservices with node.js / Meteor / Nginx / Go / Closure / ... ● Event-Driven Microservices ● Security for Microservices ‫הנושאים‬ ‫מהם‬ ‫בדקתי‬ ,‫ההרצאה‬ ‫לצורך‬ ‫של‬ ‫בהקשר‬ ‫באינטרנט‬ ‫ביותר‬ ‫המדוברים‬ ...‫מיקרו-שירותים‬ :‫שלי‬ ‫המסקנה‬ ??MSA ‫בגלל‬ ‫מחדש‬ ‫התוכנה‬ ‫הנדסת‬ ‫מקצוע‬ ‫כל‬ ‫את‬ ‫ללמוד‬ ‫צריך‬ ‫האם‬ ?‫המסקנה‬ ‫מה‬
  • 7.
    We do Microservicestoo - like everyone else! ● Microservices with Docker ● Testing Microservices ● Microservices with node.js / Meteor / Nginx / Go / Closure / ... ● Event-Driven Microservices ● Security for Microservices ● VB.NET for Microservices in 21 days ‫בין‬ ‫רב‬ ‫שוני‬ ‫היה‬ ‫לא‬ .MSA ‫ל‬ ‫אותן‬ ‫קשרו‬ ‫ורק‬ - ‫השונות‬ ‫הטכנולוגיות‬ ‫על‬ ‫לדבר‬ ‫רצו‬ ‫כולם‬ ,‫בעצם‬ ‫הוסיפו‬ ‫רק‬ - ‫זהים‬ ‫הרעיונות‬ .Testing Microservices ‫על‬ ‫לכתבות‬ Testing ‫על‬ ‫כתובת‬ .‫קישור‬ ‫נקודות‬ ‫במאמרים‬ .‫בצחוק‬ ‫זה‬ - ‫האחרונה‬ ‫הדוגמה‬
  • 8.
    Pattern: Assume Microservices Microservicesis what everyone do. If you speak to everyone - connect yourself to microservices. "with Microservices" ‫תכלול‬ ‫מעכשיו‬ ‫שלכם‬ ‫מצגת‬ ‫שכל‬ ‫ממליץ‬ ‫אני‬ !‫אישית‬ ‫דוגמה‬ ‫נותן‬ ‫ואני‬ -
  • 9.
    Seriously: Beware of “MicroservicesEnvy” Microservices are not “one architecture to rule them all”
  • 10.
  • 11.
    Some Commonly usedPatterns ● Circuit Breakers, Bulkheads ● Single Sign-On (SSO) (e.g. OKTA, PingFederate) ● Distributed Tracing (e.g. Dapper, ZipKin) ● Centralized Configuration (e.g. Consul, Zookeeper, Spring Cloud) ● Service Discovery (e.g. Consul, Zookeeper, Euroka) ● Client (service) Side load balancing (e.g. Ribbon) ● Micro-Proxy / API Gateway (e.g. Zuul, ….) ● CQRS / Stream Processing ● Containers (e.g. Docker, Unikernel, then: Mesos, Kubernetes, Swarm,...) Patterns ‫של‬ ‫נכבדת‬ ‫כמות‬ ‫כבר‬ ‫יש‬ .MSA‫ל‬ ‫המקושרים‬
  • 12.
    We do Microservicestoo - like everyone else! Remember: No Software Engineer was ever got fired for implementing ALL Microservices-related Patterns to the system. Though, they may get fired for not delivering Business Value within a reasonable time.
  • 13.
    Seriously: Don’t implement Patternseagerly. Match Pattern per pain-point.
  • 14.
    MSA Patterns &Gett ● Circuit Breakers ● Custom* Implemented within 9 months ● Distributed Tracing ● Centralized Configuration Implemented within 15 months ● Single Sign-On (SSO) ● API Gateway - onto the Monolith Implement within 20 months (soon) ● API Gateway ● Containers* - in pilot Desired ● Service Discovery ○ we use simple DNS. ● Client (service) Side load balancing ● Bulkheads ● CQRS / Stream Processing Not on our plans blog post .‫לכך‬ ‫ממשי‬ ‫צורך‬ ‫קיים‬ ‫באמת‬ ‫עכשיו‬ ‫רק‬ - ‫אחרי‬ ‫וחצי‬ ‫שנה‬ .API GW ‫במימוש‬ ‫להתחיל‬ ‫מייד‬ ‫לנו‬ ‫יעצו‬ ,‫בגט‬ ‫כשהתחלנו‬ .‫ומתי‬ - ‫מימשנו‬ ‫אנחנו‬ Patterns ‫אלו‬ ‫הנה‬ .‫פרספקטיבה‬ ‫קצת‬ ‫לתת‬
  • 15.
    Not all commonproblems mapped to Patterns Network Error rate of TCP 3-way-handshakes: ~ 1:20,000 Charging operations failed due to network on Legacy: none Charging operations failed due to network on MSA: ~ 1:240 .Patterns ‫עם‬ ‫נפתרות‬ ‫הבעיות‬ ‫כל‬ ‫לא‬ ‫חשיפה‬ ‫בגלל‬ ‫בה‬ ‫שנתקלנו‬ ‫בעיה‬ ‫הנה‬ ‫שקודם‬ ‫תקשורת‬ .‫הרשת‬ ‫של‬ ‫לרגישות‬ ‫כעת‬ - ‫המונוליט‬ ‫של‬ ‫בזיכרון‬ ‫הייתה‬ ‫לכן‬ ‫עם‬ ‫ומתמודדת‬ ‫הרשת‬ ‫דרך‬ ‫עוברת‬ ...‫שלה‬ ‫הרעשים‬
  • 16.
    Seriously: Understanding what youare doing >> using the BEST(!!1) patterns.
  • 17.
    … are notreally “microservices patterns” ● Circuit Breakers, Bulkheads ● Centralized Configuration ● API Gateway (Gateway / Proxy / Facade) ● CQRS / Steam Processing Much Older than Microservices Somewhat Related to SOA ● Single Sign-On (SSO) ● Distributed Tracing ● Service Discovery Happened to arrive at the same time ● Containers (Docker, Unikernel, etc.) ‫בעצם‬ ‫הם‬ - MSA ‫של‬ Patterns ,‫ובכלל‬ ‫וזמנים‬ ‫ממקומות‬ ‫דפוסים‬ ‫של‬ ‫אסופה‬ ...‫שונים‬ ‫מהפיכה‬ ‫שזו‬ Containers ‫אולי‬ ‫מלבד‬ MSA ‫ו‬ MSA ‫ללא‬ ‫גם‬ ‫מתרחשת‬ ‫שהייתה‬ .‫בלעדיה‬ ‫מתרחשת‬ ‫הייתה‬ .‫סינרגיה‬ ‫נקודות‬ ‫הללו‬ ‫המגמות‬ 2-‫ל‬ ‫יש‬
  • 18.
    Seriously: Many of theabove are classical Patterns of Distributed Systems. Microservices = Distributed Systems. (‫מסובכת‬ ‫היא‬ ‫)כי‬ ‫מבוזרת‬ ‫ממערכת‬ ‫המנעו‬ - ‫האפשר‬ ‫במידת‬ :‫מבוזרות‬ ‫מערכות‬ ‫של‬ #1 ‫כלל‬
  • 19.
  • 20.
    Key Motivation #1 ContinuousDeployment, A/B testing A/B Testing is a core business activity
  • 21.
    MSA is aboutContinuous Deployment
  • 22.
    Services = paralleldeployment pipeline
  • 23.
    Services = independentdeployment pipeline?
  • 24.
  • 25.
    MSA is aboutDev Org’s Scalability ● Services are small enough for code not to become ugly / lose control The number of services scale with the System’s growth ● Services are small enough to be sometime fully re-written
  • 26.
    MSA is aboutDev Org’s Scalability (2) Fences make good neighbours Not-Sharing Memory makes fewer “dependency breaches” Now: Cross-Service APIs - are what you need to watch! - ‫למודולים‬ ‫ברורה‬ ‫חלוקה‬ ‫לנו‬ ‫יש‬ ‫במונוליט‬ ‫זמן‬ ‫לאורך‬ ‫ולהתפזר‬ ‫אותה‬ ‫להפר‬ ‫קל‬ ‫אבל‬ ‫יותר‬ ‫יש‬ ‫אזי‬ APIs ‫ו‬ ‫רשת‬ ‫בתקשורת‬ ‫מגובה‬ ‫החלוקה‬ ‫כאשר‬ ,MSA ‫ב‬ ‫פעמיים‬ ‫לחשוב‬ ‫גם‬ ‫לנו‬ ‫שעוזר‬ ‫מה‬ - ‫נוספים‬ ‫תקשורת‬ ‫קווי‬ ‫ליצור‬ ‫עבודה‬ .‫הסדר‬ ‫על‬ ‫ולשמור‬
  • 27.
    Seriously: Microservices have downsidestoo: ● The “Whole Picture” now shattered and you need to re-assemble it (monitoring, logs, business logic needs, etc.) ● Network sensitivity ● Development overheads; Performance overheads.
  • 28.
    Seriously: Consider a “MonolithFirst” approach (a best-practice!) Remember microservices are new. Question everything! Make your own variations! Allow yourself using non-microservices architecture E.g. facebook, etsy, etc.
  • 29.
  • 30.
    Approach to MSAwith understanding... image credits: @alvaro_sanchez ‫כבר‬ ‫שאתם‬ ‫מערכת‬ ‫לכם‬ ‫ויש‬ ‫ייתכן‬ ‫לעשות‬ ‫ורוצים‬ ,‫אוהבים‬ ‫כל-כך‬ ‫לא‬ .‫שינוי‬ ‫בה‬ ‫בהכרח‬ ‫לא‬ ‫למיקרו-שירותים‬ ‫חלוקה‬ !‫הבעיה‬ ‫את‬ ‫תפתור‬
  • 31.
    … to makea better use of it ‫בעיה‬ ‫של‬ ‫נכונה‬ ‫התאמה‬ ‫עם‬ ‫עמוקה‬ ‫הבנה‬ ‫מתוך‬ ‫ועבודה‬ ,‫לפתרון‬ ‫מוצלח‬ ‫למימוש‬ ‫הסיכויים‬ ‫גדלים‬ - !‫מיקרו-שירותים‬ ‫של‬
  • 32.