Symfony e micro (non così tanto) services

69
Symfony e micro (mica tanto) servizi

Transcript of Symfony e micro (non così tanto) services

Page 1: Symfony e micro (non così tanto) services

Symfony e micro (mica tanto)

servizi

Page 2: Symfony e micro (non così tanto) services

A bit of history…

Page 3: Symfony e micro (non così tanto) services
Page 4: Symfony e micro (non così tanto) services

Peaks on gen - jun - aug up to 70 M pg/mth

Peaks during big matches

Page 5: Symfony e micro (non così tanto) services
Page 6: Symfony e micro (non così tanto) services

PaaS Platform as a Service

(almost) Zero configuration

Put the code “on the cloud” and you’re done

Page 7: Symfony e micro (non così tanto) services
Page 8: Symfony e micro (non così tanto) services

In the beginning there was…

Page 9: Symfony e micro (non così tanto) services
Page 10: Symfony e micro (non così tanto) services

Hard limits on resource (e.g 50 db con)

Deploy via ftp (sf cache mess)

Blackbox: No realtime log, no access

PHP 5.3

Page 11: Symfony e micro (non così tanto) services

Microservices FTW!

Page 12: Symfony e micro (non così tanto) services
Page 13: Symfony e micro (non così tanto) services
Page 14: Symfony e micro (non così tanto) services
Page 15: Symfony e micro (non così tanto) services

micro vs macro?

orchestration?

maintenance?

security?

test?

Page 16: Symfony e micro (non così tanto) services

micro vs macro

Page 17: Symfony e micro (non così tanto) services

How many ways can you split an app?

Page 18: Symfony e micro (non così tanto) services
Page 19: Symfony e micro (non così tanto) services

Web: the main web (sf1)

Mobile: mobile version (sf components)

Vxl: community site (sf2 v2.8)

Page 20: Symfony e micro (non così tanto) services

Talk: api for comments, votes, ratings (sf2 v2.8)

Adv: api for ads serving (sf2 v2.8)

Media: api for images mgnt (sf2 v2.8)

Page 21: Symfony e micro (non così tanto) services
Page 22: Symfony e micro (non così tanto) services

Talk api

Page 23: Symfony e micro (non così tanto) services

/queue/comments/comments/totals/comments/{idComment} /comments/publish /comments/{idComment}/votes/comments/{idComment}/votes/{idVote} /comments/best-users/comments/week-best-users/comments-with-replies/users/{userId}/statistic/users/{userId}/comments/articles/most-commented-today

Page 24: Symfony e micro (non così tanto) services

Media api

Page 25: Symfony e micro (non così tanto) services

/collections/collections/{idCollection} /files/files/multiple /files/{idFile} /files/{idFile}/publish

Page 26: Symfony e micro (non così tanto) services

Why small is better?

Page 27: Symfony e micro (non così tanto) services
Page 28: Symfony e micro (non così tanto) services

Lines Of Code

Page 29: Symfony e micro (non così tanto) services

Fits in my head

https://www.infoq.com/presentations/microservices-replaceability-consistency

Page 30: Symfony e micro (non così tanto) services
Page 31: Symfony e micro (non così tanto) services

How services can interact?

Page 32: Symfony e micro (non così tanto) services

Client Side

Page 33: Symfony e micro (non così tanto) services

S1

S2

S3

Page

UI1 UI2

UI3

Page 34: Symfony e micro (non così tanto) services
Page 35: Symfony e micro (non così tanto) services
Page 36: Symfony e micro (non così tanto) services

Client knows the endpoint

Endpoints are public (caching!)

Async loading, progressive enhancement

Page 37: Symfony e micro (non così tanto) services

Server Side

Page 38: Symfony e micro (non così tanto) services

S1

S2

S3

ProxyUI

Page 39: Symfony e micro (non così tanto) services
Page 40: Symfony e micro (non così tanto) services
Page 41: Symfony e micro (non così tanto) services
Page 42: Symfony e micro (non così tanto) services

Client knows only one endpoint

Do not expose the underlying architecture

Page 43: Symfony e micro (non così tanto) services

Provide high level apis

Page 44: Symfony e micro (non così tanto) services
Page 45: Symfony e micro (non così tanto) services

What if something goes wrong?

Page 46: Symfony e micro (non così tanto) services
Page 47: Symfony e micro (non così tanto) services

All services are on subdomains

vxl.calciomercato.com

www.calciomercato.com

Page 48: Symfony e micro (non così tanto) services

Login set cookie on .calciomercato.com

Page 49: Symfony e micro (non così tanto) services

web

vxllogin Cookie

PHPSESSID: b22j6…Domain: .calciomercato.com

Page 50: Symfony e micro (non così tanto) services

Api services are token based

talk.calciomercato.com

adv.calciomercato.com

media.calciomercato.com

token expires with session

Page 51: Symfony e micro (non così tanto) services

Deploy

Page 52: Symfony e micro (non così tanto) services

How can we deploy a feature involving a single service?

Page 53: Symfony e micro (non così tanto) services

How can you deploy a feature involving n services?

Page 54: Symfony e micro (non così tanto) services

Keep Backward Compatibility!

Page 55: Symfony e micro (non così tanto) services

What if you are removing an endpoint?

Page 56: Symfony e micro (non così tanto) services

What if you are adding an endpoint?

Page 57: Symfony e micro (non così tanto) services

What if you are modifying an endpoint?

Page 58: Symfony e micro (non così tanto) services

Maintenance

Page 59: Symfony e micro (non così tanto) services

n smaller app to keep updated

Page 60: Symfony e micro (non così tanto) services

MicroKernelTrait

Page 61: Symfony e micro (non così tanto) services

Testing

Page 62: Symfony e micro (non così tanto) services

Test a service in isolation

Page 63: Symfony e micro (non così tanto) services
Page 64: Symfony e micro (non così tanto) services
Page 65: Symfony e micro (non così tanto) services

Test interaction of several services?

Page 66: Symfony e micro (non così tanto) services

S1

S2

S3

SUT

Page 67: Symfony e micro (non così tanto) services

What we learned so far?

Page 68: Symfony e micro (non così tanto) services

Michele OrselliCTO@Ideato

_orso_

micheleorselli / ideatosrl

[email protected]

Thank you!

https://joind.in/talk/92907

Page 69: Symfony e micro (non così tanto) services

https://electric-cloud.com/blog/author/ecloud/page/5/

http://www.magnasoma.com/content/images/Magnasoma-Monolith-3-01.jpg https://sudo.hailoapp.com/assets/posts/journey-to-microservices/wheel-of-doom-

highlighted.png

http://www.arabamerica.com/wp-content/uploads/2016/05/20160422-the-wire-so-and-so-animated-gif-1.gif

http://blogs.versionone.com/agile-development/wp-content/uploads/sites/4/2013/04/ContextMap2.png

https://cdn.infoq.com/statics_s1_20161011-0321_2/resource/articles/qcon-london-2015/en/

resources/8-a.jpg http://www.uqasar.eu/wp-content/uploads/2014/05/Metrics.jpg

http://pad1.whstatic.com/images/thumb/8/8c/Cheat-at-Card-Games-Step-3.jpg/728px-Cheat-at-Card-Games-Step-3.jpg