SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Andrea Goulet
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfFurqanuddin10
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)Max Lee
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdfkalichargn70th171
 
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdfImplementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdfVictor Lopez
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems ApproachNeo4j
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024Shane Coughlan
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with StrimziStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzisteffenkarlsson2
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareinfo611746
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfMehmet Akar
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAlluxio, Inc.
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfkalichargn70th171
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfmbmh111980
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationHelp Desk Migration
 
IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024vaibhav130304
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1KnowledgeSeed
 

Kürzlich hochgeladen (20)

Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdfImplementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with StrimziStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data Migration
 
IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 

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