.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?

N
How do we cook highload
microservices at SBTech
by @AntyaDev
Kyiv 28.10.2017
genda
• What technology stack did we choose and why?
[Stateful/Stateless Services; Cache; Streaming Data; Structure Logging]
• How do we use/adopt F# as a primary language
and what do we gain?
[DDD; CQRS; ES; Property Based Testing; Dependency Rejection]
• How do we test our microservices?
[Integration/Load/Failover Tests]
- One of the biggest provider in sport offering
- Supports a lot of regulated markets
- About 1000 microservices (200 distinct types)
- About 5 datacenters maintained fully by SBTech
- About 500 concurrent live events at pick time
- Design to settle 1 – 2ml bets per event
Stateless Services
Stateless Services
are Wasteful
• Stateless services have worked well. Storing the
canonical source of truth in the database and
horizontally scaling by adding new stateless service
instances as needed has been very effective.
• The problem is our applications do have state and we
are hitting limits where one database doesn’t cut it
anymore. In response we’re sharding relational
databases or using NoSQL databases. This gives up
strong consistency which causes part of the database
abstraction to leak into services.
Actor model
User 1
User 2
User 3
Cache
Complex
Event Processing
Streaming
Streaming
• Bridge between datacenters
• Production traffic (integration tests)
• Metrics, logs
• Pick time about 80K logs in sec
• Overall volume about 2TB per day
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
12:23:10 [INF] Service "loyalty-card-printer" starting up on host 8fd342hkg22u
12:23:11 [INF] Listening on http://8fd342hkg22u.example.com:1234
12:23:20 [INF] Card replacement request received for customer-109972
12:40:55 [INF] Card replacement request received for customer-98048
time=12:23:10, level=INF, service=loyalty-card-printer, host=8fd342hkg22u, activity=started
time=12:23:11, level=INF, endpoint=http://8fd342hkg22u.example.com:1234, activity=listening
time=12:23:20, level=INF, customer=customers-1099972, activity=replacement
time=12:40:55, level=INF, customer=customer-98048, activity=replacement
Microservice
Serilog
Microservice Microservice Microservice Microservice Microservice Microservice
Functional
programming
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
LEFT FOLD
fold: ('State -> 'Event -> 'State) -> 'State -> 'Event list -> 'State
let state = loadEvents(streamId) |> List.fold applyEvent zeroState
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?
(John Hughes, Koen Claessen)
1 of 25

Recommended

.NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений ... by
.NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений ....NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений ...
.NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений ...NETFest
644 views47 slides
.NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа... by
.NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа....NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа...
.NET Fest 2017. Денис Резник. Исполнение Запроса в SQL Server. Ожидание - Реа...NETFest
681 views26 slides
Intellias CQRS Framework by
Intellias CQRS FrameworkIntellias CQRS Framework
Intellias CQRS FrameworkSergey Seletsky
531 views21 slides
.NET Core Apps: Design & Development by
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & DevelopmentGlobalLogic Ukraine
1K views47 slides
MongoDB .local London 2019: Migrating a Monolith to MongoDB Atlas – Auto Trad... by
MongoDB .local London 2019: Migrating a Monolith to MongoDB Atlas – Auto Trad...MongoDB .local London 2019: Migrating a Monolith to MongoDB Atlas – Auto Trad...
MongoDB .local London 2019: Migrating a Monolith to MongoDB Atlas – Auto Trad...MongoDB
463 views49 slides
Digital Forensics and Incident Response in The Cloud by
Digital Forensics and Incident Response in The CloudDigital Forensics and Incident Response in The Cloud
Digital Forensics and Incident Response in The CloudVelocidex Enterprises
117 views13 slides

More Related Content

What's hot

MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud by
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB
921 views12 slides
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl... by
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...MongoDB
441 views10 slides
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ... by
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB
260 views48 slides
IoT 'Megaservices' - High Throughput Microservices with Akka by
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaLightbend
608 views39 slides
Market Trends in Microsoft Azure by
Market Trends in Microsoft AzureMarket Trends in Microsoft Azure
Market Trends in Microsoft AzureGlobalLogic Ukraine
2.3K views32 slides
Real-Time ETL in Practice with WSO2 Enterprise Integrator by
Real-Time ETL in Practice with WSO2 Enterprise IntegratorReal-Time ETL in Practice with WSO2 Enterprise Integrator
Real-Time ETL in Practice with WSO2 Enterprise IntegratorWSO2
361 views21 slides

What's hot(20)

MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud by MongoDB
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB921 views
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl... by MongoDB
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...
MongoDB .local London 2019: Nationwide Building Society: Building Mobile Appl...
MongoDB441 views
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ... by MongoDB
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB260 views
IoT 'Megaservices' - High Throughput Microservices with Akka by Lightbend
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with Akka
Lightbend608 views
Real-Time ETL in Practice with WSO2 Enterprise Integrator by WSO2
Real-Time ETL in Practice with WSO2 Enterprise IntegratorReal-Time ETL in Practice with WSO2 Enterprise Integrator
Real-Time ETL in Practice with WSO2 Enterprise Integrator
WSO2361 views
Cloud native policy enforcement with Open Policy Agent by LibbySchulze
Cloud native policy enforcement with Open Policy AgentCloud native policy enforcement with Open Policy Agent
Cloud native policy enforcement with Open Policy Agent
LibbySchulze167 views
MongoDB .local London 2019: The Tech Behind Connected Car by MongoDB
MongoDB .local London 2019: The Tech Behind Connected CarMongoDB .local London 2019: The Tech Behind Connected Car
MongoDB .local London 2019: The Tech Behind Connected Car
MongoDB429 views
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript by MongoDB
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB520 views
"What database can tell about application issues? What application can tell a... by Fwdays
"What database can tell about application issues? What application can tell a..."What database can tell about application issues? What application can tell a...
"What database can tell about application issues? What application can tell a...
Fwdays139 views
Getting started with Azure Event Grid - Webinar with Steef-Jan Wiggers by Codit
Getting started with Azure Event Grid - Webinar with Steef-Jan WiggersGetting started with Azure Event Grid - Webinar with Steef-Jan Wiggers
Getting started with Azure Event Grid - Webinar with Steef-Jan Wiggers
Codit614 views
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB by MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB293 views
MongoDB.local Berlin: App development in a Serverless World by MongoDB
MongoDB.local Berlin: App development in a Serverless WorldMongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless World
MongoDB374 views
A Free New World: Atlas Free Tier and How It Was Born by MongoDB
A Free New World: Atlas Free Tier and How It Was Born A Free New World: Atlas Free Tier and How It Was Born
A Free New World: Atlas Free Tier and How It Was Born
MongoDB765 views
Digital Forensics and Incident Response in The Cloud Part 3 by Velocidex Enterprises
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3
Introduction to Azure Event Grid by Callon Campbell
Introduction to Azure Event GridIntroduction to Azure Event Grid
Introduction to Azure Event Grid
Callon Campbell801 views
NGINX, Istio, and the Move to Microservices and Service Mesh by NGINX, Inc.
NGINX, Istio, and the Move to Microservices and Service MeshNGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Inc.1.7K views

Similar to .NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?

Sybase Global Infrastructure by
Sybase Global InfrastructureSybase Global Infrastructure
Sybase Global InfrastructureRobert Mobley
167 views32 slides
Data Virtualization Journey: How to Grow from Single Project and to Enterpris... by
Data Virtualization Journey: How to Grow from Single Project and to Enterpris...Data Virtualization Journey: How to Grow from Single Project and to Enterpris...
Data Virtualization Journey: How to Grow from Single Project and to Enterpris...Denodo
573 views16 slides
Visualizing Your Network Health - Know your Network by
Visualizing Your Network Health - Know your NetworkVisualizing Your Network Health - Know your Network
Visualizing Your Network Health - Know your NetworkDellNMS
247 views24 slides
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc... by
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...Maya Lumbroso
206 views22 slides
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc... by
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...Dataconomy Media
999 views22 slides
Data stream processing and micro service architecture by
Data stream processing and micro service architectureData stream processing and micro service architecture
Data stream processing and micro service architectureVyacheslav Benedichuk
1.3K views21 slides

Similar to .NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?(20)

Sybase Global Infrastructure by Robert Mobley
Sybase Global InfrastructureSybase Global Infrastructure
Sybase Global Infrastructure
Robert Mobley167 views
Data Virtualization Journey: How to Grow from Single Project and to Enterpris... by Denodo
Data Virtualization Journey: How to Grow from Single Project and to Enterpris...Data Virtualization Journey: How to Grow from Single Project and to Enterpris...
Data Virtualization Journey: How to Grow from Single Project and to Enterpris...
Denodo 573 views
Visualizing Your Network Health - Know your Network by DellNMS
Visualizing Your Network Health - Know your NetworkVisualizing Your Network Health - Know your Network
Visualizing Your Network Health - Know your Network
DellNMS247 views
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc... by Maya Lumbroso
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
Maya Lumbroso206 views
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc... by Dataconomy Media
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
Dataconomy Media999 views
Data stream processing and micro service architecture by Vyacheslav Benedichuk
Data stream processing and micro service architectureData stream processing and micro service architecture
Data stream processing and micro service architecture
New Database and Application Development Technology by Maurice Staal
New Database and Application Development TechnologyNew Database and Application Development Technology
New Database and Application Development Technology
Maurice Staal374 views
Online Meetup #3 - Solo.io, Tidepool, Weaveworks, Buoyant by Solo.io
Online Meetup #3 - Solo.io, Tidepool, Weaveworks, BuoyantOnline Meetup #3 - Solo.io, Tidepool, Weaveworks, Buoyant
Online Meetup #3 - Solo.io, Tidepool, Weaveworks, Buoyant
Solo.io456 views
Visualizing Your Network Health - Driving Visibility in Increasingly Complex... by DellNMS
Visualizing Your Network Health -  Driving Visibility in Increasingly Complex...Visualizing Your Network Health -  Driving Visibility in Increasingly Complex...
Visualizing Your Network Health - Driving Visibility in Increasingly Complex...
DellNMS325 views
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second... by Cloudera, Inc.
HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second...
Cloudera, Inc.4.2K views
HBaseCon 2013: ETL for Apache HBase by Cloudera, Inc.
HBaseCon 2013: ETL for Apache HBaseHBaseCon 2013: ETL for Apache HBase
HBaseCon 2013: ETL for Apache HBase
Cloudera, Inc.6.9K views
Understanding the Cloud and the Benefits for the Accountancy Sector - Present... by LouisaHDUK
Understanding the Cloud and the Benefits for the Accountancy Sector - Present...Understanding the Cloud and the Benefits for the Accountancy Sector - Present...
Understanding the Cloud and the Benefits for the Accountancy Sector - Present...
LouisaHDUK482 views
Keeping Technology Current: A Driver for Change by Cisco Canada
Keeping Technology Current: A Driver for ChangeKeeping Technology Current: A Driver for Change
Keeping Technology Current: A Driver for Change
Cisco Canada741 views
Thomas Weise, Apache Apex PMC Member and Architect/Co-Founder, DataTorrent - ... by Dataconomy Media
Thomas Weise, Apache Apex PMC Member and Architect/Co-Founder, DataTorrent - ...Thomas Weise, Apache Apex PMC Member and Architect/Co-Founder, DataTorrent - ...
Thomas Weise, Apache Apex PMC Member and Architect/Co-Founder, DataTorrent - ...
Dataconomy Media1.2K views
Big Data Berlin v8.0 Stream Processing with Apache Apex by Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex Big Data Berlin v8.0 Stream Processing with Apache Apex
Big Data Berlin v8.0 Stream Processing with Apache Apex
Apache Apex1.1K views
[English]Medium Inc Company Profile by JaeKwon9
[English]Medium Inc Company Profile[English]Medium Inc Company Profile
[English]Medium Inc Company Profile
JaeKwon962 views
Database@Home : Data Driven Apps - Data-driven Microservices Architecture wit... by Tammy Bednar
Database@Home : Data Driven Apps - Data-driven Microservices Architecture wit...Database@Home : Data Driven Apps - Data-driven Microservices Architecture wit...
Database@Home : Data Driven Apps - Data-driven Microservices Architecture wit...
Tammy Bednar225 views
SharePoint 2010 Global Deployment by Joel Oleson
SharePoint 2010 Global DeploymentSharePoint 2010 Global Deployment
SharePoint 2010 Global Deployment
Joel Oleson2K views
Confluent & GSI Webinars series - Session 3 by confluent
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
confluent17 views

More from NETFest

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET by
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NETNETFest
705 views74 slides
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE... by
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...NETFest
341 views41 slides
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET by
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NETNETFest
617 views43 slides
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов by
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистовNETFest
516 views40 slides
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem... by
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...NETFest
254 views7 slides
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design by
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven DesignNETFest
1.5K views55 slides

More from NETFest(20)

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET by NETFest
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
NETFest705 views
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE... by NETFest
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
NETFest341 views
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET by NETFest
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
NETFest617 views
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов by NETFest
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
NETFest516 views
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem... by NETFest
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
NETFest254 views
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design by NETFest
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
NETFest1.5K views
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex by NETFest
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
NETFest357 views
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A... by NETFest
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
NETFest1.6K views
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture by NETFest
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
NETFest326 views
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests by NETFest
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
NETFest224 views
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос... by NETFest
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
NETFest275 views
.NET Fest 2019. Roberto Freato. Azure App Service deep dive by NETFest
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
NETFest197 views
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production by NETFest
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
NETFest250 views
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com... by NETFest
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
NETFest204 views
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real... by NETFest
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
NETFest453 views
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem by NETFest
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
NETFest263 views
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ... by NETFest
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
NETFest170 views
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali... by NETFest
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
NETFest182 views
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET by NETFest
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
NETFest388 views
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur... by NETFest
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
NETFest243 views

Recently uploaded

Education of marginalized and socially disadvantages segments.pptx by
Education of marginalized and socially disadvantages segments.pptxEducation of marginalized and socially disadvantages segments.pptx
Education of marginalized and socially disadvantages segments.pptxGarimaBhati5
43 views36 slides
Java Simplified: Understanding Programming Basics by
Java Simplified: Understanding Programming BasicsJava Simplified: Understanding Programming Basics
Java Simplified: Understanding Programming BasicsAkshaj Vadakkath Joshy
653 views155 slides
JRN 362 - Lecture Twenty-Two by
JRN 362 - Lecture Twenty-TwoJRN 362 - Lecture Twenty-Two
JRN 362 - Lecture Twenty-TwoRich Hanley
39 views157 slides
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE... by
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...Nguyen Thanh Tu Collection
89 views91 slides
Introduction to AERO Supply Chain - #BEAERO Trainning program by
Introduction to AERO Supply Chain  - #BEAERO Trainning programIntroduction to AERO Supply Chain  - #BEAERO Trainning program
Introduction to AERO Supply Chain - #BEAERO Trainning programGuennoun Wajih
95 views78 slides
Six Sigma Concept by Sahil Srivastava.pptx by
Six Sigma Concept by Sahil Srivastava.pptxSix Sigma Concept by Sahil Srivastava.pptx
Six Sigma Concept by Sahil Srivastava.pptxSahil Srivastava
44 views11 slides

Recently uploaded(20)

Education of marginalized and socially disadvantages segments.pptx by GarimaBhati5
Education of marginalized and socially disadvantages segments.pptxEducation of marginalized and socially disadvantages segments.pptx
Education of marginalized and socially disadvantages segments.pptx
GarimaBhati543 views
JRN 362 - Lecture Twenty-Two by Rich Hanley
JRN 362 - Lecture Twenty-TwoJRN 362 - Lecture Twenty-Two
JRN 362 - Lecture Twenty-Two
Rich Hanley39 views
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE... by Nguyen Thanh Tu Collection
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
Introduction to AERO Supply Chain - #BEAERO Trainning program by Guennoun Wajih
Introduction to AERO Supply Chain  - #BEAERO Trainning programIntroduction to AERO Supply Chain  - #BEAERO Trainning program
Introduction to AERO Supply Chain - #BEAERO Trainning program
Guennoun Wajih95 views
Six Sigma Concept by Sahil Srivastava.pptx by Sahil Srivastava
Six Sigma Concept by Sahil Srivastava.pptxSix Sigma Concept by Sahil Srivastava.pptx
Six Sigma Concept by Sahil Srivastava.pptx
Sahil Srivastava44 views
UNIT NO 13 ORGANISMS AND POPULATION.pptx by Madhuri Bhande
UNIT NO 13 ORGANISMS AND POPULATION.pptxUNIT NO 13 ORGANISMS AND POPULATION.pptx
UNIT NO 13 ORGANISMS AND POPULATION.pptx
Madhuri Bhande42 views
The Future of Micro-credentials: Is Small Really Beautiful? by Mark Brown
The Future of Micro-credentials:  Is Small Really Beautiful?The Future of Micro-credentials:  Is Small Really Beautiful?
The Future of Micro-credentials: Is Small Really Beautiful?
Mark Brown75 views
12.5.23 Poverty and Precarity.pptx by mary850239
12.5.23 Poverty and Precarity.pptx12.5.23 Poverty and Precarity.pptx
12.5.23 Poverty and Precarity.pptx
mary850239381 views
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf by TechSoup
 Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
TechSoup 53 views
ANGULARJS.pdf by ArthyR3
ANGULARJS.pdfANGULARJS.pdf
ANGULARJS.pdf
ArthyR351 views
NodeJS and ExpressJS.pdf by ArthyR3
NodeJS and ExpressJS.pdfNodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdf
ArthyR348 views
Retail Store Scavenger Hunt.pptx by jmurphy154
Retail Store Scavenger Hunt.pptxRetail Store Scavenger Hunt.pptx
Retail Store Scavenger Hunt.pptx
jmurphy15452 views
Nelson_RecordStore.pdf by BrynNelson5
Nelson_RecordStore.pdfNelson_RecordStore.pdf
Nelson_RecordStore.pdf
BrynNelson546 views

.NET Fest 2017. Anton Moldovan. How do we cook highload microservices at SBTech?

  • 1. How do we cook highload microservices at SBTech by @AntyaDev Kyiv 28.10.2017
  • 2. genda • What technology stack did we choose and why? [Stateful/Stateless Services; Cache; Streaming Data; Structure Logging] • How do we use/adopt F# as a primary language and what do we gain? [DDD; CQRS; ES; Property Based Testing; Dependency Rejection] • How do we test our microservices? [Integration/Load/Failover Tests]
  • 3. - One of the biggest provider in sport offering - Supports a lot of regulated markets - About 1000 microservices (200 distinct types) - About 5 datacenters maintained fully by SBTech - About 500 concurrent live events at pick time - Design to settle 1 – 2ml bets per event
  • 5. Stateless Services are Wasteful • Stateless services have worked well. Storing the canonical source of truth in the database and horizontally scaling by adding new stateless service instances as needed has been very effective. • The problem is our applications do have state and we are hitting limits where one database doesn’t cut it anymore. In response we’re sharding relational databases or using NoSQL databases. This gives up strong consistency which causes part of the database abstraction to leak into services.
  • 10. Streaming • Bridge between datacenters • Production traffic (integration tests) • Metrics, logs • Pick time about 80K logs in sec • Overall volume about 2TB per day
  • 12. 12:23:10 [INF] Service "loyalty-card-printer" starting up on host 8fd342hkg22u 12:23:11 [INF] Listening on http://8fd342hkg22u.example.com:1234 12:23:20 [INF] Card replacement request received for customer-109972 12:40:55 [INF] Card replacement request received for customer-98048
  • 13. time=12:23:10, level=INF, service=loyalty-card-printer, host=8fd342hkg22u, activity=started time=12:23:11, level=INF, endpoint=http://8fd342hkg22u.example.com:1234, activity=listening time=12:23:20, level=INF, customer=customers-1099972, activity=replacement time=12:40:55, level=INF, customer=customer-98048, activity=replacement
  • 15. Microservice Microservice Microservice Microservice Microservice Microservice
  • 19. LEFT FOLD fold: ('State -> 'Event -> 'State) -> 'State -> 'Event list -> 'State let state = loadEvents(streamId) |> List.fold applyEvent zeroState
  • 25. (John Hughes, Koen Claessen)