SlideShare uma empresa Scribd logo
1 de 50
Not my problem!
Delegating responsibility to infrastructure
Yshay Yaacobi
@yshayy
As a developer, I want to focus
on building features that
deliver business value.
Infrastructure
MicroservicesMonolith
Few monoliths
Monolith 1 Monolith 3
Monolith 2
Few monoliths
Application code
Application codeApplication code
Infra code Infra code
Infra code
Monoliths Lots of Microservices
Monoliths Lots of Microservices
Infrastructure code Application code
Service structure
Infra-code and business logic
code live together with every
microservice SERVICE
App Logic
Logging
Monitoring
Authentication
Secrets
Configuration
….
Service structure
Can we write only our business code
and let our hosting environment take
care of the rest?
Hosting environment/
Cloud - Infra logic
Service App
logic
About me
● Tech lead @ Soluto
● Actually more lazy than what I’ve written
● Really dig open source
● Passionate about cloud architecture, UX/DX,
functional programming, Docker and code quality
● Currently playing “Detroit: Become Human”
Yshay Yaacobi
www.linkedin.com/in/yshayy
www.github.com/yshayy
@yshayy
About Soluto
● Based in Tel Aviv, acquired by Asurion at 2013
● We create the next generation of tech support
● Our service is used by ~150M customers
worldwide
● We love open-source
About Soluto
Shifting to Microservices
● Less than 5 services -> 100+ services
● Cultural change, new aspects of ownership
● CI/CD - Better tooling and automation
Creating a Microservice
● Concerns:
○ Visibility/Observability
○ Security
○ Availability
● Deploy on Azure PaaS (Cloud service)
How does a service look like?
Demo
Building a service
(very naive)
What just
happened here?
We wanted a small micro service and
got a bunch of code and dependencies
Soluto - first iteration of microservices
● Shared template - dependencies and code blocks
● Used by teams as a boilerplate
Improved over time
● Smarter frameworks
● DI, reflection, metaprogramming, middlewares
● Packages for stabilization (Soluto.Logger, Soluto.Monitoring,
etc.)
That worked well
until...
Problems
● Upgrades are hard!
● Code templates are not really upgradable
● Dependencies can break
● Redeployment can be challenging
● Global infrastructure change -> almost impossible
And of course...
Language lock
Use case - from .Net to node
Use case - from .net to node
● Nuget packages in basic web-api template
○ 80+ packages
○ 10+ developed by soluto
● Hard to decide when and how
● Slows down teams
● Rewrites
○ Soluto.Logging -> @npm*/soluto-logger
○ Soluto.Monitoring -> @npm*/soluto-monitor
Dependencies Matrix from hellDependencies Matrix from hell
Authentication
Monitoring
Configuration
Resiliency
Authorization
Logging
HTTP2
Secrets
Validation
SSL
Service/ Runtime
Lang. 1 Lang. 2 Lang. 3 Lang. 4 Lang. 5
Additonal 3rd party package
Fully integrated
No mature/robust solution
As a developer, I want to focus on building
features that deliver business value
Which of these concerns
can be solved at
environment level?
Soluto - Second iteration of microservices
Kubernetes - 1000 foot view
● Cluster manager
● Orchestrate container workloads
● Lots of capabilities - container networking, service discovery,
load-balancing, auto-scaling, secrets, volumes and much more…
● Steep learning curve
● Widely adopted
Pod in a nutshell
● Basic scheduling unit of Kubernetes
● Pod per service
● Group of containers
● Containers in a pod share:
○ Network interface
○ Volumes
○ Process namespace
Pod 1 Pod 2
Kubernetes pods
Collections of containers that are co-scheduled
Node
A “sidecar” container
● Additional container adjacent
● Provide functionality to support our main
app
● Co-scheduled together on the same pod
Main
App
Sidecar
Pod
Main
App
Sidecar
Replica
Main
App
Sidecar
Replica
Sidecars can help us solve infrastructure
concerns externally to our app
Let’s try
again...
What did we just see?
● Lots of code elimination
● A leaner, more testable service
● Declarative approach - define what you want,
the environment will take care of the rest
What did we just see?
● External processes
● Agents and Proxies
● Supporting containers are
co-scheduled along the
“main” container
Airbag
(.Net)
How far can we go?
● Gateways - routing, caching, validation, rate limiting, policies
● Configuration - secrets, cloud resource binding
● Tools - remote debugging/profiling
● Supporting services - analytics, feature flags, etc…
● Probably more...
Different implementations
● Reverse proxies/application gateways
● Log collectors
● Metrics exporters
● Many open-source and enterprise solutions - https://landscape.cncf.io/
What about
Serverless?
Serverless
● Allows you to focus only on functions and nothing else…
● Sort-of language agnostic
● Event-driven model with separation between triggers/sources/sinks managed by
declarative configuration
Serverless - drawbacks
● Works mostly for stateless workload
● Popular solutions comes with serious vendor lock-in across all stack
● Many efforts to make it better/stronger/faster and standard
● Might be the best solution in the future
How did it affect us?
● Still on-going process
● Cleaner, leaner services
● Testing got easier
● Faster adoptions of new languages and tools
Things we haven’t figured out yet...
● Deployment/Configuration validation
● Isn’t it too magical?
As a developer, I want to focus
on building features that
deliver business value.
What can the infrastructure
do for you?
Thank you!
Yshay Yaacobi
www.linkedin.com/in/yshayy
www.github.com/yshayy
@yshayy
Questions?
Yshay Yaacobi
www.linkedin.com/in/yshayy
www.github.com/yshayy
@yshayy
Additional resources
● Tools:
○ AirBag - www.github.com/soluto/airbag
○ DQD - www.github.com/soluto/dqd
○ FluentD - https://www.fluentd.org/
○ Prometheus - https://prometheus.io
○ Istio - https://istio.io/
○ Minikube - github.com/kubernetes/minikube
○ Skaffold - github.com/GoogleContainerTools/skaffold
○ Oidc-server-mock - github.com/Soluto/oidc-server-mock
Additional resources
● CNCF landscape - https://landscape.cncf.io/
● Design patterns for container-based distributed systems -
https://static.googleusercontent.com/media/research.google.com/en//pubs/archiv
e/45406.pdf
● Introduction to modern network load balancing and proxying -
https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-
proxying-a57f6ff80236

Mais conteúdo relacionado

Mais procurados

Agile Development with Smalltalk - Short
Agile Development with Smalltalk - ShortAgile Development with Smalltalk - Short
Agile Development with Smalltalk - Short
Tomáš Kukol
 
Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
Miguel Pastor
 
Agile Development with Smalltalk - Long
Agile Development with Smalltalk - LongAgile Development with Smalltalk - Long
Agile Development with Smalltalk - Long
Tomáš Kukol
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlett
mfrancis
 
Seminar on Web Application
Seminar on Web ApplicationSeminar on Web Application
Seminar on Web Application
Vinodh Ram
 

Mais procurados (20)

Agile Development with Smalltalk - Short
Agile Development with Smalltalk - ShortAgile Development with Smalltalk - Short
Agile Development with Smalltalk - Short
 
Revamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupRevamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetup
 
Duda I/O - Lightning Talk Google Summer of Code Summit 2014
Duda I/O - Lightning Talk Google Summer of Code Summit 2014Duda I/O - Lightning Talk Google Summer of Code Summit 2014
Duda I/O - Lightning Talk Google Summer of Code Summit 2014
 
GDG Algiers DevFest 2013 Cool AndroidLibs
GDG Algiers DevFest 2013 Cool AndroidLibsGDG Algiers DevFest 2013 Cool AndroidLibs
GDG Algiers DevFest 2013 Cool AndroidLibs
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
 
Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
 
Agile Development with Smalltalk - Long
Agile Development with Smalltalk - LongAgile Development with Smalltalk - Long
Agile Development with Smalltalk - Long
 
Everything as code
Everything as codeEverything as code
Everything as code
 
WebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support ChangesWebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support Changes
 
Debugging Your Debugging Tools: What to do When Your Service Mesh Goes Down
Debugging Your Debugging Tools: What to do When Your Service Mesh Goes DownDebugging Your Debugging Tools: What to do When Your Service Mesh Goes Down
Debugging Your Debugging Tools: What to do When Your Service Mesh Goes Down
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlett
 
Seminar on Web Application
Seminar on Web ApplicationSeminar on Web Application
Seminar on Web Application
 
Grilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia ContentGrilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia Content
 
Security of OpenDaylight platform
Security of OpenDaylight platformSecurity of OpenDaylight platform
Security of OpenDaylight platform
 
Mumbai MuleSoft Meetup #19 - Anypoint monitoring and MQ Integrations
Mumbai MuleSoft Meetup #19 - Anypoint monitoring and MQ IntegrationsMumbai MuleSoft Meetup #19 - Anypoint monitoring and MQ Integrations
Mumbai MuleSoft Meetup #19 - Anypoint monitoring and MQ Integrations
 
Further Capabilities of Portlets & Portals
Further Capabilities of Portlets & PortalsFurther Capabilities of Portlets & Portals
Further Capabilities of Portlets & Portals
 
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and Profit
 
Test driven development with sonarQube
Test driven development with sonarQubeTest driven development with sonarQube
Test driven development with sonarQube
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
 

Semelhante a Not my problem - Delegating responsibility to infrastructure

Semelhante a Not my problem - Delegating responsibility to infrastructure (20)

Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at Netflix
 
The working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийThe working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор Турский
 
The working architecture of node js applications open tech week javascript ...
The working architecture of node js applications   open tech week javascript ...The working architecture of node js applications   open tech week javascript ...
The working architecture of node js applications open tech week javascript ...
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
Camunda Chapter Hamburg - Surviving the hyperautomation low code bubble
Camunda Chapter Hamburg - Surviving the hyperautomation low code bubbleCamunda Chapter Hamburg - Surviving the hyperautomation low code bubble
Camunda Chapter Hamburg - Surviving the hyperautomation low code bubble
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
 
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CDMulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 
Migrating .NET Apps to CF, A Strategy for Enterprises
Migrating .NET Apps to CF, A Strategy for EnterprisesMigrating .NET Apps to CF, A Strategy for Enterprises
Migrating .NET Apps to CF, A Strategy for Enterprises
 
Buzzwords: Microservices, containers and serverless - real life applications ...
Buzzwords: Microservices, containers and serverless - real life applications ...Buzzwords: Microservices, containers and serverless - real life applications ...
Buzzwords: Microservices, containers and serverless - real life applications ...
 
The FN Project by Maximilian Jerg
The FN Project by Maximilian JergThe FN Project by Maximilian Jerg
The FN Project by Maximilian Jerg
 
ngStockholm #8 at NetEnt - Micro Frontend Architecture
ngStockholm #8 at NetEnt - Micro Frontend ArchitecturengStockholm #8 at NetEnt - Micro Frontend Architecture
ngStockholm #8 at NetEnt - Micro Frontend Architecture
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
Ledingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in actionLedingkart Meetup #1: Monolithic to microservices in action
Ledingkart Meetup #1: Monolithic to microservices in action
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Not my problem - Delegating responsibility to infrastructure

  • 1. Not my problem! Delegating responsibility to infrastructure Yshay Yaacobi @yshayy
  • 2. As a developer, I want to focus on building features that deliver business value.
  • 5. Few monoliths Monolith 1 Monolith 3 Monolith 2
  • 6. Few monoliths Application code Application codeApplication code Infra code Infra code Infra code
  • 7. Monoliths Lots of Microservices
  • 8. Monoliths Lots of Microservices
  • 10. Service structure Infra-code and business logic code live together with every microservice SERVICE App Logic Logging Monitoring Authentication Secrets Configuration ….
  • 11. Service structure Can we write only our business code and let our hosting environment take care of the rest? Hosting environment/ Cloud - Infra logic Service App logic
  • 12. About me ● Tech lead @ Soluto ● Actually more lazy than what I’ve written ● Really dig open source ● Passionate about cloud architecture, UX/DX, functional programming, Docker and code quality ● Currently playing “Detroit: Become Human” Yshay Yaacobi www.linkedin.com/in/yshayy www.github.com/yshayy @yshayy
  • 13. About Soluto ● Based in Tel Aviv, acquired by Asurion at 2013 ● We create the next generation of tech support ● Our service is used by ~150M customers worldwide ● We love open-source About Soluto
  • 14.
  • 15. Shifting to Microservices ● Less than 5 services -> 100+ services ● Cultural change, new aspects of ownership ● CI/CD - Better tooling and automation
  • 16. Creating a Microservice ● Concerns: ○ Visibility/Observability ○ Security ○ Availability ● Deploy on Azure PaaS (Cloud service)
  • 17. How does a service look like?
  • 19. What just happened here? We wanted a small micro service and got a bunch of code and dependencies
  • 20. Soluto - first iteration of microservices ● Shared template - dependencies and code blocks ● Used by teams as a boilerplate
  • 21. Improved over time ● Smarter frameworks ● DI, reflection, metaprogramming, middlewares ● Packages for stabilization (Soluto.Logger, Soluto.Monitoring, etc.)
  • 23. Problems ● Upgrades are hard! ● Code templates are not really upgradable ● Dependencies can break ● Redeployment can be challenging ● Global infrastructure change -> almost impossible And of course...
  • 25. Use case - from .Net to node
  • 26. Use case - from .net to node ● Nuget packages in basic web-api template ○ 80+ packages ○ 10+ developed by soluto ● Hard to decide when and how ● Slows down teams ● Rewrites ○ Soluto.Logging -> @npm*/soluto-logger ○ Soluto.Monitoring -> @npm*/soluto-monitor
  • 27. Dependencies Matrix from hellDependencies Matrix from hell Authentication Monitoring Configuration Resiliency Authorization Logging HTTP2 Secrets Validation SSL Service/ Runtime Lang. 1 Lang. 2 Lang. 3 Lang. 4 Lang. 5 Additonal 3rd party package Fully integrated No mature/robust solution
  • 28. As a developer, I want to focus on building features that deliver business value
  • 29. Which of these concerns can be solved at environment level?
  • 30. Soluto - Second iteration of microservices
  • 31. Kubernetes - 1000 foot view ● Cluster manager ● Orchestrate container workloads ● Lots of capabilities - container networking, service discovery, load-balancing, auto-scaling, secrets, volumes and much more… ● Steep learning curve ● Widely adopted
  • 32. Pod in a nutshell ● Basic scheduling unit of Kubernetes ● Pod per service ● Group of containers ● Containers in a pod share: ○ Network interface ○ Volumes ○ Process namespace Pod 1 Pod 2 Kubernetes pods Collections of containers that are co-scheduled Node
  • 33. A “sidecar” container ● Additional container adjacent ● Provide functionality to support our main app ● Co-scheduled together on the same pod Main App Sidecar Pod Main App Sidecar Replica Main App Sidecar Replica
  • 34. Sidecars can help us solve infrastructure concerns externally to our app
  • 36. What did we just see? ● Lots of code elimination ● A leaner, more testable service ● Declarative approach - define what you want, the environment will take care of the rest
  • 37. What did we just see? ● External processes ● Agents and Proxies ● Supporting containers are co-scheduled along the “main” container Airbag (.Net)
  • 38. How far can we go? ● Gateways - routing, caching, validation, rate limiting, policies ● Configuration - secrets, cloud resource binding ● Tools - remote debugging/profiling ● Supporting services - analytics, feature flags, etc… ● Probably more...
  • 39. Different implementations ● Reverse proxies/application gateways ● Log collectors ● Metrics exporters ● Many open-source and enterprise solutions - https://landscape.cncf.io/
  • 41. Serverless ● Allows you to focus only on functions and nothing else… ● Sort-of language agnostic ● Event-driven model with separation between triggers/sources/sinks managed by declarative configuration
  • 42. Serverless - drawbacks ● Works mostly for stateless workload ● Popular solutions comes with serious vendor lock-in across all stack ● Many efforts to make it better/stronger/faster and standard ● Might be the best solution in the future
  • 43. How did it affect us? ● Still on-going process ● Cleaner, leaner services ● Testing got easier ● Faster adoptions of new languages and tools
  • 44. Things we haven’t figured out yet... ● Deployment/Configuration validation ● Isn’t it too magical?
  • 45. As a developer, I want to focus on building features that deliver business value.
  • 46. What can the infrastructure do for you?
  • 49. Additional resources ● Tools: ○ AirBag - www.github.com/soluto/airbag ○ DQD - www.github.com/soluto/dqd ○ FluentD - https://www.fluentd.org/ ○ Prometheus - https://prometheus.io ○ Istio - https://istio.io/ ○ Minikube - github.com/kubernetes/minikube ○ Skaffold - github.com/GoogleContainerTools/skaffold ○ Oidc-server-mock - github.com/Soluto/oidc-server-mock
  • 50. Additional resources ● CNCF landscape - https://landscape.cncf.io/ ● Design patterns for container-based distributed systems - https://static.googleusercontent.com/media/research.google.com/en//pubs/archiv e/45406.pdf ● Introduction to modern network load balancing and proxying - https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and- proxying-a57f6ff80236

Notas do Editor

  1. Need to improve
  2. Regardless
  3. Regardless
  4. Still on-going process New services with almost no “infra” code Testing got easier Faster adoptions of new languages and tools Better developer productivity