nats connector framework - boulder meetup

35
Simple, Fast, Secure Messaging for IoT, Cloud Native, and Microservices Boulder Meetup 6/7/2016

Upload: apcera

Post on 16-Apr-2017

321 views

Category:

Technology


8 download

TRANSCRIPT

Simple, Fast, Secure Messaging for IoT, Cloud Native, and Microservices

Boulder Meetup6/7/2016

Why do we need another messaging system?

We are in a Messaging Renaissance

Cloud Messaging is fastest growing segment of current messaging market. (Gartner 2013)

New requirements for IoT, mobile, big data, and micro-services● Legacy bloated platforms don’t work● Open source first

Massive sensor enablement wave● 20.8 billion connected things by 2020 (Gartner) ● Driving requirements for “Trusted IoT”

Created byDerek CollisonFounder and CEO at Apcera

๏ CTO, Chief Architect at VMware๏ Architected CloudFoundry๏ Technical Director at Google๏ SVP and Chief Architect at TIBCO

The Vision

Building Messaging Systems and Solutions > 20yrs

Experienced Messaging Team

✓NATS is made for developers who don’t have the time to be messaging experts

High-PerformanceAlways on and availableExtremely lightweightEasy to useAt Most Once DeliveryPublish/SubscribeDistributed QueueRequest/Reply

What is NATS?

๏ Performance๏ Simplicity

‣ Single binary‣ Text-based protocol! (http://nats.io/documentation/internals/nats-

protocol/)

‣ No external dependencies ๏ Availability over anything - Dial-tone๏ Small footprint & embeddable๏ Just what you need, and none of what you don’t

NATS DNA

๏ IoT Messaging๏ High Fan-out Messaging๏ Mobile and Big Data๏ Microservices transport๏ Service Discovery๏ Replacing legacy messaging systems

Some ways NATS is being used by developers

How simple is simple?

NATS is very, very simple and lightweight

NATS is very, very simple and lightweight

NATS is very, very simple and lightweight

*Read more on Daniel Wertheim’s Blog: http://danielwertheim.se/nats-what-a-beautiful-protocol/

How fast is fast?

NATS is very, very fast

NATS is very, very fast

*Read more on Richard Seroter’s blog: http://bit.ly/22dNlYZ

NATS = ~0 latency

*Read more on Tyler Treat’s blog: http://bravenewgeek.com/benchmarking-message-queue-latency/

NATS Streaming - Coming Soon!

16

● NATS Streaming is open source data streaming, powered by NATS● Features:○ At-least-once delivery○ Rate matching per subscriber○ Replay by time or seqno offset○ Last/initial value○ Durable subscribers

● Clusterable, extensible (modular) storage subsystem○ Memory○ File○ Future: Database/Other

Growing Ecosystem – Get involved!

Rapidly growing community of developers

•Hundreds of meetup members (San Francisco, Denver, Toronto, London, Barcelona)•Hundreds of developers providing input in NATS Slack Community•4,000+ stars on GitHub•Dozens of excellent blog posts from the development community on www.nats.io/blog

•Join the community! http://www.nats.io/community/

GopherCon Workshop on NATS

RSVP if you plan to attend: http://bit.ly/1XpeSq6

Broad Client Support

Apcera Supported Community

○ Go○ Elixir○ Java○ node.js○ C○ C#/.NET○ NGINX○ Python (Asyncio and

Tornado)○ Ruby

○ Arduino○ Erlang○ Haskell○ Lua○ PHP○ Perl○ Python (Twisted)○ Rust○ Scala○ Spring

Rapidly growing community of developers

Join the community! http://www.nats.io/community/

Connectors

๏ There is a need to bridge to other technologies ๏ Permanent๏ Temporary - Fill the Gap๏ Host an exchange where users can share connectors๏ Users gain exposure through OSS contributions

A Need for Connectors

๏ Simple - A way to bridge NATS and other technologies.

๏ Reusable๏ Not customized๏ Goal that a connector implementation will meet

about 75% of use cases.๏ Optionally uses a NATS connector framework for ease

of development

What is a Connector?

Connector Framework Architecture

Connector Framework

NATSOther

TechnologyConnector Plugin

๏ The NATS connector framework is a simple, straightforward, plugin-based driver.

๏ Reduces development time๏ Aimed toward legacy technologies๏ Java based๏ Exploring a golang based framework๏ Example - Redis Pub/Sub Connector

NATS connector framework

๏ The framework is not suited to all technologies๏ Embedding NATS elsewhere๏ Resource Restrictions๏ Other language bindings

Other Types of Connectors

Current Connectors

๏ Golden Rule๏ Think of the user base…

๏ Ease of use๏ Generalization๏ Stability

Development Guidelines

๏ Contributing is easy, just code a connector up and provide a link.

๏ Submit a PR or request an update the NATS website to link to your connector.Feel free to ping the slack channels

๏ Ask questions! #connectors slack channel๏ We’ll be happy to review your work.๏ http://www.nats.io/community - join Slack

Contributing

๏ Documentation๏ Overview, walkthrough, samples๏ Code

๏ Easy Installation๏ Simplicity drives usage๏ Little Configuration

๏ Logging/Tracing for debugging๏ Lower the frustration level

Development Guidelines - Ease of Use

๏ Configurable, but not overly so๏ Think 75% use case

๏ Defaults that just work๏ Suggestion: JSON read from URL

๏ …Or whatever makes sense

Development Guidelines - Generalization

๏ Unit Tests๏ Worth their weight in gold.

๏ Coverage๏ Check code coverage

๏ Fault Tolerant๏ Handle Corner Cases๏ Stay alive unless errors are truly fatal

Development Guidelines - Stability

• Submit a connector you build to us- Send a PR to nats-site repo on

Github with a link to your connector on nats.io/community

Accepted Connectors win you a NATS hoodie!

Win some LIMITED EDITION NATS #SWAG !