Nats

What are persistent logs? In this context, a log is an ordered sequence of messages that you can append to, but cannot go back and change existing messages. The persistent bit simply means that they are remembered and potentially durable (on disk) beyond server restarts.
What is NATS Streaming? NATS Streaming is a lightweight, streaming platform built on top of NATS that provides an API for persistent logs.
A few of its features include: Read More…

Alchemy is an in house trading platform built for Standard Bank South Africa’s structured solutions desk.
The system was introduced to give the desk the ability to book exotic trade types in as short a time period as possible. Exotic trades as opposed to vanilla trades are complex in nature, the quantitative models in integration of those models usually take months to glue together… enter Alchemy.
An agile software development approach fits the scenario best and allows incremental development of products or trades into alchemy. Read More…

Here at RapidLoop, we create solutions for operational insight. OpsDash is a server, service, app metric and database monitoring solution that provides intelligent, customizable dashboards and spam-free alerting.
The OpsDash Architecture The OpsDash SaaS product uses a modern, distributed microservice based architecture. It runs on the Google Cloud Platform and also makes use of GCP services like PubSub and Load Balancers. All backend components of the OpsDash product are written entirely in Go. Read More…

Speaker: Karolis Rusenas, Technical Lead at StorageOS
When: Wednesday, August 23rd at 1PM New York / 6PM London
StorageOS enables users to deploy database workloads inside containers and use local node storage without the fear of losing data and without frustration of slow disks.
Karolis Rusenas is the Tech Lead at StorageOS, and has been involved in developing the platform from the early days. StorageOS is a Golang based platform, and as a result makes use of popular Go tools - including NATS. Read More…

Over the last two years, I have used NATS extensively in many projects. In this blog post I would like to highlight some pros and cons to help you decide whether NATS is the right tool for you.
At StorageOS, we are building a system that provides persistent storage for containers. StorageOS enables users to deploy database workloads inside containers and use local node storage without the fear of losing data and without frustration of slow disks. Read More…

I am studying Physics at UBC (University of British Columbia), and am a Software Engineer at Aida. Aida is an AI startup building a SaaS platform that provides fast, accurate, and automated assistance for customer support. Aida automatically learns questions and answers from past agent transactions and accurately responds to common support questions which typically account for 10%-30% of ticket volume. Unlike conventional chatbots, Aida does not rely on hand crafted, rule based templates which can only cope with a narrow range of inputs and is incredibly difficult to keep up to date. Read More…

Speaker: Colin Sullivan, Principal Engineer at NATS.io
When: Wednesday, June 14th, 2017 10:00AM - 11:00AM PDT
Developers using NATS are looking for simplicity and performance in deploying their cloud native applications. As Prometheus and Grafana become increasingly popular, combining these technologies to monitor NATS has been a common request from our developer community. In May, we released a Prometheus exporter in beta. This webinar will give an overview of the exporter, and using this with Grafana for monitoring. Read More…

Last Monday, the 2017 edition of the GopherFest was held and we also gave a quick talk on how we added Context support to the NATS client, a feature which has been requested since around the time of the Go 1.7 release. As the context package now is part of Go, many more library authors are adopting it to support /cancellation propagation/ for blocking calls, making up for more readable code: Read More…

Speaker: Jack Li, Senior Infrastructure Engineer at Clarifai
When: Wednesday, May 10th at 3PM New York / 12PM San Francisco
Clarifai is a machine learning company which aims to make artificial intelligence accessible to the entire world. Their platform allows users to tap into powerful machine learning algorithms while abstracting away the technical minutiae of how the algorithms work and the infrastructure scaling problems of building AI applications from scratch. Read More…

Speaker: R.I. Pienaar
When: Wednesday, April 26th, at 12:30 PM New York / 9:30 AM San Francisco
R.I. Pienaar is the creator of MCollective, which was sold to Puppet Labs. His new project - Choria - simplifies the operational aspects of using MCollective, and NATS has been key to providing simplicity and scalability.
This webinar will share more information about what Choria is, why NATS was chosen for the messaging layer, and what the results have been so far! Read More…

My name is R.I. Pienaar, I’m a freelance DevOps architect. I designed and wrote a tool called The Marionette Collective, now owned by Puppet Inc. I maintain a blog at devco.net and you can follow me on twitter at @ripienaar.
I’d like to thank NATS team for reaching out and giving me the opportunity to talk about our use of NATS in a new project called Choria that upgrades The Marionette Collective for a more modern environment. Read More…

Clarifai is a machine learning company which aims to make artificial intelligence accessible to the entire world. Our platform allows users to tap into powerful machine learning algorithms while abstracting away the technical minutiae of how the algorithms work and the infrastructure scaling problems of building AI applications from scratch.
Some of the machine learning algorithms that we run for users can take a few seconds to several minutes to complete. Read More…

Equine Register provides the government, industry and members of the public with bespoke digital tools and services that increase equine welfare and combat criminal activity. We are actively replacing legacy paper-based systems with smartphone and web delivered solutions which provide unequivocal information regarding the identity, history, health and ownership of an equine from it’s birth onwards.
I am responsible for the design and implementation of the architecture providing our RESTful API, which needs to serve an array of different Clients and be capable of supporting new functionality with minimal delay and impact. Read More…

The Snap initiative spearheaded by Canonical, Dell, Samsung, Intel, The Linux Foundation and others, enables a single binary to run securely on any Linux system (desktop, mobile, cloud, IoT - you name it) – a standard approach providing flexibility, simplicity, and security. Moreover, all of the various Snap-enabled applications need to communicate with a multitude of devices and systems.
NATS is a messaging system all about simplicity, security, and performance. It’s a single binary with no external dependencies, and just a few MB in size. Read More…

Greta is a Swedish startup that wants to change the way content is delivered on the internet. Their team has developed a technology for peer-to-peer content delivery over webRTC, which uses NATS to create a rapid, highly scalable webRTC signaling system.
If you’d like to come learn more about what the Greta team have built, and where NATS fits in, please RSVP and join us on December 6th.
Dennis Mårtensson, Co-Founder and CTO at Greta, will give an overview and answer questions, and we are excited to hear from him! Read More…

Introduction - Camel, NATS and Apcera Recently at Logimethods we’ve developed a new Camel-Nats component that can deploy on premise (non-cloud), and through the Apcera platform. In this blog, we’ll introduce this new component and explain why we believe that it was a critical missing link for organizations trying to develop an integration platform based on open source tools and cloud infrastructure.
If you are not familiar with Apache Camel, a “Component” is another term for an adapter built using Camel framework. Read More…

NATS is about connecting different components: this allows you to test the components individually as well as their integration. As such, it’s essential to be able to generate and inject NATS messages. This is where a tool such as Gatling (an open-source load testing framework) is useful.
The Missing Piece (Until Now) To generate and send messages to NATS, you could use the Java client for NATS (aka JNATS) by implementing your own Java code. Read More…

The NATS team will be hosting a webinar on Wednesday, October 19th at 11AM Pacific / 2PM Eastern.
This webinar will feature Ryan Neal, the Head of Infrastructure at Netlify. Netlify is a platform for deploying high-performance websites and applications, serving up billions pageviews monthly for sites like: Uber, Vice Media, and Wikia to name a few.
Ryan will discuss why they selected NATS, his experience with NATS for Netlify’s data logging and control plane (for example using Logrus with a NATS hook, a connector for using NATS with Elastic, etc. Read More…

StrangeLoop began in 2009, as an event focused on distributed systems, security, emerging programming languages, and the like. This year nearly 1300 attendees came to StrangeLoop, and tickets were gone in less than 30 minutes after going on sale.
Needless to say, StrangeLoop is one of the highlights of the calendar for anyone writing modern software systems. The focus is on interesting, original, and technical presentations, as the organizers explain: Read More…

I am in the process of launching a company I’ve founded in the IoT sensors space. I hope to be able to share more details very soon, but I wanted to share what I can in the meantime with the developer community about how we are using NATS in our IoT messaging initiatives and would be very interested in any feedback, suggestions or questions!
Our platform is based on an IoT network of distributed sensors. Read More…

For those of you who might have read the previous post I did on Docker + NATS for Microservices, you’ll recall we took an in-depth look at using Docker Compose with NATS.
That blog post was done a few days prior to DockerCon, and as expected Docker made many interesting announcements at DockerCon. One of the main things announced that week was Docker 1.12.
1.12 includes Swarm mode which can be used for assembling a cluster of Docker Engines and running workloads on them. Read More…

Some words about the Ariane project: While the DevOps trend is reducing application delivery time with automation on any step of the deployment, we still need to reduce the time to understand complex distributed applications:
We still rely on hand-written technical documentations and diagrams; These documentations and diagrams are dispatched across teams (silo effect); The documentations and diagrams are also often not up to date (technical debt effect). Knowledge management is a key factor in reducing silo effect and improving the integration of new team members. Read More…

The NATS team will be hosting a webinar on Tuesday, August 30th at 2PM Eastern Time.
Regardless of if you are interested in architecting an IoT network, moving a monolithic application to a microservices approach, or building cloud native applications, the majority of messaging systems were not designed with these paradigms in mind.
Modern systems require a messaging infrastructure built for the scale, flexibility, and speed of today’s distributed systems. Read More…

Netlify is the leading platform for deploying high performance websites and applications. The traditional way of making websites is being disrupted by technologies like static site generators, build automation, and CDN hosting. Netlify is building the modern day platform that developers and companies use to manage and publish their content online. Launched in March 2015, Netlify already serves close to a billion page views per month for thousands of developers and clients such as WeWork, Wikia, Sequoia Capital, Uber, and Vice Media. Read More…

Wow. It’s been a busy summer so far, and it’s only half over! As product manager for NATS, this is my first blog post, and fortunately it comes with some great news. In case you missed the announcement at GopherCon 2016 in Denver last week, we just released a major new addition to the NATS family: NATS Streaming.
Why NATS Streaming? Since we formed our dedicated NATS team at Apcera in July of last year, the #1 comment we’ve received from the user community is something like this: “Wow, we love how easy NATS is to set up and develop with. Read More…

Buzzwords are everywhere in our industry. “Microservices”, “Serverless computing”, “Nanoservices”, “Containerized” - you could fill a whole blog post just with these overused phrases. If you cut through the terminology flavor of the month, there are some very important common thread for application developers. One is simplicity. Regardless of what architectural approach you’re using - and what you may or may not refer to it as - you want it just work. Read More…

No Technology is an Island - no matter how cool & innovative you think it is. Another way to say it would be: if you don’t participate in a broader ecosystem you will perish. Whether the developer has their favorite toolchain, or a customer wants to incorporate it into their existing IT infrastructure, people will demand integration.
One of life’s best lessons is simple things tend to win. So that is why we are so excited to update everyone about the progress the NATS community has made in a few short weeks since the launch of our Connector Framework. Read More…

NATS as the IoT mobile messaging system for an earthquake early warning network I’m a programmer. I like to find difficult problems to solve, and work on effective solutions to these problems. We’ve all seen earthquakes covered in the news, sadly, , and earthquakes are on the rise globally. The average frequency and magnitude of earthquakes has increased recently, and more people than ever are living in urban areas which are dangerous during earthquakes. Read More…

The Linux Foundation’s OpenIoT Summit was held in San Diego in April, and for those of you who attended and maybe went home with some swag, you’ll remember the NATS team had a booth. What you may not remember a month later are the details of Larry McQueary’s overview of NATS at one of the speaking sessions. As a refresher, the recording of the talk is now available for viewing on YouTube. Read More…

NATS is outstanding at moving data between endpoints - but what kinds of endpoints? You may have legacy applications that use some proprietary data sources, or perhaps you are migrating from another messaging technology onto NATS. For cases like these, you’ll want to take advantage of the NATS Connector Framework.
The NATS Connector Framework The NATS Connector Framework provides a foundation to build a connector - an application that moves data into and out of NATS. Read More…

The REST to NATS proxy project sohlich/nats-proxy is the micro framework that provides a bridge between HTTP and NATS. To introduce the problem, we first compare the HTTP and NATS communication models. The table below represents the matching of HTTP and NATS concepts and what do they provide.
HTTP NATS Request/Response Request/Reply synchronous communication Websocket Publish/Subscribe real-time asynchronous communication As you can see, the NATS provides both synchronous and asynchronous communication between clients. Read More…

In the context of a submittal to the Samsung Maker’s Against Drought Challenge (more on that here) extended hackathon, my team has developed a partial solution to the very serious California drought crisis. I say partial since this problem is so vast that many solutions are required to operate collaboratively to fully solve it.
The solution utilizes physical water system monitoring and control with Samsung ARTIK 10 IoT modules, and a Particle Photon module running the arduino-nats NATS client. Read More…

In this post we’re going to discuss using Micro on NATS. It includes discussion around service discovery, synchronous and asynchronous communication for microservices.
If you would like to learn more about Micro first, check out the blog post detailing the toolkit here.
Let’s get down to business.
What is NATS? NATS is an open source cloud native messaging system or more simply a message bus. NATS was created by Derek Collison, the founder of Apcera. Read More…

At Sendify we’ve been using nats as a simple and effective means of communicating between our backend services. I came across Nats a few years ago when building a relatively small microservice backed system and it worked wonderfully. With that experience, I introduced it to Sendify this year as the main nervous system for inter-service communication.
Our system is mainly processing api requests to various freight carriers based on user searches though we’re also building integration for public api access as well. Read More…

A few weeks ago, the Apcera Platform gained a new service gateway. The new NATS service gateway will allow Apcera Platform users to quickly give their apps a NATS server - without sacrificing security or reliability. In this post, we’re going to demonstrate a simple server that broadcasts data to some clients over NATS.
As a distributed messaging system, NATS is lightweight, high performance, and secure - making it ideal for modern architectures. Read More…

As some of you may have noted, last week a new version of the nats-top monitor for NATS has been made available for download on Github:
https://github.com/nats-io/nats-top/releases/tag/v0.2.0
If you’re looking for a bit more information about nats-top, my talk last fall at a NATS meetup on nats-top is here:
As nats-top is a top like monitoring tool, so developers who prefer terminal tools such as this will be very comfortable with it. Read More…

Recently I decided to see how easy it would be to create an AWS Lambda equivalent within the Apcera trusted cloud platform and use NATS as an event source for triggering function invocations. This blog entry gives an outline of AWS Lambda, the approach I took to get a first implementation up and running and offers up some thoughts on possible futures.
What is AWS Lambda? AWS Lambda (λ) is computation without computers, or at least without the explicit notion of computer machines, virtual or physical hosts; in many ways, the ultimate evolution of Platform As A Service and Microservice architectures. Read More…

Aditiva recently started to use NATS inside solutions for financial institutions that are our customers. In this blog entry, you can learn more about Aditiva, some of our products, and how we use NATS in delivering these solutions for financial institutions.
Aditiva provides a High Performance Financial Transactional Platform (Aditiva EFT),that integrates Financial Institutions’ Core Systems, with 3rd party networks. For example, Financial Institution Customers execute different Financial Transactions using Plastic Cards from ATMs and POS networks; these generate ISO 8583 transaction messages, that are captured and routed to authorization services provided by the Aditiva EFT Platform installed on Financial Institution premises or on the Issuer side, and it is managed and supported by Aditiva. Read More…

I’ve attended SCALE a few times in the past, and have always been impressed with the event that the SCALE team puts on each year; but I hadn’t attended in a few years, and it has gone from strength to strength in that time!
There are more booths, training sessions, breakout talks / BOF’s, and more developers and interesting open source community members to hear from and collaborate with. As a result, SCALE was held for the first time at the more spacious Pasadena Convention Center: Read More…

When I was tasked with writing a C client for NATS, I decided to use the excellent Go Client as the model. We were going to provide more Apcera supported clients, and for maintainability sake, it was better that all our clients’ implementation follow the same model.
However, before getting the very first alpha release out, I was not happy with the performance results. I decided to use a tool to instrument the code and see where the bottlenecks were. Read More…

Performance at scale is critically important for building distributed systems today. Microservices and IoT require applications to be distributed across a physical or virtual infrastructure, comprised of thousands, possibly millions of endpoints, many of which can be .NET services or applications. The end user needs these services to operate seamlessly, requiring extremely fast, lightweight, scalable, resilient, and always-on communication - NATS.
In developing the NATS C# .NET Client, the .NET Framework SDK’s extremely rich API eliminated reliance on third parties, but most importantly, performance is there. Read More…

NextGen Leads aims to provide extremely high quality health insurance leads and Medicare supplement leads by streamlining the lead buying experience from end to end. Our leads are generated internally by a team of lead generation experts; they are not brokered by any third party. They are then delivered in real time and never oversold, passing through various filters to ensure that our customers can place bids on only those leads that they want. Read More…

NATS is all about simplicity and speed. In that regard, NATS is extremely well suited for microservices architectures, acting as a transport between services. Many NATS users I speak to in my role as community manager are using NATS for this purpose due to it’s lightweight PubSub characteristics. As services become increasingly distributed and modularized, an always-on, fast, PubSub communication layer becomes very important. NATS allows many distributed services and applications to function in real-time as a single entity. Read More…

Bill Chute of Acadiant Limited has been using NATS for some time, and has given us some great feedback along the way. As Bill has stated in the past
“We considered a number of modern messaging platforms. NATS was the clear choice because it’s the highest-performance message broker we could find, and it solidly supports all the languages in our stack. Because of its clean design, it was easy for us to get up to speed with NATS and it gives us the scalability and responsiveness we need. Read More…

As the community and innovation around the NATS.io project has grown this year, we’ve had many requests for meetups, and have had some great content submitted to us by the community in support of these events.
The meetup held in San Francisco in August was fantastic, and we had a great series of talks there. Wally Quevedo, a core member of the NATS team, gave a must-watch talk on monitoring gnatsd servers. Read More…

NATS License (The MIT License)

Copyright (c) 2012–2014 Apcera Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.