>> I'm Christina Warren.
>> And I'm Adron Hall.
>> Welcome to The Open Source Show.
>> I'm Christina Warren, Senior Cloud
Developer Advocate and I'm joined today by?
>> Adron Hall, Technical Evangelist at DataStax.
>> So, what is DataStax?
>> So, DataStax is a company that has
a Cassandra solution that extends Cassandra with graph,
analytics, and search, and
also provides operational tools and
things like that to help you do
more with your distributed database implementation.
>> Okay. And so, Cassandra is
a distributed noSQL database solution, right?
>> That is correct.
>> And it's open source?
>> It is open source. It's also-.
>> Yes.
>> -happy birthday time. Ten years old!
>> Ten years old!
>> Happy Birthday, Cassandra.
>> So, let's back up a little bit, because we're talking
about demystifying distributed systems.
>> Yes. >> So, how would you define
what a distributed system is?
>> A lot of things are called distributed systems.
Sometimes you may have two laptops on a desk, like, which
stands right in front of us
and someone may call it a distributed system.
We're talking about something that's much more extensive,
and it could be multi-regional,
or multi-cloud, and have
thousands and thousands of computers in the system.
But beyond that,
whenever I'm talking about distributed systems,
is an intelligent system that can manage
itself with outages and
things like that and not lose data.
>> Okay.
>> Another system that's really popular today that's
also a very resilient distributed system
like that is Kubernetes.
>> Very popular.
>> Yeah. So-.
>> It's pretty hotness. >> -like when a node goes down
and you don't always really notice
because it knows how to return a node to activity,
or to make a new one, or whatever it needs to do.
Same thing with Cassandra,
like we lose a node,
it re-balances the data within the distributed database,
and whenever we can resume that node, or fix it,
or put a new one in there then,
it can re-balance the data.
>> Instead of having to run everything on one server
you're distributing the tasks, hence the name,
on a bunch of different machines and like
you said they could be in different regions,
they could be different clouds,
they could have different specifications.
Let's talk a little bit about,
because we're about to get into a demo,
but let's talk a little about what are
some of the challenges that you see people
have when they approach distributed systems?
>>There's a long list. A lot of
it comes just from the operational side of things.
A lot of that starting to be
simplified a little bit more and more
as different projects get more mature.
One of the things that we do at DataStax is,
we simplify the management of Cassandra.
Like you have all the nodes,
but we have operational software to
help you see what's actually happening,
like you can actually see your data centers
and know what the status of those are,
instead of always having to bounce into a terminal.
But at this point,
we're starting to see a lot more in the industry where
the distributed systems are getting to the point
that they can be managed and it's more,
how are you gonna actually write your
applications to that system?
>> Okay.
>> You need to figure out how you're going to deal with
caching and how you're going to
connect to the distributed database.
The distributed database has its tier kinda figured out.
Well, there's a lot of ways to make
the applications more resilient in
Kubernetes or in whatever you're
doing on top of that distributed
database or across those clouds
that the distributed database exists in.
>> So, really it's a lot about
the architecture, I guess, side of planning, what you're doing?
>> Architecture is definitely
a situation where you need to
kinda figure out what you're going to do,
but you don't just jump in and go,
"I want 50,000 nodes and I'm gonna put some data in it."
That's probably not the best approach.
You need to come up with an architecture
and get an idea around
like how big of a database you need,
like how many nodes you're going to have,
how much actual storage you're probably going to
need or you project yourself to need.
There's also the strategic side of that.
>> Okay.
>>Where you might have
your database in one cloud and say,
"Oh, wait, we need to have that multi-cloud."
But then, you still need to definitely make sure,
how am I going to run my application on that?
For instance, I can probably
show you that if you wanted me to.
>>You know that will be great.
I would love for you to show me that.
>>It might take four hours. No, I'm kidding.
>> It won't take four hours.
>> All right.
>> If it takes four hours, people aren't
going to tune in. Two minutes?
>> Two minutes, two minutes? You're gonna watch?
All right, cool. Let's do it.
>> All right. So, here's the demo I'm going to show you.
It's more of kinda quick walk through and how to get started.
But, here's what you can end
up with if you want to go multi-cloud.
Like, I was talking about a minute ago,
the multi-cloud capabilities of Cassandra and
especially DataStax Enterprise are
pretty extensive. Right here.
One of my cohort, Justin,
has set up a cluster.
Inside of that, are three specific data centers.
One in AWS, one in Azure,
and one in GCE.
And if I click on any of those,
you can see that there's a three-ring cluster
in each of those.
So, and this all works as one single database.
So, we have nine nodes or nine servers
that have a distributed database store
across all of those.
Now, if we click on "OpsCenter Monitoring",
we get some great insight
into those individual nodes and everything.
You can see one of them actually is
down for service right now in GCE.
If I come over to say,
let's restart one in Azure.
Let's say I needed to restart
this particular node for some reason.
I can come in and just click
"Start" or "Stop" or "Restart" as I need to.
I'm going to click "Restart",
I'm sure no one will even
blink because it's a distributed database, right?
So, that node is actually
restarting and this will update in a second,
and you'll see that there's one down, et cetera.
And other information in this particular dashboard
is super useful to managing
and keeping all your various data centers and
other nodes up and live or
getting some insight into what's going on.
Like right now, you can see that this has
started its restart process.
It's waiting to start.
If I click on it, you can see
all the information and of course,
you can get various stats and other things.
So, this is great.
I have this multi-cloud setup,
but how do I get started if I just want to do
some development like on a local machine, right?
So, I wrote this blog entry called "A Collection of Links
and Tour of the Docker Images
that we've created at DataStax."
The two key things that I want right now just to
show you how quick you can get started is,
we'll take a look at the Docker Hub
and the actual GitHub repo,
where we have some sample docker compose
files to help you get started.
So, there's the three images that we have.
There's the server, which is what makes up
the individual nodes of
the database cluster and then OpsCenter and Studio.
Studio is for writing SQL queries and things like that,
against the cluster and OpsCenter is
for management and things,
like we just looked at with the multi-cloud setup.
The repo over here just called
Docker Images and it has various sample things set up.
I'm gonna actually pull that and open up a terminal.
There we go. Now, I'm just gonna make a directory.
Call it getting started.
Navigate into that and then,
I want to clone that repo.
Once I have that repo cloned,
I can navigate into the directory
called example_compose_yamls.
And you'll see there's a couple
YAML files for docker compose around starting OpsCenter,
studio, and the one
that just called docker-compose is for the nodes.
So, if I wanted to actually start
a cluster right now with
docker-compose to run the containers,
all I have to type in is docker-compose,
pass it a file,
so I'll pass in the docker-compose YAML file.
Then, up to start it,
-d to do it headless,
so that it just runs it in the background and then,
I'm going to scale it to two nodes.
Now when I hit "Enter"
docker-compose will look at that.
Read the YAML file that it was passed and figure
out how to build out a three-node cluster.
So, I set the scale to two because it always has to
start a seed node to get something started.
Then, it adds the two nodes to it and there we go.
I now have a three-node DataStax Enterprise
Cassandra cluster up and running.
That's how quick and easy it is.
>> Well, that was awesome. We're talking
about some of the reasons you would use
a distributed system and the history of Cassandra.
Can you maybe talk about reasons why you would
not use a distributed system?
>> Let's say you're gonna have ten people using an application
and I don't know, maybe you're only gonna have five gigabytes of data.
Something that could literally fit on a laptop today.
>> Right.
>> You don't need to go to building
out a full ditributed system for that,
but when you start to move to a scale,
where you might have
thousands or millions or billions of users,
there are billions of us around,
you need to start figuring
out how the resources are going to be
allocated and what you can use to have that scale.
That's where distributed systems come into play,
is when you starting to move up
that scale range and you need
to have the option of like where is our forward path?
Like, how do we grow into 10 petabytes,
50 petabytes or the next level?
even beyond that, that's
when you need to move into that space.
>> So, if you're building an app that has lots of users,
it's storing lots of data,
that's probably a good reason to use distributed system.
But, if you've got something that's
smaller that doesn't have a lot of users,
you don't necessarily need to.
It's probably better if you don't go in that direction.
>> Right. There's other things too like
sometimes you just want to have a super resilient system.
Maybe you only want to put your
50 records of data in there,
but you want to have it just crazily
reliable for the zombie apocalypse - distributed systems, get you one.
>> All right. So, that's what you want.
You want total security.
>> Absolutely.
>> Right. So, if people are wanting to get
started and both building their own system,
getting started with Cassandra, getting started with
the kind of theory of distributed systems.
Do you have any places where they can go to-
>> I do amazingly.
I've read a lot of these, so they're good sources.
>> Okay.
>> One of the first ones that I take a dive into
is DataStax Academy material.
Free account, free material,
lots of different courses to look into architecture,
how to build applications around it,
how it's working when
your application is working
against it and put data in it,
and how the data flows in
and out and all that kind of jazz.
Also just check out the apache.cassandra.org domain.
There's a lot of good stuff there to get you started.
Just jump into Cassandra itself.
Of course, there's my blog
compositecode.blog not com, but .blog.
>> Very nice TLD.
>> Yeah. I saw that and was like, "Oh yeah.
I'm going to own that for 50 years."
So, there it is.
Got a lot of material on there.
I write about the whole spectrum of super
academic to super straightforward high level stuff
of distributed systems. >> Awesome.
>> And you can check out all the links that Adron mentioned.
His blog, some other resources,
as well as the DataStax Academy
in the show notes down below.
And of course, you can also check out
opensource.microsoft.com
to get more information about
all the cool open source stuff we're doing.
And let us know in the comments if you got any questions.
And if you like this video, and of course you do,
because Adron is here and I'm here.
>> That's right.
>> You want to like and subscribe on YouTube and turn on
those notifications and get access to
get notified all the times we upload new stuff.
So, thanks Adron for
joining me. We'll, see you next time.