The Inglorious DX

Aerospike square logo
Aerospike Marketing
December 29, 2015|6 min read

User Experience (UX) is a key way for application developers to differentiate their products and ensure great adoption and stickiness. UX design-driven applications ultimately enhance the satisfaction of the end user, enabling a compelling, enjoyable experience for them. Naturally, we tend to gravitate towards the things that are simple, easy and most fun to use.

But what about those who develop the applications? Should developers also enjoy a compelling, pleasurable experience as they create the application? At Aerospike, we think the answer is a resounding “yes”! Developer Experience (DX) to us means:

  • APIs must be natural

    Regardless of your language of choice, the APIs that Aerospike present should seem natural and obvious. You should not have to jump through unnatural hoops to make things work in your language of choice.

  • APIs must be simple

    Your mission is building awesome applications, not deciphering obscure syntax for doing simple operations. Accordingly, let’s keep things simple for you.

  • APIs must be current

    Languages change, and the frameworks around those languages continuously evolve. You don’t want your Database vendor pinning you to outdated frameworks or language versions.

  • Trust and communication is a two-way street

    You trust Aerospike to build, maintain and evolve our platform. We must keep you in the loop, not just about the changes themselves, but also about our motive in making them. We must listen to your feedback and act on it.

Winter 2015/16 Release

We are pleased to announce the availability of the following:

  • Frameworks & Connectivity

    • Spring Data for Aerospike

    • Play 2.0 Framework Support

    • JDBC Connector

  • Deployment

    • Docker Integration

    • AWS CloudFormation scripts

  • Developer focused Server features

    • Geospatial indexes & queries

    • List Manipulation

Spring Data for Aerospike

Spring is a common framework used in enterprise Java applications. Spring hides the complexity of building an enterprise Java application and offers numerous helpful modules which abstract the technology details away from the developer so they can concentrate on developing a solution to the business problem and not burn cycles “fixing the plumbing”.

Spring Data for Aerospike supports a POJO-centric model with the standard Spring Data features, including:

  • Powerful repository and custom object-mapping abstractions

  • Dynamic query derivation from repository method names

  • Implementation of domain-based classes providing basic properties

  • Support for transparent auditing (created, last changed)

  • Integrate with custom repository code

  • Easy Spring integration via JavaConfig and custom XML namespaces

  • Advanced integration with Spring MVC controllers

More information can be found in our Documentation.

Play 2.0 Framework Support

Aerospike has released a caching and session store plugins for the Play 2.0 Framework. With these plugins, you’ll be able to use the Aerospike database quickly and easily within the Play 2.0 Framework from Java or Scala with no application code changes.

The Play framework is a leading Java framework targeted at quick, easy web development. Play 2.0 (which has less semantic overhead than enterprise Java frameworks and supports the more expressive Scala language) has become the framework favored by those who appreciate strong typing, the well-understood Java runtime, and the multitude of libraries available within Java.

Aerospike’s performance and reliability make it a natural fit for the database persistence layer. Its predictable, extremely low latency and its ability to both read and write rapidly and expire data accurately (with Time-To-Live) make it an excellent choice for both caching and session management.

More information can be found in our Documentation.

JDBC Connector

Aerospike’s JDBC driver is a read-only JDBC 4.0 and SQL-92 compliant driver with query features, including:

  • Multiple filters

  • Joins

  • Functions

  • Expressions

The JDBC driver allows read-only access to Aerospike data from your BI tools plus a variety of standard JDBC tools and technologies. It is intended for use with legacy applications and tools or BI solutions (such as Tableau) that may need to ETL data out of Aerospike.

Docker Integration

Docker and containers are widely being used to simplify the life-cycle process from development through to production. With descriptive dependency management and process isolation at runtime, containers are great building block for your next service or micro-service.

Aerospike’s shared nothing architecture makes it ideal for service orientated designs, especially when deployed in containers. We have added examples and documentation to show how best to use Aerospike with Docker Compose, Swarm and Multi-Host networking.

More information can be found in our Documentation.

AWS CloudFormation Scripts

We have provided a set of AWS CloudFormation scripts that enable simple deployment of an Aerospike cluster into your Amazon VPC. With these simple scripts, you are able to:

  • Pick an EC2 instance type

  • Automate formation of the Aerospike cluster

  • Integrate with auto-scaling for automated cluster topology reconfiguration

  • Integrate with CloudWatch

More information can be found in our Documentation.

Geospatial Indexes & Queries

As announced on December 10th, 2015, Aerospike has added Geospatial capabilities to Aerospike that enable developers to build high-throughput and low-latency applications around geospatial data. Need to track taxis or deliveries in real time? Need to know the campaign region somebody is in before sending them a location specific advert? Need to find out what’s near your phone? We have features to support these use cases, and more.

More information can be found in our Documentation.

List Manipulation

Lists are useful when you are dealing with a size bounded list that can reside in a single Bin. These new operators (also announced recently) allow manipulation of the list on the server – for example, to add or remove an item without the need to read and replace the whole Bin value in which the list is stored.

A List can store a regular Scalar datatype or contain another List or Map. Server side operations that are now supported include:

  • append(), insert(), insert_items()

  • get(), get_range(), get_range_from()

  • set()

  • pop(), pop_range(), remove(), remove_range()

  • trim()

  • clear()

  • size()

More information can be found in our Documentation.

What’s next?

Our focus for DX for the next year is to:

  • Maintain currency with O/S and Distros, and Client Languages (e.g. Python 3, PHP 7)

  • Provide fully asynchronous drivers for every client language

  • Improve the usability of the APIs & error messages

  • Provide a standard set of User Defined Functions (UDFs) for typical functions

  • Improve documentation & examples

  • Extend native datatype support (who doesn’t love Datetime and Counters?)

  • Extend Map support (in line with the List features added in Aerospike Server v3.7.0) and add Sorted Lists

As always, we need your help and input to continue to improve and enhance your DX. Feel free to contribute your feedback, ideas and questions to our user forum, file Github issues or create a pull request for the next great feature you’d like to contribute to the Aerospike user community!