nats connector framework - boulder meetup
TRANSCRIPT
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
NATS is very, very simple and lightweight
*Read more on Daniel Wertheim’s Blog: http://danielwertheim.se/nats-what-a-beautiful-protocol/
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
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/
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/
๏ 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?
๏ 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
๏ 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 !
Colin [email protected]: @ColinSullivan01Github: ColinSullivan1
Brian [email protected]: @brianflannery
www.nats.io
Thank You!