SlideShare uma empresa Scribd logo
1 de 43
Microservices at ibotta - pitfalls and learnings
Maciek Swiech & Matt Reynolds
2
https://commons.wikimedia.org/wiki/The_Who#/media/File:Who_-_1975.jpg
Who Are You?
I really wanna
know...
3
BACKGROUND
44
ibotta is a rewarded
shopping app built here
in Denver.
The backend began life
as a Ruby on Rails
monolith built on AWS
five years ago
Base Architecture
5
● At its most fundamental, the Ibotta backend
was comprised of two systems:
○ Receipt processing via OCR
○ A set of API’s to power a mobile
experience
Base Architecture
6credit: @benorama
Base Architecture
7credit: @benorama
Base Architecture - in
8
meijer
$1 apl
$2 oj
total
$3
Receipt
Processor
OCR
RoR Monolith
MySQL
Base Architecture - out
9
Offer / Bonus
Matching
Ledgers
RoR Monolith
MySQL
Notifications
Base Architecture -
scale?
10
So that’s simple enough…
But how do you normalize data? Per-retailer processors
And then - you start getting ‘clever’.
Optimizations for specific paths, relying on data structured by
circumstance, relying on global state, tribal knowledge grows...
Base Architecture -
scale?
11
So our nice lasagna has managed to
turn into spaghetti after all.
And worse, there are now hidden side-
effects and dependencies.
credit: @benorama
Motivation For Microservices
12
A growing company leads to:
● Growing customer base
● Growing code base
● Growing developer base
Using microservices we can:
● Build/scale services independently
● Reduce problem space for individual developers
● Develop features faster
Initial Attempts
13
We’re an AWS shop, so let’s try an AWS
product!
Enter Elastic Beanstalk
Docker and environment support
Initial Attempts
14
👍
Easy to use our existing deploy scripts
Config changes easy
Autoscaling tuning is easy
Initial Attempts
15
👎
no ability to do blue-green deploys
deploys had to be done in batches
batch failure -> total rollback
no “for free” sidecar containers (helm)
16
SERVICE COMMUNICATION
Mono → Micro
17
So we want to have our lovely ravioli-architecture
THIS WILL BE A LONG, DIFFICULT PROCESS!
YOU WILL NOT BE CHURNING OUT FEATURES!
Mono → Micro
18
OK great, you’ve decided to go to an SOA.
This means all your problems are now over!
Mono → Micro
19
OK great, you’ve decided to go to an SOA.
This means all your problems are now over!
just kidding…
Mono → Micro
20
● Agreeing on transport layers (HTTP? GRPC? SQS? MQ?)
● Agreeing on message format (JSON? Proto? Avro?)
● What does “backwards compatibility” mean?
● How do you manage inter-service dependencies?
Mono → Micro
21
function calls → network calls
observability and metrics become even more important
Mono → Micro
22
PERSONAL OBSERVATION:
µServices and SOA work because of 2 things:
1. the “secret sauce” of tooling
2. excellent monitoring and metrics
the secret sauce...
23
the secret sauce...
24
the secret sauce...
25
26
BUILDING A PLATFORM
Starting Kubernetes
27
● Use Kops & Terraform to create cluster on AWS
● Built Staging and Production cluster
● Experiment and upgrade Staging first
● Use Daemonsets for log aggregation & metrics
● Kiam for Iam roles in pods
● Run dashboard with minimal role & service account
token
Helm and Service Provisioning
28
● Helm can be considered a “package manager” for K8s
● Package resource YAML in “charts”
● Template support with values.yaml
● Create standard service charts for services
● Initially wrap Helm commands with scripts
● Now using Harness.io - deploy as a service
Service Mesh Experience
29
● Experiments with early versions (0.3&4) of Istio were
promising
● Built tooling for Canary header, % traffic switch, metrics
to Datadog
● Issues with Pilot under production load forced us to
remove
● Now Running Nginx ingress controllers
30
TOOLING
Paving the Road to Production
31
we need to help developers become more self
sufficient by working with them to pave a road to
production with tools.
Starting New Services
32
Use Yeoman generators to template new services
This includes:
● Example outline service
● Configuration of CI
● Configuration of Deployment requirements
Provisioning Infrastructure
33
● We use Terraform to provision AWS resources
● Develop Terraform modules for common use cases
● Base Yeoman generator for the minimum service
● Deployment pipeline process for making changes
● Training “Infrastructure specialists” in dev groups
● Developers write their own service modules
Support Libraries
34
Build common libraries in standard languages for:
logging, metrics, security and other shared services
This reduces work for individual services
Promotes a standard approach
Makes it easier to upgrade
Run as internal open source so devs provide PRs
35
PITFALLS & BENEFITS
Pitfalls
36
● More moving pieces
● Takes time to build platform, tools
● Takes time to change mindset, learn new approach
● More explicit communication required
● Harder to test across services
● Long term service ownership
Pitfalls
37
● Coordinating dependencies vs independent work / deploys
● Ensuring that your events are general-purpose and robust
● “Agile” teams vs. maintaining a high-level picture and system
design
● Team structure vs service ownership
38
THE LIGHT AT THE END OF THE
TUNNEL!
Benefits
39
● Teams are empowered to do what they need
● Smaller services scale independently, lower blast radius
● Kubernetes provides a lot of resilience
● Easier to take risks, try new things
● Easier to work in cross functional teams
● Easier to align closer with other groups
Benefits
40
● UNIX philosophy - do one thing and do it well
○ no need to shoehorn everything into 1 framework
● Isolation, and encapsulation of business logic
○ pseudo-functional approach
○ system comprised of composable units
● “Easy” canarying of individual components
We’re Hiring…
https://ibotta.com/careers
41
42
QUESTIONS
43
MOUNTAIN DIVIDER

Mais conteúdo relacionado

Mais procurados

NATS vs HTTP
NATS vs HTTPNATS vs HTTP
NATS vs HTTPApcera
 
Serverless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with FissionServerless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with FissionNATS
 
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...OpenNebula Project
 
OpenStack Networking LBaaS
OpenStack Networking LBaaSOpenStack Networking LBaaS
OpenStack Networking LBaaSIlya Shakhat
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityNATS
 
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...OpenStack
 
Congress Updates - Liberty Edition
Congress Updates - Liberty EditionCongress Updates - Liberty Edition
Congress Updates - Liberty EditionOpenStack Foundation
 
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupSimple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupApcera
 
OpenNebula TechDay Waterloo 2015 - Private cloud at black berry
OpenNebula TechDay Waterloo 2015 - Private cloud at black berryOpenNebula TechDay Waterloo 2015 - Private cloud at black berry
OpenNebula TechDay Waterloo 2015 - Private cloud at black berryOpenNebula Project
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATSApcera
 
MRA AMA Part 6: Service Mesh Models
MRA AMA Part 6: Service Mesh ModelsMRA AMA Part 6: Service Mesh Models
MRA AMA Part 6: Service Mesh ModelsNGINX, Inc.
 
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...OpenNebula Project
 
Instaclustr Kafka Meetup Sydney Presentation
Instaclustr Kafka Meetup Sydney PresentationInstaclustr Kafka Meetup Sydney Presentation
Instaclustr Kafka Meetup Sydney PresentationBen Slater
 
NATS in action - A Real time Microservices Architecture handled by NATS
NATS in action - A Real time Microservices Architecture handled by NATSNATS in action - A Real time Microservices Architecture handled by NATS
NATS in action - A Real time Microservices Architecture handled by NATSRaül Pérez
 
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s worldDávid Kőszeghy
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Apcera
 

Mais procurados (20)

NATS vs HTTP
NATS vs HTTPNATS vs HTTP
NATS vs HTTP
 
OpenNebula at virtion
OpenNebula at virtionOpenNebula at virtion
OpenNebula at virtion
 
Samuel Bercovici - lbaaS for Havana
Samuel Bercovici - lbaaS for HavanaSamuel Bercovici - lbaaS for Havana
Samuel Bercovici - lbaaS for Havana
 
Serverless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with FissionServerless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with Fission
 
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...
OpenNebulaconf2017US: Hybrid clouds dancing with virtual machines by Jordi Gu...
 
OpenStack Networking LBaaS
OpenStack Networking LBaaSOpenStack Networking LBaaS
OpenStack Networking LBaaS
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & Connectivity
 
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...
Aptira presents OpenStack Load Balancing as a Service at Banglore India OSUG ...
 
Congress Updates - Liberty Edition
Congress Updates - Liberty EditionCongress Updates - Liberty Edition
Congress Updates - Liberty Edition
 
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupSimple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder Meetup
 
OpenNebula TechDay Waterloo 2015 - Private cloud at black berry
OpenNebula TechDay Waterloo 2015 - Private cloud at black berryOpenNebula TechDay Waterloo 2015 - Private cloud at black berry
OpenNebula TechDay Waterloo 2015 - Private cloud at black berry
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
Dynomite - PerconaLive 2017
Dynomite  - PerconaLive 2017Dynomite  - PerconaLive 2017
Dynomite - PerconaLive 2017
 
Trove Updates - Liberty Edition
Trove Updates - Liberty EditionTrove Updates - Liberty Edition
Trove Updates - Liberty Edition
 
MRA AMA Part 6: Service Mesh Models
MRA AMA Part 6: Service Mesh ModelsMRA AMA Part 6: Service Mesh Models
MRA AMA Part 6: Service Mesh Models
 
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
OpenNebulaconf2017EU: OpenNebula 5.4 and Beyond by Tino Vázquez and Ruben S. ...
 
Instaclustr Kafka Meetup Sydney Presentation
Instaclustr Kafka Meetup Sydney PresentationInstaclustr Kafka Meetup Sydney Presentation
Instaclustr Kafka Meetup Sydney Presentation
 
NATS in action - A Real time Microservices Architecture handled by NATS
NATS in action - A Real time Microservices Architecture handled by NATSNATS in action - A Real time Microservices Architecture handled by NATS
NATS in action - A Real time Microservices Architecture handled by NATS
 
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
19. Cloud Native Computing - Kubernetes - Bratislava - Databases in K8s world
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems
 

Semelhante a Microservices at ibotta pitfalls and learnings

Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Ambassador Labs
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOpsDevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOpsAmbassador Labs
 
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloudInterconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloudRobert Parker
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesJudy Breedlove
 
Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the CloudRob Davies
 
PyCONKE meetup 2019: Microservices
PyCONKE meetup 2019: MicroservicesPyCONKE meetup 2019: Microservices
PyCONKE meetup 2019: MicroservicesSamuel Olembo
 
Serverless Toronto User Group - Let's go Serverless!
Serverless Toronto User Group - Let's go Serverless!Serverless Toronto User Group - Let's go Serverless!
Serverless Toronto User Group - Let's go Serverless!Daniel Zivkovic
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Kenzan: Architecting for Microservices
Kenzan: Architecting for MicroservicesKenzan: Architecting for Microservices
Kenzan: Architecting for MicroservicesDarren Bathgate
 
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...Ambassador Labs
 
16370 cics project opening and project update f
16370  cics project opening and project update f16370  cics project opening and project update f
16370 cics project opening and project update fnick_garrod
 
SoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration TechnologySoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration TechnologySrinath Perera
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Peter Lawrey
 
Get Ready for Coinbase Node
Get Ready for Coinbase NodeGet Ready for Coinbase Node
Get Ready for Coinbase NodeTinaBregovi
 
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...NETWAYS
 

Semelhante a Microservices at ibotta pitfalls and learnings (20)

Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Microservices Corporate Style
Microservices Corporate StyleMicroservices Corporate Style
Microservices Corporate Style
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOpsDevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
 
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloudInterconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
 
Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the Cloud
 
Microservices
MicroservicesMicroservices
Microservices
 
PyCONKE meetup 2019: Microservices
PyCONKE meetup 2019: MicroservicesPyCONKE meetup 2019: Microservices
PyCONKE meetup 2019: Microservices
 
Serverless Toronto User Group - Let's go Serverless!
Serverless Toronto User Group - Let's go Serverless!Serverless Toronto User Group - Let's go Serverless!
Serverless Toronto User Group - Let's go Serverless!
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Kenzan: Architecting for Microservices
Kenzan: Architecting for MicroservicesKenzan: Architecting for Microservices
Kenzan: Architecting for Microservices
 
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
 
16370 cics project opening and project update f
16370  cics project opening and project update f16370  cics project opening and project update f
16370 cics project opening and project update f
 
SoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration TechnologySoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration Technology
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016
 
Coinbase Node
Coinbase NodeCoinbase Node
Coinbase Node
 
Get Ready for Coinbase Node
Get Ready for Coinbase NodeGet Ready for Coinbase Node
Get Ready for Coinbase Node
 
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...
stackconf 2023 | Infrastructure-From-Code and the end of Microservices by Ala...
 

Último

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

Microservices at ibotta pitfalls and learnings

  • 1. Microservices at ibotta - pitfalls and learnings Maciek Swiech & Matt Reynolds
  • 4. 44 ibotta is a rewarded shopping app built here in Denver. The backend began life as a Ruby on Rails monolith built on AWS five years ago
  • 5. Base Architecture 5 ● At its most fundamental, the Ibotta backend was comprised of two systems: ○ Receipt processing via OCR ○ A set of API’s to power a mobile experience
  • 8. Base Architecture - in 8 meijer $1 apl $2 oj total $3 Receipt Processor OCR RoR Monolith MySQL
  • 9. Base Architecture - out 9 Offer / Bonus Matching Ledgers RoR Monolith MySQL Notifications
  • 10. Base Architecture - scale? 10 So that’s simple enough… But how do you normalize data? Per-retailer processors And then - you start getting ‘clever’. Optimizations for specific paths, relying on data structured by circumstance, relying on global state, tribal knowledge grows...
  • 11. Base Architecture - scale? 11 So our nice lasagna has managed to turn into spaghetti after all. And worse, there are now hidden side- effects and dependencies. credit: @benorama
  • 12. Motivation For Microservices 12 A growing company leads to: ● Growing customer base ● Growing code base ● Growing developer base Using microservices we can: ● Build/scale services independently ● Reduce problem space for individual developers ● Develop features faster
  • 13. Initial Attempts 13 We’re an AWS shop, so let’s try an AWS product! Enter Elastic Beanstalk Docker and environment support
  • 14. Initial Attempts 14 👍 Easy to use our existing deploy scripts Config changes easy Autoscaling tuning is easy
  • 15. Initial Attempts 15 👎 no ability to do blue-green deploys deploys had to be done in batches batch failure -> total rollback no “for free” sidecar containers (helm)
  • 17. Mono → Micro 17 So we want to have our lovely ravioli-architecture THIS WILL BE A LONG, DIFFICULT PROCESS! YOU WILL NOT BE CHURNING OUT FEATURES!
  • 18. Mono → Micro 18 OK great, you’ve decided to go to an SOA. This means all your problems are now over!
  • 19. Mono → Micro 19 OK great, you’ve decided to go to an SOA. This means all your problems are now over! just kidding…
  • 20. Mono → Micro 20 ● Agreeing on transport layers (HTTP? GRPC? SQS? MQ?) ● Agreeing on message format (JSON? Proto? Avro?) ● What does “backwards compatibility” mean? ● How do you manage inter-service dependencies?
  • 21. Mono → Micro 21 function calls → network calls observability and metrics become even more important
  • 22. Mono → Micro 22 PERSONAL OBSERVATION: µServices and SOA work because of 2 things: 1. the “secret sauce” of tooling 2. excellent monitoring and metrics
  • 27. Starting Kubernetes 27 ● Use Kops & Terraform to create cluster on AWS ● Built Staging and Production cluster ● Experiment and upgrade Staging first ● Use Daemonsets for log aggregation & metrics ● Kiam for Iam roles in pods ● Run dashboard with minimal role & service account token
  • 28. Helm and Service Provisioning 28 ● Helm can be considered a “package manager” for K8s ● Package resource YAML in “charts” ● Template support with values.yaml ● Create standard service charts for services ● Initially wrap Helm commands with scripts ● Now using Harness.io - deploy as a service
  • 29. Service Mesh Experience 29 ● Experiments with early versions (0.3&4) of Istio were promising ● Built tooling for Canary header, % traffic switch, metrics to Datadog ● Issues with Pilot under production load forced us to remove ● Now Running Nginx ingress controllers
  • 31. Paving the Road to Production 31 we need to help developers become more self sufficient by working with them to pave a road to production with tools.
  • 32. Starting New Services 32 Use Yeoman generators to template new services This includes: ● Example outline service ● Configuration of CI ● Configuration of Deployment requirements
  • 33. Provisioning Infrastructure 33 ● We use Terraform to provision AWS resources ● Develop Terraform modules for common use cases ● Base Yeoman generator for the minimum service ● Deployment pipeline process for making changes ● Training “Infrastructure specialists” in dev groups ● Developers write their own service modules
  • 34. Support Libraries 34 Build common libraries in standard languages for: logging, metrics, security and other shared services This reduces work for individual services Promotes a standard approach Makes it easier to upgrade Run as internal open source so devs provide PRs
  • 36. Pitfalls 36 ● More moving pieces ● Takes time to build platform, tools ● Takes time to change mindset, learn new approach ● More explicit communication required ● Harder to test across services ● Long term service ownership
  • 37. Pitfalls 37 ● Coordinating dependencies vs independent work / deploys ● Ensuring that your events are general-purpose and robust ● “Agile” teams vs. maintaining a high-level picture and system design ● Team structure vs service ownership
  • 38. 38 THE LIGHT AT THE END OF THE TUNNEL!
  • 39. Benefits 39 ● Teams are empowered to do what they need ● Smaller services scale independently, lower blast radius ● Kubernetes provides a lot of resilience ● Easier to take risks, try new things ● Easier to work in cross functional teams ● Easier to align closer with other groups
  • 40. Benefits 40 ● UNIX philosophy - do one thing and do it well ○ no need to shoehorn everything into 1 framework ● Isolation, and encapsulation of business logic ○ pseudo-functional approach ○ system comprised of composable units ● “Easy” canarying of individual components