SlideShare a Scribd company logo
golang, protobuf, gRPC, HTTP/2,
docker, kubernetes
High overview, how when and why to use them in distributed systems and
microservices
Golang
• The Golang (Go) is an open-source programming language sponsored by Google
• Go has gained popularity since 2009 and it’s now being used by many companies for a variety of
applications; Dropbox, Google, SoundCloud, CloudFlare, Docker, Cloud Foundry …
• It is fast. Not only in the sense that programs run fast; but also fast in the sense that its compiler
can compile projects fast
• It is a garbage-collected language
• It has built-in concurrency, which allows parallelism in an easier way. Go has the concept of
goroutines to start concurrent work and the concept of channels to permit both communication
and synchronization.
• Go has documentation as a standard feature, and rich standard library which covers a lot of areas
• Go’s built-in build system is both elegant and simple. No need to mess with build configurations
or makefiles
Golang
• Go is probably the only language that can claim to have a fully working Web
server as part of its standard library
• Go is relativity young language and has a very young ecosystem but it is growing
extremely fast and more and more users and companies start to use it
• Although Go is a high-level language, it still has low-level features such as
pointers
• Usually used for system and infrastructure programming
• It is not Object-oriented language
• Tools like Docker, etcd, Kubernetes and lot of other tools designed for distributed
computing are built using golang
Protocol buffers - protobuf
• Protocol buffers are a language-neutral, platform-neutral extensible
mechanism for serializing structured data
• Like XML, JSON, but smaller, faster, and simpler
• It is Binary format instead of textual like XML, JSON
• Optimized for the wire
• User define how data need to be structured once using DSL, than
generate source code for specific language (go, python, java, c#, …)
• Generated source code can be easily write and read structured data
to and from a variety of data streams and using a variety of languages
Protocol buffers - protobuf
• We can add new fields to our message formats without breaking
backwards-compatibility; old binaries simply ignore the new field
when parsing.
• So if we have a communications protocol that uses protocol buffers as
its data format, we can extend our protocol without having to worry
about breaking existing code
• We can even update our data structure without breaking deployed
programs that are compiled against the "old" format.
Protobuf banchmark
gRPC
• gRPC is an open source high performance RPC framework that can
run in any environment.
• It can efficiently connect services in and across data centers with
pluggable support for load balancing, tracing, health checking and
authentication
• It is also applicable in last mile of distributed computing to connect
devices, mobile applications and browsers to backend services
• It is not REST framework
• REST is more data oriented, RPC is more operations oriented
gRPC
• In gRPC a client application can directly call methods on a server application on a
different machine as if it was a local object, making it easier for you to create
distributed applications and services.
• As in many RPC systems, gRPC is based around the idea of defining a service,
specifying the methods that can be called remotely with their parameters and
return types.
• On the server side, the server implements this interface and runs a gRPC server
to handle client calls.
• On the client side, the client has a stub (referred to as just a client in some
languages) that provides the same methods as the server.
• Services are defined using DSL, then code for specific language is generated
gRPC
• Support standard request-
response model
• Support one-way streaming
• Support bidirectional streaming
• Use protobuf as its transport
data structure
• Use HTT/2 as transport protocol
HTTP/2
• HTTP/2 will make applications faster, simpler, and more robust
• Even better, it also opens up a number of entirely new opportunities
to optimize applications and improve performance!
• The primary goals for HTTP/2 are to reduce latency by enabling full
request and response multiplexing, minimize protocol overhead via
efficient compression of HTTP header fields, and add support for
request prioritization and server push.
• To implement these requirements, there is a large supporting cast of
other protocol enhancements, such as new flow control, error
handling, and upgrade mechanisms
HTTP/2
• HTTP/2 does not modify the application semantics of HTTP in any way
• All the core concepts, such as HTTP methods, status codes, URIs, and
header fields, remain in place
• Instead, HTTP/2 modifies how the data is formatted and transported,
both of which manage the entire process, and hides all the
complexity from our applications within the new framing layer
• As a result, all existing applications can be delivered without
modification
Docker
• Docker is a tool designed to make it easier to create, deploy, and run
applications by using containers
• Containers allow a developer to package up an application with all of the
parts it needs, such as libraries and other dependencies, and ship it all out
as one package
• Developers use Docker to eliminate “works on my machine” problems
when collaborating on code with co-workers
• Operators use Docker to run and manage apps side-by-side in isolated
containers to get better compute density
• Enterprises use Docker to build agile software delivery pipelines to ship
new features faster, more securely and with confidence for both Linux and
Windows Server apps
Docker
• A container image is a lightweight, stand-alone, executable package of
a piece of software that includes everything needed to run it: code,
runtime, system tools, system libraries, settings
• Available for both Linux and Windows based apps, containerized
software will always run the same, regardless of the environment
• Containers isolate software from its surroundings
• for example differences between development and staging environments and
help reduce conflicts between teams running different software on the same
infrastructure.
Docker
• In a way, Docker is a bit like a virtual machine
• Unlike a virtual machine, rather than creating a whole virtual
operating system, applications to use the same Linux kernel as the
system that they're running on
• Applications requires to be shipped with things not already running
on the host computer
• This gives a significant performance boost and reduces the size of the
application
• Docker is open source
Docker
• Docker containers are small in
comparison to the traditional vm
• Fast to run, kill, restart, …
• Use less space
• Can pack more on same
hardware in comparison to the
traditional vm’s
• Google use containers for more
than 15 years
Kubernetes
• Kubernetes is an open-source system for automating deployment,
scaling, and management of containerized applications
• It groups containers that make up an application into logical units for
easy management and discovery
• Kubernetes builds upon 15 years of experience of running production
workloads at Google, combined with best-of-breed ideas and
practices from the community
• Designed on the same principles that allows Google to run billions of
containers a week, Kubernetes can scale without increasing your ops
team.
Kubernetes
• Kubernetes runs on few concepts:
• Pod is the basic building block of Kubernetes–the smallest and simplest unit
in the Kubernetes object model that you create or deploy. A Pod represents a
running process on your cluster or set of containers.
• ReplicationController ensures that a specified number of pod “replicas” are
running at any one time. In other words, a ReplicationController makes sure
that a pod or homogeneous set of pods are always up and available. If there
are too many pods, it will kill some. If there are too few, the
ReplicationController will start more
• Service is an abstraction which defines a logical set of Pods and a policy by
which to access them - sometimes called a micro-service. The set of Pods
targeted by a Service is (usually) determined by a Label Selector
Kubernetes
• Horizontal scaling, Scale your application up and down with a simple
command, with a UI, or automatically based on CPU usage
• Automatic binpacking, Automatically places containers based on
their resource requirements and other constraints, while not
sacrificing availability. Mix critical and best-effort workloads in order
to drive up utilization and save even more resources
• Self-healing, Restarts containers that fail, replaces and reschedules
containers when nodes die, kills containers that don't respond to
user-defined health check, and doesn't advertise them to clients until
they are ready to serve
Kubernetes
• Rollouts and rollbacks, Kubernetes progressively rolls out changes to
applications or its configuration, while monitoring application health
to ensure it doesn't kill all your instances at the same time. If
something goes wrong, Kubernetes will rollback the change. Take
advantage of a growing ecosystem of deployment solutions
• Secret and configuration management, Deploy and update secrets
and application configuration without rebuilding your image and
without exposing secrets in your stack configuration
• etc.
How, when and why to use them
• Building distributed systems is not an easy task
• They come with a lot of problems
• Traditional approaches are not good…
• We must sacrifice something - CAP theorem
• A lot of choices scale horizontally or vertically, which database to use,
RPC or REST,…
• VMs or containers
How, when and why to use them
• Microservice architecture propose that every function is a service
• One time is responsible for only that service (develop, test, deploy,…)
• Easier to scale (horizontally)
• If every service is packed inside container we got all the benefits (and
problems) that containers brings us
• Service is easier to deploy, if show poor performance just kill him and
run new one
• Pats vs cattle principle
How, when and why to use them
• This type of architecture is not a silver bullet
• Bring it’s own problems and challenges
• Good enough for distributed systems
• Based on architectures used in Google, Netflix, Amazon, Facebook,…
• Used in really big systems
• Easier to scale
• Easier to maintain
• User can choose best language for service, language independent
How, when and why to use them
• Containers , orchestration engines and cloud computing lead to serverless
computing
• Focus on code, not servers
• Serverless computing allows building and running applications and services
without thinking about servers
• Serverless computing is an event-driven application design and
deployment paradigm in which computing resources are provided as
scalable
• Serverless computing is more cost-effective than renting or purchasing a
fixed quantity of servers, which generally involves significant periods of
underutilization or idle time

More Related Content

What's hot

Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
yalini97
 
DevOps tools for winning agility
DevOps tools for winning agilityDevOps tools for winning agility
DevOps tools for winning agility
Kellyn Pot'Vin-Gorman
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
Shelley Lambert
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
Markus Eisele
 
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Roman Pickl
 
Jenkins vs. AWS CodePipeline
Jenkins vs. AWS CodePipelineJenkins vs. AWS CodePipeline
Jenkins vs. AWS CodePipeline
Steffen Gebert
 
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Lucas Jellema
 
はじめての JFrog Artifactory
はじめての JFrog Artifactoryはじめての JFrog Artifactory
はじめての JFrog Artifactory
Tsuyoshi Miyake
 
On Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons LearnedOn Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons Learned
CodeOps Technologies LLP
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Weaveworks
 
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
Cisco IT
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce
 
How to Combine Artifacts and Source in a Single Server
How to Combine Artifacts and Source in a Single ServerHow to Combine Artifacts and Source in a Single Server
How to Combine Artifacts and Source in a Single Server
Perforce
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
GoDataDriven
 
Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021
Jamie Coleman
 
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platformApache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
rhatr
 
OpenShift As A DevOps Platform
OpenShift As A DevOps PlatformOpenShift As A DevOps Platform
OpenShift As A DevOps Platform
Lalatendu Mohanty
 
Software Testing in a Distributed Environment
Software Testing in a Distributed EnvironmentSoftware Testing in a Distributed Environment
Software Testing in a Distributed Environment
Perforce
 
Solum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALMSolum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALM
devkulkarni
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
ConSol Consulting & Solutions Software GmbH
 

What's hot (20)

Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
 
DevOps tools for winning agility
DevOps tools for winning agilityDevOps tools for winning agility
DevOps tools for winning agility
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
 
Jenkins vs. AWS CodePipeline
Jenkins vs. AWS CodePipelineJenkins vs. AWS CodePipeline
Jenkins vs. AWS CodePipeline
 
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
 
はじめての JFrog Artifactory
はじめての JFrog Artifactoryはじめての JFrog Artifactory
はじめての JFrog Artifactory
 
On Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons LearnedOn Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons Learned
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
 
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
 
How to Combine Artifacts and Source in a Single Server
How to Combine Artifacts and Source in a Single ServerHow to Combine Artifacts and Source in a Single Server
How to Combine Artifacts and Source in a Single Server
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
 
Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021
 
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platformApache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
 
OpenShift As A DevOps Platform
OpenShift As A DevOps PlatformOpenShift As A DevOps Platform
OpenShift As A DevOps Platform
 
Software Testing in a Distributed Environment
Software Testing in a Distributed EnvironmentSoftware Testing in a Distributed Environment
Software Testing in a Distributed Environment
 
Solum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALMSolum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALM
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 

Similar to Mcroservices with docker kubernetes, goang and grpc, overview

Data harmonycloudpowerpointclientfacing
Data harmonycloudpowerpointclientfacingData harmonycloudpowerpointclientfacing
Data harmonycloudpowerpointclientfacing
Access Innovations, Inc.
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
Karthik Gaekwad
 
Cloud technology with practical knowledge
Cloud technology with practical knowledgeCloud technology with practical knowledge
Cloud technology with practical knowledge
AnshikaNigam8
 
Kubernetes is all you need
Kubernetes is all you needKubernetes is all you need
Kubernetes is all you need
Vishwas N
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes matters
Platform9
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and Docker
Damian T. Gordon
 
A curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & KubernetesA curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & Kubernetes
zekeLabs Technologies
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics
sbbabu
 
Week 8 lecture material
Week 8 lecture materialWeek 8 lecture material
Week 8 lecture material
Ankit Gupta
 
An Introduction To Docker
An Introduction To  DockerAn Introduction To  Docker
An Introduction To Docker
Gabriella Davis
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
Raja Chattopadhyay
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
Bert Poller
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
Developing Enterprise Applications for the Cloud, from Monolith to MicroserviceDeveloping Enterprise Applications for the Cloud, from Monolith to Microservice
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
Jack-Junjie Cai
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
Oracle Developers
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
Karthik Gaekwad
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Developing Enterprise Applications for the Cloud,from Monolith to MicroservicesDeveloping Enterprise Applications for the Cloud,from Monolith to Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
David Currie
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
Docker, Inc.
 
Kubernetes intro
Kubernetes introKubernetes intro
Kubernetes intro
Pravin Magdum
 

Similar to Mcroservices with docker kubernetes, goang and grpc, overview (20)

Data harmonycloudpowerpointclientfacing
Data harmonycloudpowerpointclientfacingData harmonycloudpowerpointclientfacing
Data harmonycloudpowerpointclientfacing
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Cloud technology with practical knowledge
Cloud technology with practical knowledgeCloud technology with practical knowledge
Cloud technology with practical knowledge
 
Kubernetes is all you need
Kubernetes is all you needKubernetes is all you need
Kubernetes is all you need
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes matters
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and Docker
 
A curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & KubernetesA curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & Kubernetes
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics
 
Week 8 lecture material
Week 8 lecture materialWeek 8 lecture material
Week 8 lecture material
 
An Introduction To Docker
An Introduction To  DockerAn Introduction To  Docker
An Introduction To Docker
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Docker
DockerDocker
Docker
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
Developing Enterprise Applications for the Cloud, from Monolith to MicroserviceDeveloping Enterprise Applications for the Cloud, from Monolith to Microservice
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Developing Enterprise Applications for the Cloud,from Monolith to MicroservicesDeveloping Enterprise Applications for the Cloud,from Monolith to Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Kubernetes intro
Kubernetes introKubernetes intro
Kubernetes intro
 

More from Faculty of Technical Sciences, University of Novi Sad

Dynamic formation of distributed micro clouds
Dynamic formation of distributed micro cloudsDynamic formation of distributed micro clouds
Dynamic formation of distributed micro clouds
Faculty of Technical Sciences, University of Novi Sad
 
Distributed clouds — micro clouds
Distributed clouds — micro cloudsDistributed clouds — micro clouds
Distributed clouds — micro clouds
Faculty of Technical Sciences, University of Novi Sad
 
Dynamic formation of the distributed micro clouds
Dynamic formation of the distributed micro cloudsDynamic formation of the distributed micro clouds
Dynamic formation of the distributed micro clouds
Faculty of Technical Sciences, University of Novi Sad
 
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-CentersTowards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Faculty of Technical Sciences, University of Novi Sad
 
Edge computing system for large scale distributed sensing systems
Edge computing system for large scale distributed sensing systemsEdge computing system for large scale distributed sensing systems
Edge computing system for large scale distributed sensing systems
Faculty of Technical Sciences, University of Novi Sad
 
Big Graph Data with Titan DB
Big Graph Data with Titan DBBig Graph Data with Titan DB
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Kronos : A DSL for scheduled tasks based on textX
Kronos : A DSL for scheduled tasks based on textXKronos : A DSL for scheduled tasks based on textX
Kronos : A DSL for scheduled tasks based on textX
Faculty of Technical Sciences, University of Novi Sad
 
Hackaton Keystone Big Linked Data Spain
Hackaton Keystone Big Linked Data SpainHackaton Keystone Big Linked Data Spain
Hackaton Keystone Big Linked Data Spain
Faculty of Technical Sciences, University of Novi Sad
 
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICECLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
Faculty of Technical Sciences, University of Novi Sad
 

More from Faculty of Technical Sciences, University of Novi Sad (10)

Dynamic formation of distributed micro clouds
Dynamic formation of distributed micro cloudsDynamic formation of distributed micro clouds
Dynamic formation of distributed micro clouds
 
Distributed clouds — micro clouds
Distributed clouds — micro cloudsDistributed clouds — micro clouds
Distributed clouds — micro clouds
 
Dynamic formation of the distributed micro clouds
Dynamic formation of the distributed micro cloudsDynamic formation of the distributed micro clouds
Dynamic formation of the distributed micro clouds
 
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-CentersTowards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
 
Edge computing system for large scale distributed sensing systems
Edge computing system for large scale distributed sensing systemsEdge computing system for large scale distributed sensing systems
Edge computing system for large scale distributed sensing systems
 
Big Graph Data with Titan DB
Big Graph Data with Titan DBBig Graph Data with Titan DB
Big Graph Data with Titan DB
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetes
 
Kronos : A DSL for scheduled tasks based on textX
Kronos : A DSL for scheduled tasks based on textXKronos : A DSL for scheduled tasks based on textX
Kronos : A DSL for scheduled tasks based on textX
 
Hackaton Keystone Big Linked Data Spain
Hackaton Keystone Big Linked Data SpainHackaton Keystone Big Linked Data Spain
Hackaton Keystone Big Linked Data Spain
 
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICECLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
CLOVER: PROPERTY GRAPH BASED METADATA MANAGEMENT SERVICE
 

Recently uploaded

Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
Kamal Acharya
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSCW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
veerababupersonal22
 
The Role of Electrical and Electronics Engineers in IOT Technology.pdf
The Role of Electrical and Electronics Engineers in IOT Technology.pdfThe Role of Electrical and Electronics Engineers in IOT Technology.pdf
The Role of Electrical and Electronics Engineers in IOT Technology.pdf
Nettur Technical Training Foundation
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
ChristineTorrepenida1
 
Steel & Timber Design according to British Standard
Steel & Timber Design according to British StandardSteel & Timber Design according to British Standard
Steel & Timber Design according to British Standard
AkolbilaEmmanuel1
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
DfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributionsDfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributions
gestioneergodomus
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
ssuser7dcef0
 
Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
Aditya Rajan Patra
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
gdsczhcet
 
Fundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptxFundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptx
manasideore6
 
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABSDESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
itech2017
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
symbo111
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
SyedAbiiAzazi1
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 

Recently uploaded (20)

Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSCW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
 
The Role of Electrical and Electronics Engineers in IOT Technology.pdf
The Role of Electrical and Electronics Engineers in IOT Technology.pdfThe Role of Electrical and Electronics Engineers in IOT Technology.pdf
The Role of Electrical and Electronics Engineers in IOT Technology.pdf
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
 
Steel & Timber Design according to British Standard
Steel & Timber Design according to British StandardSteel & Timber Design according to British Standard
Steel & Timber Design according to British Standard
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
DfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributionsDfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributions
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
 
Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
 
Fundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptxFundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptx
 
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABSDESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 

Mcroservices with docker kubernetes, goang and grpc, overview

  • 1. golang, protobuf, gRPC, HTTP/2, docker, kubernetes High overview, how when and why to use them in distributed systems and microservices
  • 2. Golang • The Golang (Go) is an open-source programming language sponsored by Google • Go has gained popularity since 2009 and it’s now being used by many companies for a variety of applications; Dropbox, Google, SoundCloud, CloudFlare, Docker, Cloud Foundry … • It is fast. Not only in the sense that programs run fast; but also fast in the sense that its compiler can compile projects fast • It is a garbage-collected language • It has built-in concurrency, which allows parallelism in an easier way. Go has the concept of goroutines to start concurrent work and the concept of channels to permit both communication and synchronization. • Go has documentation as a standard feature, and rich standard library which covers a lot of areas • Go’s built-in build system is both elegant and simple. No need to mess with build configurations or makefiles
  • 3. Golang • Go is probably the only language that can claim to have a fully working Web server as part of its standard library • Go is relativity young language and has a very young ecosystem but it is growing extremely fast and more and more users and companies start to use it • Although Go is a high-level language, it still has low-level features such as pointers • Usually used for system and infrastructure programming • It is not Object-oriented language • Tools like Docker, etcd, Kubernetes and lot of other tools designed for distributed computing are built using golang
  • 4. Protocol buffers - protobuf • Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data • Like XML, JSON, but smaller, faster, and simpler • It is Binary format instead of textual like XML, JSON • Optimized for the wire • User define how data need to be structured once using DSL, than generate source code for specific language (go, python, java, c#, …) • Generated source code can be easily write and read structured data to and from a variety of data streams and using a variety of languages
  • 5. Protocol buffers - protobuf • We can add new fields to our message formats without breaking backwards-compatibility; old binaries simply ignore the new field when parsing. • So if we have a communications protocol that uses protocol buffers as its data format, we can extend our protocol without having to worry about breaking existing code • We can even update our data structure without breaking deployed programs that are compiled against the "old" format.
  • 7. gRPC • gRPC is an open source high performance RPC framework that can run in any environment. • It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication • It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services • It is not REST framework • REST is more data oriented, RPC is more operations oriented
  • 8. gRPC • In gRPC a client application can directly call methods on a server application on a different machine as if it was a local object, making it easier for you to create distributed applications and services. • As in many RPC systems, gRPC is based around the idea of defining a service, specifying the methods that can be called remotely with their parameters and return types. • On the server side, the server implements this interface and runs a gRPC server to handle client calls. • On the client side, the client has a stub (referred to as just a client in some languages) that provides the same methods as the server. • Services are defined using DSL, then code for specific language is generated
  • 9. gRPC • Support standard request- response model • Support one-way streaming • Support bidirectional streaming • Use protobuf as its transport data structure • Use HTT/2 as transport protocol
  • 10. HTTP/2 • HTTP/2 will make applications faster, simpler, and more robust • Even better, it also opens up a number of entirely new opportunities to optimize applications and improve performance! • The primary goals for HTTP/2 are to reduce latency by enabling full request and response multiplexing, minimize protocol overhead via efficient compression of HTTP header fields, and add support for request prioritization and server push. • To implement these requirements, there is a large supporting cast of other protocol enhancements, such as new flow control, error handling, and upgrade mechanisms
  • 11. HTTP/2 • HTTP/2 does not modify the application semantics of HTTP in any way • All the core concepts, such as HTTP methods, status codes, URIs, and header fields, remain in place • Instead, HTTP/2 modifies how the data is formatted and transported, both of which manage the entire process, and hides all the complexity from our applications within the new framing layer • As a result, all existing applications can be delivered without modification
  • 12. Docker • Docker is a tool designed to make it easier to create, deploy, and run applications by using containers • Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package • Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers • Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density • Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux and Windows Server apps
  • 13. Docker • A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings • Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment • Containers isolate software from its surroundings • for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.
  • 14. Docker • In a way, Docker is a bit like a virtual machine • Unlike a virtual machine, rather than creating a whole virtual operating system, applications to use the same Linux kernel as the system that they're running on • Applications requires to be shipped with things not already running on the host computer • This gives a significant performance boost and reduces the size of the application • Docker is open source
  • 15. Docker • Docker containers are small in comparison to the traditional vm • Fast to run, kill, restart, … • Use less space • Can pack more on same hardware in comparison to the traditional vm’s • Google use containers for more than 15 years
  • 16. Kubernetes • Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications • It groups containers that make up an application into logical units for easy management and discovery • Kubernetes builds upon 15 years of experience of running production workloads at Google, combined with best-of-breed ideas and practices from the community • Designed on the same principles that allows Google to run billions of containers a week, Kubernetes can scale without increasing your ops team.
  • 17. Kubernetes • Kubernetes runs on few concepts: • Pod is the basic building block of Kubernetes–the smallest and simplest unit in the Kubernetes object model that you create or deploy. A Pod represents a running process on your cluster or set of containers. • ReplicationController ensures that a specified number of pod “replicas” are running at any one time. In other words, a ReplicationController makes sure that a pod or homogeneous set of pods are always up and available. If there are too many pods, it will kill some. If there are too few, the ReplicationController will start more • Service is an abstraction which defines a logical set of Pods and a policy by which to access them - sometimes called a micro-service. The set of Pods targeted by a Service is (usually) determined by a Label Selector
  • 18. Kubernetes • Horizontal scaling, Scale your application up and down with a simple command, with a UI, or automatically based on CPU usage • Automatic binpacking, Automatically places containers based on their resource requirements and other constraints, while not sacrificing availability. Mix critical and best-effort workloads in order to drive up utilization and save even more resources • Self-healing, Restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that don't respond to user-defined health check, and doesn't advertise them to clients until they are ready to serve
  • 19. Kubernetes • Rollouts and rollbacks, Kubernetes progressively rolls out changes to applications or its configuration, while monitoring application health to ensure it doesn't kill all your instances at the same time. If something goes wrong, Kubernetes will rollback the change. Take advantage of a growing ecosystem of deployment solutions • Secret and configuration management, Deploy and update secrets and application configuration without rebuilding your image and without exposing secrets in your stack configuration • etc.
  • 20. How, when and why to use them • Building distributed systems is not an easy task • They come with a lot of problems • Traditional approaches are not good… • We must sacrifice something - CAP theorem • A lot of choices scale horizontally or vertically, which database to use, RPC or REST,… • VMs or containers
  • 21. How, when and why to use them • Microservice architecture propose that every function is a service • One time is responsible for only that service (develop, test, deploy,…) • Easier to scale (horizontally) • If every service is packed inside container we got all the benefits (and problems) that containers brings us • Service is easier to deploy, if show poor performance just kill him and run new one • Pats vs cattle principle
  • 22. How, when and why to use them • This type of architecture is not a silver bullet • Bring it’s own problems and challenges • Good enough for distributed systems • Based on architectures used in Google, Netflix, Amazon, Facebook,… • Used in really big systems • Easier to scale • Easier to maintain • User can choose best language for service, language independent
  • 23. How, when and why to use them • Containers , orchestration engines and cloud computing lead to serverless computing • Focus on code, not servers • Serverless computing allows building and running applications and services without thinking about servers • Serverless computing is an event-driven application design and deployment paradigm in which computing resources are provided as scalable • Serverless computing is more cost-effective than renting or purchasing a fixed quantity of servers, which generally involves significant periods of underutilization or idle time