(note: yes, I know about BaaS/Usergrid, we just don't have it installed)
I would like to do some prototyping work and would like to leverage our on-prem cassandra cluster. If I create my own keyspace, is there any real downside in doing so or argument against doing so?
This is not production work and I fully expect you guys to talk about negative performance impact if an external system starts to really hog resource from Apigee 🙂
- the prototype services would be external and accessing cassandra, so totally outside of apigee, just using cassandra because it's there.
@Jonathan Baney ... I think more than the performance impact I will be worried about such activity violating Apigee's T&Cs. Since you will be modifying the Apigee internals in your own way I think that will cause challenge about Apigee's support for the software in the future.
What happens about upgrades ? What happens if something goes wrong ? While doing a future upgrade of the platform or while deploying a hot fix if the upgrade path deletes your keystore or aborts the upgrade due to unrecognized keystores etc.?
I am no legal person , and I have never read Apigee's T&Cs but I have heard (and it made sense to me ) about these sorts of unofficial usage of the underlying software which violates Apigee's support clauses.
That being said I am no authority on any such matter, so lets wait for someone more knowledgeable to comment here. I would also suggest you to raise a support ticket on this. They will be in a better position to validate if such work violates our support clauses.
On a side note - You can leverage the same cassandra cluster for your BaaS/Usergrid. Yes, it will have performance impact as you mentioned but atleast you do it the official way and also get all the benefits of BaaS.
Good point about the Ts&Cs. What I'll probably end up doing for quickness is actually write a proxy that leverages the cache or key/value map for my reads/writes 🙂 At least until I can get usergrid or a standalone cassandra cluster.
@Jonathan Baney if you are an on-prem customer, you are free to make changes to your systems they way you want it, but if this starts impacting the existing edge functionality, performance or reliability then you may have a problem. The standard sla and support agreements may not apply any more since you modified parts of the system by yourself. I would suggest you open a support ticket and figure out the implications.
Now coming to the actual question, this is definitely something you can do, it may not be recommended but since its not your production system, and if you understand the risks and decide to give it a shot. Frim technical standpoint this is definitely something you can do. Since you are going to create a new keyspace altogether, and have your column families created in that keyspace, you can drop it anytime without impacting existing schema or data. Things that you should be aware of:
- pounding on this new keyspace can cause performance implications to the existing edge
- if this keyspace grows very large, you would need to manage the data, disk space etc.
- if you frequently create/update/delete data from this keyspace it would trigger compactions which would start impacting the overall system health of your cassandra nodes
- make sure theres no dependency on the existing data or column families, and completely isolate this new keyspace so that you can delete it, if you start seeing negative impact.
If you really need to store some arbitrary dataset Api BaaS should be the right solution. You can also play around with the kvm in edge.
Setting up Cassandra
Running the Cassandra CLI
Write and Run your Remote Java Client
NOTE: I did this using Pelops which is a great Java client for Cassandra
References