SlideShare a Scribd company logo
Microservices in Auto1
by Alexander Egurtsov
Otsikko
2
About Auto1
Headquartered in Berlin, AUTO1 Group is Europe’s
leading car trading platform.
• Diverse team of over 3,500 employees
• More than 55 nationalities
• Over 1,000,000 private customers
• Over 45,000 professional partners.
The brand independent automotive company owns business
units like AUTO1.com, wirkaufendeinauto.de and
Autohero.
Otsikko
3
Original auto1 architecture
Otsikko
4
Original auto1 architecture
• Code duplication
• Shared database
• Git Merge nightmare
• Codebase complexity
• No ownership
• Regression testing is almost impossible
• Long process from development to deploy
Otsikko
5
Breaking down monolith to microservices
Otsikko
6
Breaking down monolith to microservices
• Code duplication Solved
• Shared database Partially solved
• Git Merge nightmare Solved
• Codebase complexity Solved
• No ownership Solved
• Regression testing is almost impossible Solved
• Long process from development to deploy Solved
• Development time increased
• System architecture complexity increased
Otsikko
7
Breaking down monolith to microservices
Otsikko
8
How does usual service look like
Otsikko
9
Microservice cookbook
• Create new repo (@bat-bot setup repo <desired-repository-name> )
• Clone service template
• Specify service properties (descriptor.yml)
• Configure docker (docker-compose.yml)
• Configure jenkins (Jenkinsfile + separate jenkins registry)
• Configure terraform
• Configure gatekeepers (in separate repo)
• Deploy on qa, check health check
Otsikko
10
Microservice cookbook: template
• File templates:
- docker-compose.yml
- .env.dist
- Jenkinsfile
- composer.json
- /terraform
- /jobs
• Health check endpoint
• Behat
• Faker
• PHPUnit
• Service API libs
• AWS integration libs
Otsikko
11
Microservice cookbook: behat + wiremock
• User story tests
• Integration scenarios
• AWS mocking
• BDD (not required)
Behat (http://behat.org)
Wiremock (http://wiremock.org)
• API mocking
• Internal/External services integration
Otsikko
12
Microservice cookbook: communication
• API
- generic bundle
- configurable access through gatekeeper
• AWS SNS & SQS
- separate ECS task for each consumer
- queues are created by terraform on each build
• Changelog
- each entity change saved in special table
- any service can subscribe to any entity and any event type
- subscriptions done by SNS (may be not sequential)
Otsikko
13
Microservice cookbook: api bundle
# endpoint.yml
getUser:
method: 'GET'
baseUrl: '%env(AUTHENTICATION_HOST)%'
path: '/v1/auth/user/{userId}'
requestClass: 'WKDADTOAuthenticationServiceUserRequestGetUserById'
responseClass: 'WKDADTOAuthenticationServiceUserResponseUser'
uploadFile:
method: 'POST'
baseUrl: '%env(INBOUND_PAYMENTS_HOST)%'
path: '/v1/inbound-payments/file-data'
requestFormat: 'stream'
requestClass: 'WKDADTOInboundPaymentsServiceFileDataRequestPostFileUpload'
responseClass: 'WKDADTOInboundPaymentsServiceFileDataResponseFileUpload'
Otsikko
14
Microservice cookbook: jenkins
• CI job description stored inside service repo
• CI pipeline executes on each PR creation
• Pipeline contains
- docker image creation
- docker image to ECR push
- code sniffer run
- phpunit + behat tests run
- terraform execution
- swagger update
Otsikko
15
Microservice cookbook: terraform
• Deploys image QA
• Deploys same image on Prod
• Creates all needed resources (queues, buckets, ...)
• Starts console tasks (like consumers)
• Starts service
Demo: https://github.com/auto1-oss/aws-ecs-jenkins-terraform
Otsikko
16
Microservice cookbook: configuration
• Hashicorp Vault
• Jenkins secrets
• Env variables
• Configuration service
Otsikko
17
Microservice cookbook: security
• Different users for different applications
• Different gatekeepers for different platforms
• Environment split support
inbound-payments :
routes:
- path: /v1/inbound-payments/payment/{id}
methods: PATCH
filter:
- type: wkda.api.filter.AccessTokenFilter
- type: wkda.api.filter.ApiClientRoleFilter
config:
roles: admin
Otsikko
18
Microservice cookbook: monitoring
• Logstash + kibana
• Grafana
• Elastalert
Otsikko
19
Microservice cookbook: monitoring
name: Inbound payments errors
type: any
index: logstash-%Y.%m.%d
num_events: 1
realert:
minutes: 15
filter:
- query:
query_string :
query: "(system.syslog.detail.exception.code:"500")"
alert:
- slack
slack_channel_override :
- "#a1-sales-alert"
Otsikko
20
Results
• Over 150 microservices created (Java/PHP)
• 655 repositories
• 30 application databases
• Over 150 microservices
• Written on Java, PHP, Go, NodeJS
• Over 200 Engineers
• More than 20 teams (some of them are remote)
• Each team owns 5-20 services
• Average 10 releases per day
Otsikko
21
Thank you!
Alexander Egurtsov: alexander.egurtsov@auto1.com
Auto1 tech blog: http://auto1.tech
Auto1 opensource: https://github.com/auto1-oss
Questions?

More Related Content

PDF
What’s new in WSO2 Enterprise Integrator 6.6
PDF
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
PPTX
Windows communication foundation (part2) jaliya udagedara
PPTX
Using the Cascade Server Web Service API, by Artur Tomusiak
PPTX
Bezlio - Server Administration and Security
PPT
WSO2Con US 2013 - Advanced API Management Tactics
PPTX
Introduction to React JS
PDF
Exposing GraphQLs as Managed APIs
What’s new in WSO2 Enterprise Integrator 6.6
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
Windows communication foundation (part2) jaliya udagedara
Using the Cascade Server Web Service API, by Artur Tomusiak
Bezlio - Server Administration and Security
WSO2Con US 2013 - Advanced API Management Tactics
Introduction to React JS
Exposing GraphQLs as Managed APIs

What's hot (20)

PPTX
Building dynamic applications with the share point client object model
PPTX
Introduction to React
PDF
PHP, OAuth, Web Services and YQL
PDF
[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares
PPTX
Introduction to BreezeJs
PPTX
Introduction to react js
PDF
[POSS 2019] OVirt and Ceph: Perfect Combination.?
PPTX
React js Introduction
PPT
Spring In Practice
PDF
Blazor certification training - Dot Net Tricks
PPTX
ASP.NET MVC and ajax
PDF
Progressive Web Apps
PPTX
Brocade AWS user group Sydney presentation
PPTX
SharePoint 2013 Javascript Object Model
PDF
Enterprise Portal 2.0
PPTX
06 web api
PPTX
RIA services exposing & consuming queries
PDF
WebSocketson WildFly
PPTX
Service Management Dec 11
PPTX
Code First with Serverless Azure Functions
Building dynamic applications with the share point client object model
Introduction to React
PHP, OAuth, Web Services and YQL
[Pass the SALT 2021] Hosting Identity in the Cloud with free softwares
Introduction to BreezeJs
Introduction to react js
[POSS 2019] OVirt and Ceph: Perfect Combination.?
React js Introduction
Spring In Practice
Blazor certification training - Dot Net Tricks
ASP.NET MVC and ajax
Progressive Web Apps
Brocade AWS user group Sydney presentation
SharePoint 2013 Javascript Object Model
Enterprise Portal 2.0
06 web api
RIA services exposing & consuming queries
WebSocketson WildFly
Service Management Dec 11
Code First with Serverless Azure Functions
Ad

Similar to Microservices in AUTO1 by Alexander Egurtsov (20)

PDF
Microservices on a budget meetup
PDF
Microservices_Designing_Deploying.pdf
PDF
Microservices designing deploying
PDF
Microservices designing deploying
PDF
Microservices designing deploying
PDF
Microservices_Designing_Deploying.pdf
PDF
Microservices @ Work - A Practice Report of Developing Microservices
PDF
Building Microservices Software practics
PPTX
Microservices-101
PPTX
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
PDF
The Reality of Managing Microservices in Your CD Pipeline
PDF
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
PDF
Microservices reativos usando a stack do Netflix na AWS
PDF
CMPE282_009994036_PROJECT_REPORT
PDF
Priming Your Teams For Microservice Deployment to the Cloud
PDF
Microservices Interview Questions and Answers PDF By ScholarHat
PPTX
Application Centric Microservices from Redhat Summit 2015
PDF
Microservices for java architects it-symposium-2015-09-15
PPTX
Service Mesh CTO Forum (Draft 3)
PDF
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Microservices on a budget meetup
Microservices_Designing_Deploying.pdf
Microservices designing deploying
Microservices designing deploying
Microservices designing deploying
Microservices_Designing_Deploying.pdf
Microservices @ Work - A Practice Report of Developing Microservices
Building Microservices Software practics
Microservices-101
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
The Reality of Managing Microservices in Your CD Pipeline
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
Microservices reativos usando a stack do Netflix na AWS
CMPE282_009994036_PROJECT_REPORT
Priming Your Teams For Microservice Deployment to the Cloud
Microservices Interview Questions and Answers PDF By ScholarHat
Application Centric Microservices from Redhat Summit 2015
Microservices for java architects it-symposium-2015-09-15
Service Mesh CTO Forum (Draft 3)
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Ad

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Getting Started with Data Integration: FME Form 101
PDF
Empathic Computing: Creating Shared Understanding
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Big Data Technologies - Introduction.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation theory and applications.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Approach and Philosophy of On baking technology
Advanced methodologies resolving dimensionality complications for autism neur...
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Encapsulation_ Review paper, used for researhc scholars
Getting Started with Data Integration: FME Form 101
Empathic Computing: Creating Shared Understanding
20250228 LYD VKU AI Blended-Learning.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Big Data Technologies - Introduction.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
A comparative analysis of optical character recognition models for extracting...
NewMind AI Weekly Chronicles - August'25-Week II
Group 1 Presentation -Planning and Decision Making .pptx
Dropbox Q2 2025 Financial Results & Investor Presentation

Microservices in AUTO1 by Alexander Egurtsov

  • 1. Microservices in Auto1 by Alexander Egurtsov
  • 2. Otsikko 2 About Auto1 Headquartered in Berlin, AUTO1 Group is Europe’s leading car trading platform. • Diverse team of over 3,500 employees • More than 55 nationalities • Over 1,000,000 private customers • Over 45,000 professional partners. The brand independent automotive company owns business units like AUTO1.com, wirkaufendeinauto.de and Autohero.
  • 4. Otsikko 4 Original auto1 architecture • Code duplication • Shared database • Git Merge nightmare • Codebase complexity • No ownership • Regression testing is almost impossible • Long process from development to deploy
  • 6. Otsikko 6 Breaking down monolith to microservices • Code duplication Solved • Shared database Partially solved • Git Merge nightmare Solved • Codebase complexity Solved • No ownership Solved • Regression testing is almost impossible Solved • Long process from development to deploy Solved • Development time increased • System architecture complexity increased
  • 8. Otsikko 8 How does usual service look like
  • 9. Otsikko 9 Microservice cookbook • Create new repo (@bat-bot setup repo <desired-repository-name> ) • Clone service template • Specify service properties (descriptor.yml) • Configure docker (docker-compose.yml) • Configure jenkins (Jenkinsfile + separate jenkins registry) • Configure terraform • Configure gatekeepers (in separate repo) • Deploy on qa, check health check
  • 10. Otsikko 10 Microservice cookbook: template • File templates: - docker-compose.yml - .env.dist - Jenkinsfile - composer.json - /terraform - /jobs • Health check endpoint • Behat • Faker • PHPUnit • Service API libs • AWS integration libs
  • 11. Otsikko 11 Microservice cookbook: behat + wiremock • User story tests • Integration scenarios • AWS mocking • BDD (not required) Behat (http://behat.org) Wiremock (http://wiremock.org) • API mocking • Internal/External services integration
  • 12. Otsikko 12 Microservice cookbook: communication • API - generic bundle - configurable access through gatekeeper • AWS SNS & SQS - separate ECS task for each consumer - queues are created by terraform on each build • Changelog - each entity change saved in special table - any service can subscribe to any entity and any event type - subscriptions done by SNS (may be not sequential)
  • 13. Otsikko 13 Microservice cookbook: api bundle # endpoint.yml getUser: method: 'GET' baseUrl: '%env(AUTHENTICATION_HOST)%' path: '/v1/auth/user/{userId}' requestClass: 'WKDADTOAuthenticationServiceUserRequestGetUserById' responseClass: 'WKDADTOAuthenticationServiceUserResponseUser' uploadFile: method: 'POST' baseUrl: '%env(INBOUND_PAYMENTS_HOST)%' path: '/v1/inbound-payments/file-data' requestFormat: 'stream' requestClass: 'WKDADTOInboundPaymentsServiceFileDataRequestPostFileUpload' responseClass: 'WKDADTOInboundPaymentsServiceFileDataResponseFileUpload'
  • 14. Otsikko 14 Microservice cookbook: jenkins • CI job description stored inside service repo • CI pipeline executes on each PR creation • Pipeline contains - docker image creation - docker image to ECR push - code sniffer run - phpunit + behat tests run - terraform execution - swagger update
  • 15. Otsikko 15 Microservice cookbook: terraform • Deploys image QA • Deploys same image on Prod • Creates all needed resources (queues, buckets, ...) • Starts console tasks (like consumers) • Starts service Demo: https://github.com/auto1-oss/aws-ecs-jenkins-terraform
  • 16. Otsikko 16 Microservice cookbook: configuration • Hashicorp Vault • Jenkins secrets • Env variables • Configuration service
  • 17. Otsikko 17 Microservice cookbook: security • Different users for different applications • Different gatekeepers for different platforms • Environment split support inbound-payments : routes: - path: /v1/inbound-payments/payment/{id} methods: PATCH filter: - type: wkda.api.filter.AccessTokenFilter - type: wkda.api.filter.ApiClientRoleFilter config: roles: admin
  • 18. Otsikko 18 Microservice cookbook: monitoring • Logstash + kibana • Grafana • Elastalert
  • 19. Otsikko 19 Microservice cookbook: monitoring name: Inbound payments errors type: any index: logstash-%Y.%m.%d num_events: 1 realert: minutes: 15 filter: - query: query_string : query: "(system.syslog.detail.exception.code:"500")" alert: - slack slack_channel_override : - "#a1-sales-alert"
  • 20. Otsikko 20 Results • Over 150 microservices created (Java/PHP) • 655 repositories • 30 application databases • Over 150 microservices • Written on Java, PHP, Go, NodeJS • Over 200 Engineers • More than 20 teams (some of them are remote) • Each team owns 5-20 services • Average 10 releases per day
  • 21. Otsikko 21 Thank you! Alexander Egurtsov: alexander.egurtsov@auto1.com Auto1 tech blog: http://auto1.tech Auto1 opensource: https://github.com/auto1-oss Questions?