article

CJ Affiliate Technology Stack: In Under 600 Words

Jan 22, 2013
Written by Hal A.

Greetings! As Director of Engineering here at CJ Affiliate, I'd like to officially welcome you to the CJ Technology blog series, where we intend to showcase and share interesting technologies and projects we are working on here at CJ. 

In a nut shell, we're going to talk about the things we think the wider technical community might find interesting, and to kick things off I want to take a very quick run through our entire technology stack, just to give a brief overview and leave the fine focus for follow-up articles. For starters, we use a lot of the technologies that are associated with the Java ecosystem: Java, Groovy, Clojure and Scala as primary languages, but we also utilize JMS, Lucene and Elastic Search, Hibernate and JMX.

We store data in Oracle and are making use of "noSql" stores like Cassandra and MongoDB. Since we have real-time reporting needs and our data just keeps growing, we've started creating the tooling to do mapReduce on Hadoop. More about that soon.

On the front end, we utilize Javascript with jQuery and its support libraries like Backbone, as well as some old struts driven JSPs. That said, we are currently in the process of removing all the JSPs in favor of a lighter weight JS client. This light-weight approach, with modifications to the back end via moving all of our services as resource endpoints, allows us to create more value for our customers with different views of these granular services. And our turn-around time for new features is much faster.

We are huge proponents of automated testing, at all levels: unit testing, component and integration testing and customer acceptance testing. We haven't done a lot of performance testing, but we're moving into that as we speak.

 

One other topic that we'll write about in the coming months is very exciting for us, and that is our Continuous Deployment or Continuous Delivery [CD] infrastructure.

In the old days, it used to take several weeks to move our departmental development code to production. Little by little, we've cut the deployment time down, so that we currently take an hour to deliver on a weekly schedule. The goal is to deliver "at will" and to keep the deployment branch "always green." There are lots of moving pieces to get to CD—a full set of automated specifications [tests], a full set of configuration specifications, an automated set of tested deployment scripts and so forth—one or more of us will talk lots about each of these tools in the weeks to come.

 

So, stop in occasionally to see what's new with CJ technology. Oh yeah, and if you're interested in working with us, be sure to view our current openings on the CJ careers page.

Share