SlideShare a Scribd company logo
A microservice architecture

based on Golang
@giefferre
What is Qurami?
Qurami is the free app
that queues up for you
What is Qurami?
Select the venue you
are going to



Choose from the
venues in your area, or

discover all the
available venues
What is Qurami?
A venue, at a glance



Select the service of
your interest, know the
exact position of the
venue, get its contacts
What is Qurami?
Issue a ticket



Qurami will inform you
about the status of the
queue, in real time!
Availability
Code facts
Code facts
Backend: 1’062’287
Mobile: 600’413
lines of code
Code facts
API
libraries
system

configuration
continuous
integration
web stuff
services
utilities
agent
Architecture evolution
Evolution
Proof of Concept
• monolithic platform in Python
Evolution
Minimum Viable Product
• backend in PHP
• agent in Java
Evolution
Product
a lot more!
Evolution
“The focus is moved from common
technology to common interfaces, integration
techniques, protocols for passing data around”
Architecture
APIs
Business Domain Models
Microservices
Integration services,
Databases
3rd party services
Advantages
• “No pain” updates
• Hot swappable components
• Testable architecture
• Really scalable
• Performance statistics
Microservices
Business Domain Models Microservices
Business Domain Models

Microservices
?
Business Domain Models Microservices
API
office list? office list?
complete

domain model

data
data
presentation
elaboration
• Low level software
• Not accessible from apps
• Single-model responsibility
• Written in Golang
Business Domain Models Microservices
Business Domain Models Microservices
API
HTTP JSON-RPC server
Interface
Service core
DB conn. 3rd p. int. Helpers
ServiceName.MethodName(params)
Development process
The Deployer Microservice
Requirements
We needed a micro service

to automatically deploy some applications

from a repository to a machine
Microservice structure
.
├── README.md

├── interface.idl
├── main
│   └── main.go
├── interfaces
│   └── jsonrpc.go
├── core
│   ├── deployer.go
│   └── deployserver.go
└── resources
└── conf
├── github.ini
└── server_list.ini
Microservice specifications
Interface Definition Language
Microservice implementation: main
func main() {
// parse some command-line parameters
// such as service ID and environment
...
deployer, err := servers.NewRPCServer(

new(interfaces.JSONRPCInterface),
Identifier,
Environment,
)

if err != nil {
log.Fatal(err)
}
deployer.ServeJSON()
...
// wait until an exit command is given
}
Microservice implementation: jsonrpc interface
func (i *JSONRPCInterface) Enqueue(

r *http.Request,
args *EnqueueArgs,
reply *string,
) error {
result, err := core.Enqueue(*args)
if err != nil {
return err
}
*reply = result
return nil
}
Microservice implementation: core excerpt
...
func Enqueue(args *EnqueueArgs) QueuedCommandResult {
var result QueuedCommandResult
deployer, err := NewDeployer(

args.Command,
args.Repository,
args.AppName,
args.Branch,
args.DestMachine,
)
if err != nil {
result.Queued = false
result.Message = err.Error()
} else {
result.Queued = true
result.Message = "Started " + args.Command
go deployer.SetAndExecute()
}
return result
}
...
RESTed
Request body
{
"id": 1,
"jsonrpc": "2.0",
"method": "Deployer.Enqueue",
"params": {
"command": "DEPLOY",
"repository": “my-repository",
"appName": “my-application",
"branch": "my-feature-branch",
"destMachine": "test01"
}
}
Response body
{
"jsonrpc": "2.0",
"result": {
"queued": true,
"message": "Started DEPLOY"
},
"id": 1
}
Commands over HipChat
Performance improvements
Addendum
from 60% to 20%
Addendum
from 2% to 7%
Reference
Reference
Microservice architecture
http://bit.ly/1dI7ZJQ
Reference
Microservices for dysfunctional teams
http://bit.ly/1ICTyE9
Reference
Golang
http://golang.org
Thank You!
/qurami www.qurami.cominfo@qurami.com@qurami

More Related Content

PPT
Docker pipelines
PDF
On Prem Container Cloud - Lessons Learned
PPTX
DockerCon 15 Keynote - Day 2
PDF
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
PDF
KUBERNETES AS A FRAMEWORK FOR WRITING DEVOPS & MICROSERVICES TOOLING
PDF
DCEU 18: 5 Patterns for Success in Application Transformation
PDF
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
PDF
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Docker pipelines
On Prem Container Cloud - Lessons Learned
DockerCon 15 Keynote - Day 2
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KUBERNETES AS A FRAMEWORK FOR WRITING DEVOPS & MICROSERVICES TOOLING
DCEU 18: 5 Patterns for Success in Application Transformation
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...

What's hot (20)

PDF
DCSF 19 Microservices API: Routing Across Any Infrastructure
PPTX
Simple tweaks to get the most out of your JVM
PDF
DockerCon SF 2015: Docker at Lyft
ODP
DevOps @ OpenShift Online
PDF
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
PDF
Troubleshooting tips from docker support engineers
PDF
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
PDF
Microservices, Kubernetes and Istio - A Great Fit!
PPTX
Enabling Production Grade Containerized Applications through Policy Based Inf...
ODP
Openshift presentation
PDF
Improving security with Istio | DevNation Tech Talk
PDF
DCEU 18: Docker Container Networking
PPTX
Why kubernetes matters
PPTX
Spring Boot on Kubernetes/OpenShift
PDF
Containers & Cloud Native Ops Cloud Foundry Approach
PDF
Back to the Future: Containerize Legacy Applications
ODP
Openshift: Build, deploy & manage open, standard containers
PDF
DockerCon SF 2015: DHE/DTR
PPTX
Microservices and Best Practices
PDF
PHPIDOL#80: Kubernetes 101 for PHP Developer. Yusuf Hadiwinata - VP Operation...
DCSF 19 Microservices API: Routing Across Any Infrastructure
Simple tweaks to get the most out of your JVM
DockerCon SF 2015: Docker at Lyft
DevOps @ OpenShift Online
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Troubleshooting tips from docker support engineers
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
Microservices, Kubernetes and Istio - A Great Fit!
Enabling Production Grade Containerized Applications through Policy Based Inf...
Openshift presentation
Improving security with Istio | DevNation Tech Talk
DCEU 18: Docker Container Networking
Why kubernetes matters
Spring Boot on Kubernetes/OpenShift
Containers & Cloud Native Ops Cloud Foundry Approach
Back to the Future: Containerize Legacy Applications
Openshift: Build, deploy & manage open, standard containers
DockerCon SF 2015: DHE/DTR
Microservices and Best Practices
PHPIDOL#80: Kubernetes 101 for PHP Developer. Yusuf Hadiwinata - VP Operation...
Ad

Similar to A microservice architecture based on golang (20)

PDF
Building asynchronous micro-services that get along
PDF
Microservices at Mercari
PPTX
Microservices with Node and Docker
PDF
Microservices for java architects it-symposium-2015-09-15
PDF
Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017
PDF
Do you think you're doing microservice architecture? What about infrastructur...
PDF
4Developers 2015: Do you think you're doing microservice architecture? - Marc...
PPTX
Microservices: next-steps
PPTX
Yotpo microservices
PDF
Monolith vs Microservices with Golang at practice - Ivan Kutuzov
PDF
Cloud Foundry Open Tour China (english)
PDF
Olist Architecture v2.0
PPT
TransitioningToMicroServonDocker_MS
PDF
Microservices Journey NYC
PDF
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
PDF
OSGi Cloud Ecosystems (OSGi Users Forum Germany)
PDF
Zero to scaleable in ten minutes
PPTX
High-speed, Reactive Microservices 2017
PPTX
Tef con2016 (1)
PDF
Microservices - opportunities, dilemmas and problems
Building asynchronous micro-services that get along
Microservices at Mercari
Microservices with Node and Docker
Microservices for java architects it-symposium-2015-09-15
Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017
Do you think you're doing microservice architecture? What about infrastructur...
4Developers 2015: Do you think you're doing microservice architecture? - Marc...
Microservices: next-steps
Yotpo microservices
Monolith vs Microservices with Golang at practice - Ivan Kutuzov
Cloud Foundry Open Tour China (english)
Olist Architecture v2.0
TransitioningToMicroServonDocker_MS
Microservices Journey NYC
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
OSGi Cloud Ecosystems (OSGi Users Forum Germany)
Zero to scaleable in ten minutes
High-speed, Reactive Microservices 2017
Tef con2016 (1)
Microservices - opportunities, dilemmas and problems
Ad

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Transform Your Business with a Software ERP System
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Nekopoi APK 2025 free lastest update
PPTX
Introduction to Artificial Intelligence
PPTX
history of c programming in notes for students .pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
System and Network Administraation Chapter 3
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Digital Strategies for Manufacturing Companies
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
System and Network Administration Chapter 2
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Transform Your Business with a Software ERP System
CHAPTER 2 - PM Management and IT Context
Nekopoi APK 2025 free lastest update
Introduction to Artificial Intelligence
history of c programming in notes for students .pptx
How to Choose the Right IT Partner for Your Business in Malaysia
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
System and Network Administraation Chapter 3
Design an Analysis of Algorithms I-SECS-1021-03
Digital Strategies for Manufacturing Companies
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
How Creative Agencies Leverage Project Management Software.pdf
Softaken Excel to vCard Converter Software.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
System and Network Administration Chapter 2
Odoo Companies in India – Driving Business Transformation.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems

A microservice architecture based on golang