Rapid development in Clojure


  • Cloure is a high level language that provides access to both the JVM (for server-side development) and javascript (for client-side development) with largely the same language. This is important to limit context switching and enable code-reuse during fast product cycles. Clojure is ideal for rapid prototyping and has a strong focus on stability, correctness, and concurrency. Tools like Schema and Spec enable well-structured development and high code confidence.


  • I mostly use React via a Clojure wrapper called Reagent. Reagent is dead simple and faster than bare React is out of the box. If I have to write a UI myself, I would strongly move to use React via Reagent.


  • Elasticsearch has good tooling and supports a large api that makes it ideal for denormalizing data. It has a simple to use aggregations api that tends to encompass most of what I need a BI tool to do, especially in the early going (when paired with Kibana). It's also handy when you just want to search some text.


  • Relational data stores solve a lot of problems reasonably well. Postgres has some data types that are really handy such as spatial, json, and a plethora of useful dates and integers. It has good availability of indexing solutions, and is well-supported for both custom modifications as well as hosting options (I like Amazon's Postgres for RDS). I use HoneySQL for Clojure as a composable AST that translates reliably to SQL. I typically use JDBC on Clojure, usually via org.clojure/java.jdbc.


  • Rapid stand up of related services for testing while enabling artifact creation of services for promotion to prod.


  • Redis makes certain operations very easy. When I need a high-availability store, I typically look elsewhere, but for rapid development with the ability to land on your feet in prod, Redis is great. The available data types make it easy to build non-trivial indexes that would require complex queries in postgres.


  • S3 is great for backups, data blobs, as well as log and event streams using Factual's s3-journal. s3-journal really is a secret weapon.


  • This isn't exactly low-latency (10s to 100s of milliseconds), but it has good throughput and a simple API. There is good reliability, and there is no configuration necessary to get up and running. A hosted queue is important when trying to move fast.


  • With a little forethought, ECS can handle a good portion of my development stack as though it were production. 12 Factor configuration makes this a breeze.


  • In so far as I deploy on a Linux host (without a container abstraction), I prefer working in Fedora and RHEL environments to Debian-based environments.

    I like the adherence to upstream, strong free software stance, and good documentation from Fedora. Clients enjoy cutting edge software availability and a safe fallback to Red Hat Enterprise Linux or CentOS.


519370

Favorite
Views
42
519370
Favorite
Views
42