We are often asked about our tech-stack and our primary language. Our stack is defined by the problems we solve. We are completely language agnostic and we decide our tech based on the problem at hand and eventual scalability. We have over sixteen micro-services. Here is the majority of our tech stack.
Our current go-to language is Go (No pun intended).
To integrate with legacy systems e.g. SOAP services, we use springboot—a micro framework based on Spring. We are familiar with spring but you have a lot of choices here- Vertx, Spark, Ninja, Jodd. Our open API is based on Amazon API gateway and lambdas. We are able to scale up to 100,000 Requests per second without breaking a sweat.
Amazon API Gateway
Here are a few frameworks we use on server side in combination with the languages I mentioned above.
Our analytical database is based on Redshift—its pricey but the best out there. We use Redis for caching and everything in Clearplan is run asynchronously to maintain transactions and durability—we use AMQP. We process over 1.5 million events on an average every day using Rabbit MQ. Our uptime is over 310 days on rabbit and this is our single point of failure - but remember rabbit is built for this.
Most of the micro services interact with each other using Rabbit MQ. Nginx is solid but we are thinking of migrating to HA Proxy to get load balancing - it is now the standard.
We love AngularJS 1.4 here at Clearplan and have extensive codebase in angular. We started using ReactJS as a view component where we need performance, more on that here. We started our project a while ago—so most our build is based on Grunt. We are a LESS shop using bootstrap, but we might change that as Sass is now a big deal.
We never migrate code as it does not have business value. We build newer stuff with newer components. This is the best advantage you get when you build using micro-services. All our graphs are based on D3. We pay a ton of money to Google maps, but feel that it's worth every penny.
Nothing funky here, industry standards of using Android Studio and Xcode—including tests, deployment and builds. We use Crashlytics and Beta to do our beta distribution and collect user analytics.
Third Party Components
We use Stripe as our payment gateway and Mandrill for email reports. Intercom is our user analytics and CRM. We have integrated intercom on all platforms—iOS, Android and Web. We use MailChimp for email marketing.
There is no rocket science here, we follow the industry standards of Jenkins which build Docker images and use Docker Hub to distribute. We use Einhorn and PM2 to keep restarts and crashes to Zero time.
We are super crazy about continuous deployment and have a record of 1372 deployments to-date on all platforms, apps and services.