SlideShare a Scribd company logo
1 of 56
Download to read offline
NATS in action
A Real time Microservices Architecture handled by NATS
1
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
2
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
3
● Almost 4 years working on devop & distributed projects.
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
4
● Almost 4 years working on devop & distributed projects.
● Still more a dev than op dude.
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
5
● Almost 4 years working on devop & distributed projects.
● Still more a dev than op dude.
● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past
experience. :P
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
6
● Almost 4 years working on devop & distributed projects.
● Still more a dev than op dude.
● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past
experience. :P
● Based in Barcelona.
Who am I?
Raül Pérez
Senior Engineer at Carrenza Ltd.
Twitter: @repejota
Github: https://github.com/repejota
Email: repejota@gmail.com
7
● Almost 4 years working on devop & distributed projects.
● Still more a dev than op dude.
● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past
experience. :P
● Based in Barcelona.
● Love startups & love remote work!
Microservices
8
Microservices
● Small autonomous services that work together.
9
● Divide and conquer approach.
Microservices
● Small autonomous services that work together.
● Communicate with lightweight mechanisms.
10
● Divide and conquer approach.
● HTTP/REST microservices. ( Request / Response )
Microservices
● Small autonomous services that work together.
● Communicate with lightweight mechanisms.
11
● Divide and conquer approach.
● HTTP/REST microservices. ( Request / Response )
● Message Systems for asynchronous communication. ( Publish/Subscribe )
Microservices
● Small autonomous services that work together.
● Communicate with lightweight mechanisms.
● The platform is composed of one or more stateless processes.
12
● Divide and conquer approach.
● HTTP/REST microservices. ( Request / Response )
● Message Systems for asynchronous communication. ( Publish/Subscribe )
● There is no shared data between different processes.
Microservices
● Small autonomous services that work together.
● Communicate with lightweight mechanisms.
● The platform is composed of one or more stateless processes.
● Designed to be distributed.
13
● Divide and conquer approach.
● HTTP/REST microservices. ( Request / Response )
● Message Systems for asynchronous communication. ( Publish/Subscribe )
● There is no shared data between different processes.
● Scaling is easy, each microservice can be executed in a different server.
Microservices … Why?
● It is quick to (re) write and to deploy.
14
● Simple application can be handled by less developers.
Microservices … Why?
● It is quick to (re) write and to deploy.
15
● Simple application can be handled by less developers.
● Developers do not need to know the entire platform to be productive.
Microservices … Why?
● It is quick to (re) write and to deploy.
● It knows that failures exist and how to handle them.
16
● Simple application can be handled by less developers.
● Developer do not need to know the entire platform to be productive.
● Defensive programming, services should not break.
Microservices … Why?
● It is quick to (re) write and to deploy.
● It knows that failures exist and how to handle them.
● KISS: Keep It Simple and Stupid.
17
● Simple application can be handled by less developers.
● Developer do not need to know the entire platform to be productive.
● Defensive programming, services should not break.
● It must provide one functionality.
Microservices … Why?
● It is quick to (re) write and to deploy.
● It knows that failures exist and how to handle them.
● KISS: Keep It Simple and Stupid.
● It must provide an API that other services can use.
18
● Simple application can be handled by less developers.
● Developer do not need to know the entire platform to be productive.
● Defensive programming, services should not break.
● It must provide one functionality.
● Rely on best practices.
NATS
19
What is NATS?
● Cloud-native message platform.
20
● Designed to natively support modern cloud architectures.
What is NATS?
● Cloud-native message platform.
● Highly performant.
21
● Designed to natively support modern cloud architectures.
● It is fast! Can handle millions of messages per second.
What is NATS?
● Cloud-native message platform.
● Highly performant.
● Extremely lightweight.
22
● Designed to natively support modern cloud architectures.
● It is fast! Can handle millions of messages per second.
● A single binary, easy to deploy without unnecessary complexity.
What is NATS?
● Cloud-native message platform.
● Highly performant.
● Extremely lightweight.
● Support for various messaging models and use cases.
23
● Designed to natively support modern cloud architectures.
● It is fast! Can handle millions of messages per second.
● A single binary, easy to deploy without unnecessary complexity.
● Request/Response, Publish/Subscribe, Queues.
What is NATS?
● Cloud-native message platform.
● Highly performant.
● Extremely lightweight.
● Support for various messaging models and use cases.
24
● Designed to natively support modern cloud architectures.
● It is fast! Can handle millions of messages per second.
● A single binary, easy to deploy without unnecessary complexity.
● Request/Response, Publish/Subscribe, Queues.
● Simple text based protocol.
Ernest
IAAS+PAAS Hybrid Cloud
Platform
25
Ernest : IAAS+PAAS Hybrid Cloud Platform
● Manage your infrastructure. (IAAS)
26
● Manage servers, networks, balancers etc ... of your platform.
Ernest : IAAS+PAAS Hybrid Cloud Platform
● Manage your infrastructure. (IAAS)
● Manage your platform. (PAAS)
27
● Manage servers, networks, balancers etc ... of your platform.
● Deploy and upgrade your application to the desired servers.
Ernest : IAAS+PAAS Hybrid Cloud Platform
● Manage your infrastructure. (IAAS)
● Manage your platform. (PAAS)
● Scaling.
28
● Manage servers, networks, balancers etc ... of your platform.
● Deploy and upgrade your application to the desired servers.
● Automate everything.
Ernest : IAAS+PAAS Hybrid Cloud Platform
● Manage your infrastructure. (IAAS)
● Manage your platform. (PAAS)
● Scaling.
29
● Manage servers, networks, balancers etc ... of your platform.
● Deploy and upgrade your application to the desired servers.
● Automate everything.
● Evolve your platform when you need and redeploy your platform.
Ernest : IAAS+PAAS Hybrid Cloud Platform
● Manage your infrastructure. (IAAS)
● Manage your platform. (PAAS)
● Scaling.
● Hybrid (Multiple Providers)
30
● Manage servers, networks, balancers etc ... of your platform.
● Deploy and upgrade your application to the desired servers.
● Evolve your infrastructure when you need and redeploy your platform.
● Automate everything.
● Do not rely on a single provider, use different ones with a single interface.
Architecture of Ernest
31
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
Architecture of Ernest
32
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Architecture of Ernest
33
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Events + State
Architecture of Ernest
34
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Events + State
Business Logic
Real Time(almost)
Architecture of Ernest
35
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Events + State
Business Logic
Real Time(almost)
VMWare
Architecture of Ernest
36
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Events + State
Business Logic
Real Time(almost)
VMWare
AWS
Architecture of Ernest
37
Provider
Provider
Provider
MicroservicesNATS
FSM
LogsDB
Public
API
&
UI
Monitor
Provider
REST API
Events + State
Business Logic
Real Time(almost)
VMWare
AWS
Others...
Ernest + NATS
38
Ernest + NATS
● NATS is the central communication system for Ernest.
39
● Ernest core is a series of microservices talking each other through NATS.
Ernest + NATS
● NATS is the central communication system for Ernest.
● Ernest executes workflows defined by the user to build environments.
40
● Ernest core is a series of microservices talking each other through NATS.
● Users posts a workflow written in a YAML file to be processed.
Workflow example
41
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
Workflow example
42
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
● Each environment has an unique name.
Workflow example
43
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
● Each environment has an unique name.
● Action: Create a network on our provider.
Workflow example
44
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
● Each environment has an unique name.
● Action: Create a network on our provider.
● Action: Create an instance type for our app.
Workflow example
45
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
● Each environment has an unique name.
● Action: Create a network on our provider.
● Action: Create an instance type for our app.
● Count determines the number of servers.
Workflow example
46
---
name: my-awesome-example
networks:
- name: network-web
subnet: 10.2.0.0/24
instances:
- name: instance-web
image: images/centos65-tty-sudo-disabled-nodejs-mongodb
count: 1
cpus: 1
memory: 4GB
disks:
- 40GB
network:
name: network-web
start_ip: "10.2.0.100"
provisioner:
- git clone https://host/user/myapp && make install && make run
● Simple example.
● Each environment has an unique name.
● Action: Create a network on our provider.
● Action: Create an instance type for our app.
● Count determines the number of servers.
● Action: Deploy your application and run it.
Ernest + NATS
● NATS is the central communication system for Ernest.
● A workflow composed by multiple actions is executed by the user.
● A finite state machine handles the state for the platform.
47
● Ernest core is a series of microservices talking each other through NATS.
● Users posts a workflow written in a YAML file to be processed.
● A list of actions are executed, one per microservice.
Ernest + NATS
● NATS is the central communication system for Ernest.
● A workflow composed by multiple actions is executed by the user.
● A finite state machine handles the state for the platform.
● Publish Subscribe is the main pattern used.
48
● Ernest core is a series of microservices talking each other through NATS.
● Users posts a workflow written in a YAML file to be processed.
● A list of actions are executed, one per microservice.
● Actions are published to NATS ( by a topic ) and microservices are
subscribed to execute them.
Ernest : Numbers
● Less than 5 developers.
49
● A developer “owns” a component / microservice.
Ernest : Numbers
● Less than 5 developers.
● Started as a prototype in Ruby, moving almost everything to Go.
50
● A developer “owns” a component / microservice.
● Fast to develop, less errors, less dependencies.
Ernest : Numbers
● Less than 5 developers.
● Started as a prototype in Ruby, moving almost everything to Go.
● Almost 50 microservices.
51
● A developer “owns” a component / microservice.
● Fast to develop, less errors, less dependencies.
● Unix philosophy, do one thing and do it well done.
Ernest : Numbers
● Less than 5 developers.
● Started as a prototype in Ruby, moving almost everything to Go.
● Almost 50 microservices.
● Everything specified. Everything tested.
52
● A developer “owns” a component / microservice.
● Fast to develop, less errors, less dependencies.
● Unix philosophy, do one thing and do it well done.
● Using TDD on each part of the platform.
Ernest : Numbers
● Less than 5 developers.
● Started as a prototype in Ruby, moving almost everything to Go.
● Almost 50 microservices.
● Everything specified. Everything tested.
53
● A developer “owns” a component / microservice.
● Fast to develop, less errors, less dependencies.
● Unix philosophy, do one thing and do it well done.
● Using TDD on each part of the platform.
● Documentation on APIs, documentation on payloads.
Resources
● http://microservices.io
● https://en.wikipedia.org/wiki/Cloud_computing
● http://nats.io
54
● http://carrenza.com
● http://apcera.com
Questions?
55
Thank you!
56

More Related Content

What's hot

Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Apcera
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityNATS
 
The 3 Models in the NGINX Microservices Reference Architecture
The 3 Models in the NGINX Microservices Reference ArchitectureThe 3 Models in the NGINX Microservices Reference Architecture
The 3 Models in the NGINX Microservices Reference ArchitectureNGINX, Inc.
 
A Cassandra driver from and for the Lua community
A Cassandra driver from and for the Lua communityA Cassandra driver from and for the Lua community
A Cassandra driver from and for the Lua communityThibault Charbonnier
 
Introducing the Microservices Reference Architecture Version 1.2
Introducing the Microservices Reference Architecture Version 1.2Introducing the Microservices Reference Architecture Version 1.2
Introducing the Microservices Reference Architecture Version 1.2NGINX, Inc.
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSNATS
 
How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningHow Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningApcera
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSApcera
 
Developing a user-friendly OpenResty application
Developing a user-friendly OpenResty applicationDeveloping a user-friendly OpenResty application
Developing a user-friendly OpenResty applicationThibault Charbonnier
 
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATS
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATSDeep Dive into Building a Secure & Multi-tenant SaaS Solution with NATS
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATSNATS
 
AWS Lambda and serverless Java | DevNation Live
AWS Lambda and serverless Java | DevNation LiveAWS Lambda and serverless Java | DevNation Live
AWS Lambda and serverless Java | DevNation LiveRed Hat Developers
 
A Kong retrospective: from 0.10 to 0.13
A Kong retrospective: from 0.10 to 0.13A Kong retrospective: from 0.10 to 0.13
A Kong retrospective: from 0.10 to 0.13Thibault Charbonnier
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATSApcera
 
What's New in NGINX Plus R10?
What's New in NGINX Plus R10?What's New in NGINX Plus R10?
What's New in NGINX Plus R10?NGINX, Inc.
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and MicroservicesNATS for Modern Messaging and Microservices
NATS for Modern Messaging and MicroservicesApcera
 
gRPC: The Story of Microservices at Square
gRPC: The Story of Microservices at SquaregRPC: The Story of Microservices at Square
gRPC: The Story of Microservices at SquareApigee | Google Cloud
 
Streams API (Web Engines Hackfest 2015)
Streams API (Web Engines Hackfest 2015)Streams API (Web Engines Hackfest 2015)
Streams API (Web Engines Hackfest 2015)Igalia
 
Neutron high availability open stack architecture openstack israel event 2015
Neutron high availability  open stack architecture   openstack israel event 2015Neutron high availability  open stack architecture   openstack israel event 2015
Neutron high availability open stack architecture openstack israel event 2015Arthur Berezin
 
NATS Connect Live!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!NATS
 
KubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the FutureKubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the FutureNATS
 

What's hot (20)

Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & Connectivity
 
The 3 Models in the NGINX Microservices Reference Architecture
The 3 Models in the NGINX Microservices Reference ArchitectureThe 3 Models in the NGINX Microservices Reference Architecture
The 3 Models in the NGINX Microservices Reference Architecture
 
A Cassandra driver from and for the Lua community
A Cassandra driver from and for the Lua communityA Cassandra driver from and for the Lua community
A Cassandra driver from and for the Lua community
 
Introducing the Microservices Reference Architecture Version 1.2
Introducing the Microservices Reference Architecture Version 1.2Introducing the Microservices Reference Architecture Version 1.2
Introducing the Microservices Reference Architecture Version 1.2
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
 
How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningHow Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine Learning
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATS
 
Developing a user-friendly OpenResty application
Developing a user-friendly OpenResty applicationDeveloping a user-friendly OpenResty application
Developing a user-friendly OpenResty application
 
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATS
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATSDeep Dive into Building a Secure & Multi-tenant SaaS Solution with NATS
Deep Dive into Building a Secure & Multi-tenant SaaS Solution with NATS
 
AWS Lambda and serverless Java | DevNation Live
AWS Lambda and serverless Java | DevNation LiveAWS Lambda and serverless Java | DevNation Live
AWS Lambda and serverless Java | DevNation Live
 
A Kong retrospective: from 0.10 to 0.13
A Kong retrospective: from 0.10 to 0.13A Kong retrospective: from 0.10 to 0.13
A Kong retrospective: from 0.10 to 0.13
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
What's New in NGINX Plus R10?
What's New in NGINX Plus R10?What's New in NGINX Plus R10?
What's New in NGINX Plus R10?
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and MicroservicesNATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices
 
gRPC: The Story of Microservices at Square
gRPC: The Story of Microservices at SquaregRPC: The Story of Microservices at Square
gRPC: The Story of Microservices at Square
 
Streams API (Web Engines Hackfest 2015)
Streams API (Web Engines Hackfest 2015)Streams API (Web Engines Hackfest 2015)
Streams API (Web Engines Hackfest 2015)
 
Neutron high availability open stack architecture openstack israel event 2015
Neutron high availability  open stack architecture   openstack israel event 2015Neutron high availability  open stack architecture   openstack israel event 2015
Neutron high availability open stack architecture openstack israel event 2015
 
NATS Connect Live!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!
 
KubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the FutureKubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
 

Similar to Nats in action a real time microservices architecture handled by nats

MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureNGINX, Inc.
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern LaunguageInho Kang
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxRavi Yadav
 
Integration Microservices
Integration MicroservicesIntegration Microservices
Integration MicroservicesKasun Indrasiri
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesMirantis
 
Openshift serverless Solution
Openshift serverless SolutionOpenshift serverless Solution
Openshift serverless SolutionRyan ZhangCheng
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Ambassador Labs
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open SourceAll Things Open
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservicesRon Barabash
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageMayaData Inc
 
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEA
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEANGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEA
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEANGINX, Inc.
 
Microservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsMicroservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsAraf Karsh Hamid
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Peter Lawrey
 
Microservices at ibotta pitfalls and learnings
Microservices at ibotta pitfalls and learningsMicroservices at ibotta pitfalls and learnings
Microservices at ibotta pitfalls and learningsMatthew Reynolds
 
Horizontal Scaling for Millions of Customers!
Horizontal Scaling for Millions of Customers! Horizontal Scaling for Millions of Customers!
Horizontal Scaling for Millions of Customers! elangovans
 
Overview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoOverview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoGianluca Arbezzano
 

Similar to Nats in action a real time microservices architecture handled by nats (20)

MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern Launguage
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptx
 
Integration Microservices
Integration MicroservicesIntegration Microservices
Integration Microservices
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh Architectures
 
Openshift serverless Solution
Openshift serverless SolutionOpenshift serverless Solution
Openshift serverless Solution
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
Microservices
MicroservicesMicroservices
Microservices
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
 
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEA
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEANGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEA
NGINX Microservices Reference Architecture: What’s in Store for 2019 – EMEA
 
Microservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsMicroservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration Patterns
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016
 
Microservices at ibotta pitfalls and learnings
Microservices at ibotta pitfalls and learningsMicroservices at ibotta pitfalls and learnings
Microservices at ibotta pitfalls and learnings
 
Horizontal Scaling for Millions of Customers!
Horizontal Scaling for Millions of Customers! Horizontal Scaling for Millions of Customers!
Horizontal Scaling for Millions of Customers!
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Overview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoOverview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca Arbezzano
 
The Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial Services
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Nats in action a real time microservices architecture handled by nats

  • 1. NATS in action A Real time Microservices Architecture handled by NATS 1
  • 2. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 2
  • 3. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 3 ● Almost 4 years working on devop & distributed projects.
  • 4. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 4 ● Almost 4 years working on devop & distributed projects. ● Still more a dev than op dude.
  • 5. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 5 ● Almost 4 years working on devop & distributed projects. ● Still more a dev than op dude. ● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past experience. :P
  • 6. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 6 ● Almost 4 years working on devop & distributed projects. ● Still more a dev than op dude. ● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past experience. :P ● Based in Barcelona.
  • 7. Who am I? Raül Pérez Senior Engineer at Carrenza Ltd. Twitter: @repejota Github: https://github.com/repejota Email: repejota@gmail.com 7 ● Almost 4 years working on devop & distributed projects. ● Still more a dev than op dude. ● Proud to be a Gopher after a looong PHP/Ruby/Python/Node.js past experience. :P ● Based in Barcelona. ● Love startups & love remote work!
  • 9. Microservices ● Small autonomous services that work together. 9 ● Divide and conquer approach.
  • 10. Microservices ● Small autonomous services that work together. ● Communicate with lightweight mechanisms. 10 ● Divide and conquer approach. ● HTTP/REST microservices. ( Request / Response )
  • 11. Microservices ● Small autonomous services that work together. ● Communicate with lightweight mechanisms. 11 ● Divide and conquer approach. ● HTTP/REST microservices. ( Request / Response ) ● Message Systems for asynchronous communication. ( Publish/Subscribe )
  • 12. Microservices ● Small autonomous services that work together. ● Communicate with lightweight mechanisms. ● The platform is composed of one or more stateless processes. 12 ● Divide and conquer approach. ● HTTP/REST microservices. ( Request / Response ) ● Message Systems for asynchronous communication. ( Publish/Subscribe ) ● There is no shared data between different processes.
  • 13. Microservices ● Small autonomous services that work together. ● Communicate with lightweight mechanisms. ● The platform is composed of one or more stateless processes. ● Designed to be distributed. 13 ● Divide and conquer approach. ● HTTP/REST microservices. ( Request / Response ) ● Message Systems for asynchronous communication. ( Publish/Subscribe ) ● There is no shared data between different processes. ● Scaling is easy, each microservice can be executed in a different server.
  • 14. Microservices … Why? ● It is quick to (re) write and to deploy. 14 ● Simple application can be handled by less developers.
  • 15. Microservices … Why? ● It is quick to (re) write and to deploy. 15 ● Simple application can be handled by less developers. ● Developers do not need to know the entire platform to be productive.
  • 16. Microservices … Why? ● It is quick to (re) write and to deploy. ● It knows that failures exist and how to handle them. 16 ● Simple application can be handled by less developers. ● Developer do not need to know the entire platform to be productive. ● Defensive programming, services should not break.
  • 17. Microservices … Why? ● It is quick to (re) write and to deploy. ● It knows that failures exist and how to handle them. ● KISS: Keep It Simple and Stupid. 17 ● Simple application can be handled by less developers. ● Developer do not need to know the entire platform to be productive. ● Defensive programming, services should not break. ● It must provide one functionality.
  • 18. Microservices … Why? ● It is quick to (re) write and to deploy. ● It knows that failures exist and how to handle them. ● KISS: Keep It Simple and Stupid. ● It must provide an API that other services can use. 18 ● Simple application can be handled by less developers. ● Developer do not need to know the entire platform to be productive. ● Defensive programming, services should not break. ● It must provide one functionality. ● Rely on best practices.
  • 20. What is NATS? ● Cloud-native message platform. 20 ● Designed to natively support modern cloud architectures.
  • 21. What is NATS? ● Cloud-native message platform. ● Highly performant. 21 ● Designed to natively support modern cloud architectures. ● It is fast! Can handle millions of messages per second.
  • 22. What is NATS? ● Cloud-native message platform. ● Highly performant. ● Extremely lightweight. 22 ● Designed to natively support modern cloud architectures. ● It is fast! Can handle millions of messages per second. ● A single binary, easy to deploy without unnecessary complexity.
  • 23. What is NATS? ● Cloud-native message platform. ● Highly performant. ● Extremely lightweight. ● Support for various messaging models and use cases. 23 ● Designed to natively support modern cloud architectures. ● It is fast! Can handle millions of messages per second. ● A single binary, easy to deploy without unnecessary complexity. ● Request/Response, Publish/Subscribe, Queues.
  • 24. What is NATS? ● Cloud-native message platform. ● Highly performant. ● Extremely lightweight. ● Support for various messaging models and use cases. 24 ● Designed to natively support modern cloud architectures. ● It is fast! Can handle millions of messages per second. ● A single binary, easy to deploy without unnecessary complexity. ● Request/Response, Publish/Subscribe, Queues. ● Simple text based protocol.
  • 26. Ernest : IAAS+PAAS Hybrid Cloud Platform ● Manage your infrastructure. (IAAS) 26 ● Manage servers, networks, balancers etc ... of your platform.
  • 27. Ernest : IAAS+PAAS Hybrid Cloud Platform ● Manage your infrastructure. (IAAS) ● Manage your platform. (PAAS) 27 ● Manage servers, networks, balancers etc ... of your platform. ● Deploy and upgrade your application to the desired servers.
  • 28. Ernest : IAAS+PAAS Hybrid Cloud Platform ● Manage your infrastructure. (IAAS) ● Manage your platform. (PAAS) ● Scaling. 28 ● Manage servers, networks, balancers etc ... of your platform. ● Deploy and upgrade your application to the desired servers. ● Automate everything.
  • 29. Ernest : IAAS+PAAS Hybrid Cloud Platform ● Manage your infrastructure. (IAAS) ● Manage your platform. (PAAS) ● Scaling. 29 ● Manage servers, networks, balancers etc ... of your platform. ● Deploy and upgrade your application to the desired servers. ● Automate everything. ● Evolve your platform when you need and redeploy your platform.
  • 30. Ernest : IAAS+PAAS Hybrid Cloud Platform ● Manage your infrastructure. (IAAS) ● Manage your platform. (PAAS) ● Scaling. ● Hybrid (Multiple Providers) 30 ● Manage servers, networks, balancers etc ... of your platform. ● Deploy and upgrade your application to the desired servers. ● Evolve your infrastructure when you need and redeploy your platform. ● Automate everything. ● Do not rely on a single provider, use different ones with a single interface.
  • 39. Ernest + NATS ● NATS is the central communication system for Ernest. 39 ● Ernest core is a series of microservices talking each other through NATS.
  • 40. Ernest + NATS ● NATS is the central communication system for Ernest. ● Ernest executes workflows defined by the user to build environments. 40 ● Ernest core is a series of microservices talking each other through NATS. ● Users posts a workflow written in a YAML file to be processed.
  • 41. Workflow example 41 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example.
  • 42. Workflow example 42 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example. ● Each environment has an unique name.
  • 43. Workflow example 43 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example. ● Each environment has an unique name. ● Action: Create a network on our provider.
  • 44. Workflow example 44 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example. ● Each environment has an unique name. ● Action: Create a network on our provider. ● Action: Create an instance type for our app.
  • 45. Workflow example 45 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example. ● Each environment has an unique name. ● Action: Create a network on our provider. ● Action: Create an instance type for our app. ● Count determines the number of servers.
  • 46. Workflow example 46 --- name: my-awesome-example networks: - name: network-web subnet: 10.2.0.0/24 instances: - name: instance-web image: images/centos65-tty-sudo-disabled-nodejs-mongodb count: 1 cpus: 1 memory: 4GB disks: - 40GB network: name: network-web start_ip: "10.2.0.100" provisioner: - git clone https://host/user/myapp && make install && make run ● Simple example. ● Each environment has an unique name. ● Action: Create a network on our provider. ● Action: Create an instance type for our app. ● Count determines the number of servers. ● Action: Deploy your application and run it.
  • 47. Ernest + NATS ● NATS is the central communication system for Ernest. ● A workflow composed by multiple actions is executed by the user. ● A finite state machine handles the state for the platform. 47 ● Ernest core is a series of microservices talking each other through NATS. ● Users posts a workflow written in a YAML file to be processed. ● A list of actions are executed, one per microservice.
  • 48. Ernest + NATS ● NATS is the central communication system for Ernest. ● A workflow composed by multiple actions is executed by the user. ● A finite state machine handles the state for the platform. ● Publish Subscribe is the main pattern used. 48 ● Ernest core is a series of microservices talking each other through NATS. ● Users posts a workflow written in a YAML file to be processed. ● A list of actions are executed, one per microservice. ● Actions are published to NATS ( by a topic ) and microservices are subscribed to execute them.
  • 49. Ernest : Numbers ● Less than 5 developers. 49 ● A developer “owns” a component / microservice.
  • 50. Ernest : Numbers ● Less than 5 developers. ● Started as a prototype in Ruby, moving almost everything to Go. 50 ● A developer “owns” a component / microservice. ● Fast to develop, less errors, less dependencies.
  • 51. Ernest : Numbers ● Less than 5 developers. ● Started as a prototype in Ruby, moving almost everything to Go. ● Almost 50 microservices. 51 ● A developer “owns” a component / microservice. ● Fast to develop, less errors, less dependencies. ● Unix philosophy, do one thing and do it well done.
  • 52. Ernest : Numbers ● Less than 5 developers. ● Started as a prototype in Ruby, moving almost everything to Go. ● Almost 50 microservices. ● Everything specified. Everything tested. 52 ● A developer “owns” a component / microservice. ● Fast to develop, less errors, less dependencies. ● Unix philosophy, do one thing and do it well done. ● Using TDD on each part of the platform.
  • 53. Ernest : Numbers ● Less than 5 developers. ● Started as a prototype in Ruby, moving almost everything to Go. ● Almost 50 microservices. ● Everything specified. Everything tested. 53 ● A developer “owns” a component / microservice. ● Fast to develop, less errors, less dependencies. ● Unix philosophy, do one thing and do it well done. ● Using TDD on each part of the platform. ● Documentation on APIs, documentation on payloads.
  • 54. Resources ● http://microservices.io ● https://en.wikipedia.org/wiki/Cloud_computing ● http://nats.io 54 ● http://carrenza.com ● http://apcera.com