As you may recall, I moved into a new focus in January of this year. It’s REALLY outside of my comfort zone from a focus perspective. The Cloud Native Apps team I belong to is really not focused on “storage” or even a particular OS/Hypervisor like I’ve done in the past. It’s geared towards the fundamental change we are seeing in the datacenter to the move to Cloud Native Application development. With this new endeavor is an opportunity to immerse myself in this new world. I’ve been doing a lot of this with online tutorials, hands on labs and just generally “Oh crap, I think I broke this now I have to fix it” mentality ! FUN ! The other way is to attend conferences. In this case, I was given an opportunity to attend RedisConf in San Francisco. I’d like to thank @MattCowger (my boss) for getting this ticket and passing it on to me. Also huge thanks to Ashley McNamara (@AshleyMcNamara), the only person I somewhat knew here at this conference. She took me under her wing and helped me navigate this new world to me ! THANKS !
So, first things first, what is Redis and where does it fit in the world? I’m some what familiar with solutions like Cassandra and MongoDB, and I’ve played around and installed MariaDB in the past so I get that whole “noSQL, non relational database” thing. Those types of solutions are built to hold information for long term type applications and are based on the DynamoDB whitepaper. Redis is a distributed, in memory database cache or sometimes they position it as a high speed message broker. It’s a Key Value Store more than a wide column store like Cassandra. It sits above those types of solutions and is 100% laser focused on being fast. Think of it for rapidly changing data ala stock prices, analytics, real time data collection or real time communication. I think I heard them mention it in line with things like memcacheD.
It was developed by Salvatore Sanfilippo, also known as @antirez who works for RedisLabs the official keeper of opensource and enterprise version of Redis. In one of the keynote session we heard from Tim Savage (@TimJSavage) of Armakuni who talked about how they used Redis to support the wildly popular UK based Comic Relief telethon. Imagine having to setup a solution that essentially will only be used for about 7 hours a year, during a live broadcast with upwards of 250+ donation/credit card transactions a second. Holy Cow !! Talk about pressure! You can’t afford a second of downtime or to be slow! He talked in a little detail about how they used Cloud Foundry in addition to AWS to build out the resilient infrastructure necessary to support these 7 hours of fun. My hope is he will publish his presentation and I’ll reference it here. I know for sure RedisConf recorded it and it should be posted soon. I’ll post the link for that as well.
Things I learned about:
Redis Sentinel provides High Availability for Redis. It does monitoring, notifications, automatic failover and acts like a configuration provider, essentially the source of authority for service discovery. At a high level Sentinel main focus is to be the canary in the coal mine relative to failures inside the distributed Redis system. Its responsible for detecting and then restarting failed nodes. It uses multiple sentinel instances to determine when a node is having a bad day (you need at least 3 to start). I also picked up on some sort of issue related to Sentinel and Docker Swarm. Sounded to me like “clustering, inside clustering” is not fun to deal with and there seems to be some work arounds that I heard about from Bill Anderson from Rackspace talk about during his keynote. I hope he publishes his preso as well! If so, I’ll link to it here. More info can be found here specific to Sentinel: http://redis.io/topics/sentinel
Redis Modules (RedisModules.com ) , this is an open market and hub so to speak for those in the Redis community that want to add extensions to the Redis solution. Some of the examples that RedisLabs created where things like Redisearch, which is a high performance full text search engine as well as an Image processing module called graphicsmagick. They really would like to see the community create more modules to help further add value.
Redis is expanding beyond just “in memory” and looking at Redis on NVMe SSD. I could have sworn I was at a storage conference during these discussions. It was a lot around the differences in speed, response time and cost associated with running in memory, on SATA and on SSD type solutions. The key take away was the cost of NVMe type solutions, coupled with the performance acceptability being too overwhelming for the community to ignore. There was more than a few sessions to just talk about how to make that happen. There doesn’t appear to be any sort of direct ability to do this today in Redis, I did see a lot of referencing to running Redis in conjunction with RockDB in their testing. I need to read up more on that, but the key take away from me is they are exploring ways of using Flash technology to help drive some costs out of running Redis without compromising performance. Stay tuned for that.
Database Sharding – I know very little about databases so Sharding might be a known thing to like everyone on the planet but me . I clearly need to read up on it more. I sort of get the gist of it, when a database needs to be broken into smaller parts to easily manage, or because you are running into limits around memory, CPU etc sharding is used to deal with that. Different Databases deal with sharding differently. I also giggle every time I hear it, I have a 5th grade sense of humor I suppose !
On a side note, as I sat through RedisConf I started trying to compare where Redis is, and where Cassandra/MongoDB are. In some ways, I see Redis trying to move closer towards the Cassandra world but not too close. They still are VERY much focused on being fast and from what I can tell in listening to Salvatore, he’s still very much focused on “Fast” being the key tenet driving Redis. On the other side, I’m seeing Cassandra and Mongo working towards getting closer to the main tenet of Redis in regard to front end caching. Should be interesting to see how these solutions sort of head in the same direction over the next few years.
Another interesting tid-bit that has ZERO to do with Redis. I was blown away by the number of laptop screens I saw with Slack open on it. In years past, I would expect to see Twitter, Facebook – but when I would walk into a session there would be lots of Slack windows open ! Pretty cool – I love me some Slack !
Welp – my head officially hurts but I feel like I’ve learned a TON this week. VERY productive !