Top Banner
События, шины и интеграция данных в непростом мире микросервисов
56

События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Jan 06, 2017

Download

Engineering

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

События, шины и интеграция данных в непростом мире микросервисов

Page 2: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Valentine Gogichashvili

Head of Data Engineering @ZalandoTech twitter: @valgog google+: +valgog email: [email protected]

Page 3: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)
Page 4: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)
Page 5: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

15 countries

4 fulfillment centers

18+ million active customers

~3 billion € revenue

150,000+ products

10,000+ employees

135 million visits per month

One of Europe's largest online fashion retailers

Page 6: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Zalando Technology

Page 7: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

BERLIN

Page 8: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

BERLIN

DORTMUND

DUBLIN

HELSINKI

ERFURT

MÖNCHENGLADBACH

HAMBURG

Page 9: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Zalando Technology

1500+ Technologists

Rapidly growing

international team

http://tech.zalando.de

Page 10: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Good old small world

Page 11: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Good old small world

Started as a tiny online shop

Prototyped on Magento (PHP)

Used MySQL as a database

Web Application

Backend

Database

Page 12: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

REBOOT

Page 13: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

REBOOT

5½ years ago

• Java

• macro service architecture with SOAP as RPC layer

• PostgreSQL

• Heavy usage of Stored Procedures

• 4 databases + 1 sharded database on 2 shards

• Python for tooling (i.e code deploy automation)

Page 14: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

REBOOT

Java Web Frontend

Java Backend

PostgreSQL

Java Backend

PostgreSQL

Java Backend

PostgreSQL 9.0 RC1 PostgreSQL 9.0

RC1 PostgreSQL 9.0 RC1 PostgreSQL

"macro" services

Page 15: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

REBOOT

• PostgreSQL

• Heavy usage of Stored Procedures

• clean transaction scope

• very clean data

• processing close to data

Page 16: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

REBOOT

• PostgreSQL

• Java Sproc Wrapper

• complex type mapping

• transparent sharding

Page 17: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Live long and prosper…

Very stable architecture that is still in use in the oldest

(vintage) components

We implemented everything ourselves starting from

warehouse and order management and finishing with

Web Shop and Mobile Applications

Page 18: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Live long and prosper…

"I want to code in Scala/Clojure/Haskell because it is cool and compact"

Page 19: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Live long and prosper…

"I want to code in Scala/Clojure/Haskell because it is cool and compact"

"But nobody will be able to support your code if you leave the company,

everybody should use Java, learn SQL and write Stored Procedures"

Page 20: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Live long and prosper…

"I want to code in Scala/Clojure/Haskell because it is cool and compact"

"But nobody will be able to support your code if you leave the company,

everybody should use Java, learn SQL and write Stored Procedures"

"I like the team and people but I am moving on to another company where I

can use cooler technologies!"

Page 21: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Radical Agility

Page 22: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Radical Agility

● Autonomy

● Purpose

● Mastery

Page 23: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Autonomous teams

● can choose own technology stack

● including persistence layer

● are responsible for operations

● should use isolated AWS accounts

Page 24: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Autonomy is not Anarchy

Page 25: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Supporting autonomy — STUPS

Page 26: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Supporting autonomy — STUPS

Page 27: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Supporting autonomy — Microservices

Business Logic

Data Storage

Team A Business Logic

Data Storage

Team B

RES

T A

PI R

EST AP

I

Applications communicate using REST APIs

Databases hidden behind the walls of AWS VPC

public Internet

Page 28: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Supporting autonomy — Microservices

Business Logic

Data Storage

Team A Business Logic

Data Storage

Team B

RES

T A

PI R

EST AP

I

public Internet

Classical ETL process is impossible!

Page 29: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the classical world

Page 30: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the classical world

Page 31: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

DBA Business Intelligence

Developers

Data integration in the classical world

Page 32: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the classical world

Business Logic DBA Business Intelligence

Data Warehouse (DWH)

Database

ETL process

DBA

BI

Dev

Page 33: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the classical world

Classical ETL process

Business Logic

Data Warehouse (DWH)

Database DBA

BI

Business Logic

Database

Business Logic

Database

Business Logic

Database

Dev

Page 34: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the classical world

Classical ETL process • Use-case specific — a lot of manual work

• Usually outputs data into a Data Warehouse

• well structured

• easy to use by the end user (SQL)

Page 35: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Page 36: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Page 37: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Business Logic

Database R

EST

AP

I

Business Logic

Database

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

RES

T A

PI

Page 38: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Queues to the rescue!

Page 39: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Queues to the rescue!

But will be there a unified bus?

Page 40: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Queues to the rescue!

But will be there a unified bus?

What about form and schema?

Page 41: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Data integration in the world of microservices

Business Logic

Database R

EST

AP

I

Business Logic

Database

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

RES

T A

PI

Ap

p A

Ap

p B

Ap

p C

Ap

p D

Page 42: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Business Intelligence

Data integration in the world of microservices

Business Logic

Database R

EST

AP

I

Business Logic

Database

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

RES

T A

PI

Ap

p A

Ap

p B

Ap

p C

Ap

p D

Page 43: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Business Intelligence

Data integration in the world of microservices

Business Logic

Database R

EST

AP

I

Business Logic

Database

RES

T A

PI

Business Logic

Database

RES

T A

PI

Business Logic

RES

T A

PI

Ap

p A

Ap

p B

Ap

p C

Ap

p D

Data heavy services (ML and DDDM)

Page 44: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus

Page 45: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus

• A secured HTTP API

This allows microservices teams to maintain service boundaries, and not

directly depend on any specific message broker technology. Access to the API

can be managed and secured using OAuth scopes;

• An event type registry

Events sent to Nakadi can be defined with a schema and managed via a

registry. Events can be validated before they are distributed to consumers;

• Inbuilt event types

Nakadi has optional support for events describing business processes and

data changes using standard primitives for identity, timestamps, event types,

and causality

Page 46: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus

• Schema versioning

Enable schema evolution in the backwards compatible way;

• Low latency event delivery

Once a publisher sends an event using a simple HTTP POST, consumers can be

pushed to via a streaming HTTP connection, allowing near real-time event

processing;

• Built on proven infrastructure

Nakadi uses Apache Kafka as its internal message broker and PostgreSQL as a

backing database for storing metadata and schema information.

Page 47: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Cluster

Schema validation

Schema metadata

store

Event metadata enrichment

ZooKeeper config store

Messaging Backend (Kafka now, Kynesis & others later)

Nakadi Broker

Management of offsets for high level API

Page 48: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster

Page 49: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster

Nakadi UI

Page 50: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster (physically separated

per event type)

Nakadi Cluster (physically separated

per event type)

Nakadi UI

Page 51: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster (physically separated

per event type)

Nakadi Cluster (physically separated

per event type)

Nakadi Schema Manager

Nakadi UI

Page 52: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster (physically separated

per event type)

Nakadi Cluster (physically separated

per event type)

Nakadi Schema Manager

Nakadi Schema Crawler

Nakadi UI

Page 53: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Nakadi Event Bus — next steps

Nakadi Cluster (physically separated

per event type)

Nakadi Cluster (physically separated

per event type)

Nakadi Schema Manager

Nakadi Schema Crawler

Nakadi UI

Nakadi Topology Manager

Page 54: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Bubuku Kafka AWS supervisor

Page 55: События, шины и интеграция данных в непростом мире микросервисов / Валентин Гогичашвили (Zalando SE)

Bubuku Kafka AWS supervisor

• IP address discovery using AWS

• Exhibitor discovery using AWS load balancer name

• Rebalance partitions on different events

• React on Exhibitor topology changes

• Automatic Kafka restart in case if broker is considered dead

• Graceful broker termination in case of supervisor stop

• Broker start/stop/restart synchronization across the cluster