SlideShare a Scribd company logo
Building Microservice
Architectures with Go
Matt Heath, Mondo
#WIDS
Hi, I’m Matt
@mattheath
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
monoliths
traditional dev
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
?
DATABASE
APPLICATION
DATABASE
APPLICATION
DATABASEDATABASES
APPLICATION
DATABASEDATABASES
APPLICATION
SEARCH
DATABASEDATABASES
APPLICATION
CACHE
SEARCH
DATABASEDATABASES
APPLICATION
CACHE
SEARCH
CAT GIFS
ALL
HAIL
THE
MONOLITH
DO NOT WANT
DATABASEDATABASES
APPLICATION
CACHE
SEARCH
CAT GIFS
APPLICATION
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Microservices
at Mondo?
Single Responsibility
Principle
Bounded Context
Well defined
Interfaces
Composability
Getting started
LOAD BALANCER
LOAD BALANCER
HTTP API & ROUTING LAYER
TRANSPORT
LOAD BALANCER
HTTP API & ROUTING LAYER
SERVICE SERVICE SERVICE
TRANSPORT
LOAD BALANCER
HTTP API & ROUTING LAYER
SERVICE SERVICE SERVICE
TRANSPORT
DATABASE DATABASE DATABASE
LOAD BALANCER
HTTP API & ROUTING LAYER
SERVICE SERVICE SERVICE
TRANSPORT
DATABASE DATABASE DATABASE
LOAD BALANCER
API GATEWAY
APPLICATION
LOAD BALANCER
API GATEWAY
APPLICATION
LOAD BALANCER
API GATEWAY
APPLICATION
LOAD BALANCER
API GATEWAY
APPLICATION
LOAD BALANCER
SERVICESERVICESERVICES
Building microservice architectures with go   isoc hk wids june 2016
Simple
Static typing
Static linking
Comprehensive stdlib
eg. Networking
Concurrency
Interfaces
micro
Go Kit
gRPC
Kite
LOAD BALANCER
LOAD BALANCER
HTTP API & ROUTING LAYER
API
SERVICE
LOAD BALANCER
HTTP API & ROUTING LAYER
Building microservice architectures with go   isoc hk wids june 2016
/webhooks —-> Webhook API
WEBHOOK
API
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
API
AUTH
SERVICE
WEBHOOK
SERVICE
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
API
AUTH
SERVICE
WEBHOOK
SERVICE
LOAD BALANCER
HTTP API & ROUTING LAYER
DATABASE
WEBHOOK
API
AUTH
SERVICE
WEBHOOK
SERVICE
LOAD BALANCER
HTTP API & ROUTING LAYER
DATABASE
DATABASE
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
DATABASE
DATABASE
EXTERNAL
PROVIDER
SERVICE
Logic
Handlers
Storage
SERVICE
mercury
Logic
Handlers
Storage
SERVICE
type Handler func(request) (response, error)
mercury
Logic
Handlers
Storage
SERVICE
mercury
Logic
Handlers
Storage libraries
SERVICE
SERVICE
Deployment
Service Discovery
Configuration
Monitoring
Authentication
Authorisation
Storage
Circuit Breaking
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Small
Images
Statically
Compiled
Building microservice architectures with go   isoc hk wids june 2016
Making our
service reliable
Topology
Management
WEBHOOK
API
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
API
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
API
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
API
LOAD BALANCER
HTTP API & ROUTING LAYER
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
WEBHOOK
SERVICE
SLOW /
ERRORS
Event Driven
Architecture
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
SERVICE
C
SERVICE
D
E
API
SERVICE
SERVICE
A
SERVICE
B
LOAD BALANCER
HTTP API & ROUTING LAYER
SERVICE
C
SERVICE
D
G
E
F
?
? ?
LOAD BALANCER
HTTP API & ROUTING LAYER
?
?
??
?
?
?
?
?
?
?
Context
Propagation
api
api
api.customer
api.customer
service.customer
service.customer
api
api
api.customer
api.customer
service.customer
service.customer
8096820c-3b7b-47ec-bce6-1c239252ab40
api
api
api.customer
api.customer
service.customer
service.customer
api
api
api.customer
api.customer
service.customer
service.customer
package context
type Context interface {
Deadline() (deadline time.Time, ok bool)
Done() <-chan struct{}
Err() error
Value(key interface{}) interface{}
}
package context
type Context interface {
Deadline() (deadline time.Time, ok bool)
Done() <-chan struct{}
Err() error
Value(key interface{}) interface{}
}
package context
type Context interface {
Deadline() (deadline time.Time, ok bool)
Done() <-chan struct{}
Err() error
Value(key interface{}) interface{}
}
api
api
api.customer
api.customer
service.customer
service.customer
api
api
api.customer
api.customer
service.customer
service.customer
SEND
RECV
SEND
RECV
RECV
SEND
RECV
SEND
api api.customer service.customer
SEND
RECV
SEND
RECV
RECV
SEND
RECV
SEND
phosphor
Building microservice architectures with go   isoc hk wids june 2016
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
Building microservice architectures with go   isoc hk wids june 2016
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Building microservice architectures with go   isoc hk wids june 2016
Small
Simple
Easy to learn
Concurrency
Interfaces
Networking
Downsides?
Starting with
Microservices?
#WIDS
Thanks!
@mattheath
@getmondo
ATM: Thomas Hawk

Bank of Commerce: ABQ Museum Archives
IBM System/360: IBM
Absorbed: Saxbald Photography
Orbital Ion Cannon: www.rom.ac
Go Gopher: Renee French
Control Room: NASA
ATM Failure: George Redgrave
Credits

More Related Content

Viewers also liked

Black Ops of TCP/IP 2011 (Black Hat USA 2011)
Black Ops of TCP/IP 2011 (Black Hat USA 2011)Black Ops of TCP/IP 2011 (Black Hat USA 2011)
Black Ops of TCP/IP 2011 (Black Hat USA 2011)
Dan Kaminsky
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
tmont
 
Who's More Functional: Kotlin, Groovy, Scala, or Java?
Who's More Functional: Kotlin, Groovy, Scala, or Java?Who's More Functional: Kotlin, Groovy, Scala, or Java?
Who's More Functional: Kotlin, Groovy, Scala, or Java?
Andrey Breslav
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginners
kenbot
 
How StorageMart Succeeds in Global & Local Search
How StorageMart Succeeds in Global & Local SearchHow StorageMart Succeeds in Global & Local Search
How StorageMart Succeeds in Global & Local Search
Trustpilot
 
Airbnb tech talk: Levi Weintraub on webkit
Airbnb tech talk: Levi Weintraub on webkitAirbnb tech talk: Levi Weintraub on webkit
Airbnb tech talk: Levi Weintraub on webkit
naseemh
 
Domain Modeling in a Functional World
Domain Modeling in a Functional WorldDomain Modeling in a Functional World
Domain Modeling in a Functional World
Debasish Ghosh
 
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
EduSkills OECD
 
Lancement de PISA 2015 en France
Lancement de PISA 2015 en FranceLancement de PISA 2015 en France
Lancement de PISA 2015 en France
EduSkills OECD
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
Scott Wlaschin
 
The power of creative collaboration
The power of creative collaborationThe power of creative collaboration
The power of creative collaboration
Table19
 
3 Ingredients to Spice Up Your Content Marketing
3 Ingredients to Spice Up Your Content Marketing3 Ingredients to Spice Up Your Content Marketing
3 Ingredients to Spice Up Your Content Marketing
Semrush
 
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of WorkBeyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
Thumbtack, Inc.
 

Viewers also liked (13)

Black Ops of TCP/IP 2011 (Black Hat USA 2011)
Black Ops of TCP/IP 2011 (Black Hat USA 2011)Black Ops of TCP/IP 2011 (Black Hat USA 2011)
Black Ops of TCP/IP 2011 (Black Hat USA 2011)
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
 
Who's More Functional: Kotlin, Groovy, Scala, or Java?
Who's More Functional: Kotlin, Groovy, Scala, or Java?Who's More Functional: Kotlin, Groovy, Scala, or Java?
Who's More Functional: Kotlin, Groovy, Scala, or Java?
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginners
 
How StorageMart Succeeds in Global & Local Search
How StorageMart Succeeds in Global & Local SearchHow StorageMart Succeeds in Global & Local Search
How StorageMart Succeeds in Global & Local Search
 
Airbnb tech talk: Levi Weintraub on webkit
Airbnb tech talk: Levi Weintraub on webkitAirbnb tech talk: Levi Weintraub on webkit
Airbnb tech talk: Levi Weintraub on webkit
 
Domain Modeling in a Functional World
Domain Modeling in a Functional WorldDomain Modeling in a Functional World
Domain Modeling in a Functional World
 
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
PISA 2015 - Volume I: Excellence and Equity in Education and Volume II: Poli...
 
Lancement de PISA 2015 en France
Lancement de PISA 2015 en FranceLancement de PISA 2015 en France
Lancement de PISA 2015 en France
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
 
The power of creative collaboration
The power of creative collaborationThe power of creative collaboration
The power of creative collaboration
 
3 Ingredients to Spice Up Your Content Marketing
3 Ingredients to Spice Up Your Content Marketing3 Ingredients to Spice Up Your Content Marketing
3 Ingredients to Spice Up Your Content Marketing
 
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of WorkBeyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
Beyond the Gig Economy: How New Technologies Are Reshaping the Future of Work
 

Recently uploaded

快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
uehowe
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
uehowe
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 

Recently uploaded (16)

快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 

Building microservice architectures with go isoc hk wids june 2016