1 of 39

Андрій ФіленкоBackend Tech Lead

2 of 39

Андрій Філенко

Backend Tech Lead at Quarks

Більше Dev, ніж Ops

Працював на фрілансі, в аутстафі,�аутсорсі, але обрав продукт

10+ років

досвіду

4 роки

у Quarks

3 of 39

Українська IT-компанія, що створює продукти

й технології у галузі Social Discovery & Dating. Допомагаємо мільйонам людей по всій планеті об’єднуватися та будувати стосунки

>180

людей в команді

>20

країн по всьому світу

United in movement

Київ

офіс

4 of 39

міжнародна онлайн-платформа

для пошуку нових знайомств

US, UK, LatAm, Ukraine, PL

5+ ГЕО

200K

активних користувачів щодня

3 платформи

iOS, Android, Mobile Web

Англійська, Іспанська (ES, US, MX),

Португальська, Польська, Німецька,

Французька

8 мов локалізації

5 of 39

ПРО gRPC:

[ 03 ]

Що ми дізналися

[ 02 ]

Навіщо

[ 01 ]

Чому

6 of 39

Web

Client

Backend

7 of 39

Web Client

Monolith

Monolith

Web

Client

8 of 39

Web

Client

Monolith

Service A

Service B

Service C

9 of 39

Web

Client

Monolith

Service A

Service B

Service C

Auth

Ratelimit

etc

10 of 39

Web

Client

Monolith

Service A

Service B

Service C

Auth

Ratelimit

etc

Auth

Ratelimit

etc

Auth

Ratelimit

etc

Auth

Ratelimit

etc

11 of 39

Android

Client

Auth

Ratelimit

etc

BFF

Monolith

Service A

Service B

Service C

12 of 39

Android

Client

Auth

Ratelimit

etc

BFF

Monolith

Service A

Service B

Service C

13 of 39

Android

Client

Auth

Ratelimit

etc

BFF

Monolith

Service A

Service B

Service C

golang client

golang client

golang client

golang client

14 of 39

Android

Client

Auth

Ratelimit

etc

BFF

Monolith

Service A

Service B

Service C

n client

n client

n client

n client

15 of 39

Feature

gRPC

REST

Payload

Protobuf (binary, small)

JSON (text, large)

API contract

Strict, required (.proto)

Loose, optional (OpenAPI)

Code generation

Built-in (protoc)

Third-party tools (Swagger)

Streaming

Bidirectional streaming

Client server request only

Browser support

Limited (require gRPC-web)

Yes

16 of 39

17 of 39

18 of 39

19 of 39

20 of 39

Стандартизація

21 of 39

Монорепозиторій

з усіма proto

контрактами

22 of 39

Стандартизація

Managing Protobuf

with protoc

Managing Protobuf

with BUF

Стандартизація

Стандартизація

23 of 39

24 of 39

Перевірка зворотньої сумістності

BACKWARDS COMPATIBLE

BEING PRODUCED 50+ YEARS

25 of 39

26 of 39

Стандартизація

27 of 39

Ресурсоорієнтоване проєктування

28 of 39

Чіткі правила

неймінгу

29 of 39

Error codes

30 of 39

Retries

31 of 39

API-First

підхід

field behavior

validation

32 of 39

Field Mask

33 of 39

Etag

etag

34 of 39

Pagination

35 of 39

Pagination

36 of 39

GRPC

Gateway

37 of 39

38 of 39

Generating

39 of 39

Q&A

email:�andrey.filenko@quarks.tech