The Tech Stack at Java Meets Bagel. We have been a mobile-first and mobile-only company
Perhaps one of the most typical inquiries that meeting applicants inquire if they interview here at java suits Bagel was, “something the tech pile?” it is additionally just about the most usual issues I have around san francisco bay area while going to technology meetups and conferences and such. Therefore for you personally curious applicants and someone else inquisitive exactly how a high level internet dating business has generated her program, here you are going, I’ll make an effort to break it down for your family.
First, at a high-level:
Our Android application was local (Java)
All of our iOS app is actually native (Swift + unbiased C)
The backend application level is actually Python & Scala
We need Golang for a few facts pipeline activities
The backend is usually in AWS with a bit of in yahoo affect
We try for fully computerized testing
Now, let’s enter into some nitty-gritty, shall we?
Exactly why are we mobile merely?
We do have a landing page (and several promotional web sites every now and then), although best access things for our software tend to be our cellular Android and iOS consumers. We actually started off with only an internet site . in 2012, but when we launched all of our apple’s ios app in 2013, the web site traffic fell to something like 40per cent of your full website traffic. Then, when we founded our Android app in 2014, website traffic plummeted to below 5per cent of full visitors. When this occurs, we determined it just was actuallyn’t worth every penny to make use of all of our minimal engineering resources to guide website, so we fallen it and switched it into merely a landing web page that directs browsers to either the application shop or Play Store.
I will put the particulars of our own cellular structure for another post, ideally are penned by one of the outstanding mobile designers, but at a high-level your cellular development strategy try:
The cellular programs tend to be “dumb” consumers. Their particular biggest work exists the data sent by our backend in an appealing, performant, secure, and beautiful trends. We accomplish this by sticking semi-strictly to RESTful online services principles.
Separation of questions is important for maintainability, reliability, and testability. All new laws written should comply with a VIPER design (for apple’s ios) or MVVM (for Android).
We’re on the road to automating UI evaluating on apple’s ios utilizing XCTest.
We’re presently automating much of our UI assessment, and useful tests, on Android os using Appium.
third party equipment from the cellular side:
iOS professionals utilizes Bitrise for CI
Android personnel uses Jenkins for CI
Firebase for real time cam
Localytics for analytics
Textile (Crashlytics) for crash reporting and beta party government
Fb for verification
As I’ve mentioned before, we’re very nearly entirely in AWS, for best or even worse, and we also are practically entirely a Python shop. I’ll put the details of our own backend structure for ideally another post from 1 of our own outstanding backend engineers, however for here’s some more details.
We make use of numerous AWS providers:
Cloudfront provide united states fast worldwide accessibility cached methods
S3 for picture space, information backups, and holding fixed the internet sites
SQS (Easy Queuing Service) for queuing up different asynchronous activities
ALB (software burden Balancer) for balancing burden and routing people to the right service
Cloudwatch for monitoring and alarming
Redshift for information https://datingmentor.org/somali-dating/ warehousing
ElasticCache for managed Redis for our algorithm professionals
VPC (digital personal Cloud) to guard our very own hosts from outdoors globe and from just one another
Kinesis to stream happenings throughout our system
We additionally use a variety of database technology:
Redis (Monolith — master / servant create) w/ HAProxy for legacy in memories database
Redis (Cluster) for horizontally scalable in memory space database
Postgres w/ HAProxy for deal databases
Cassandra divide over 2 datacenters
ElasticSearch for looking around / blocking kind data necessities
In terms of tracking:
Sentry for error revealing
Grafana for higher level dashboards and graphs
Cloudwatch for spying and alarming things AWS associated
Pagerduty for controlling our on-call schedule and waking all of us upwards in the middle of the night
Opscenter for monitoring Cassandra
Kibana for wood aggregation
Kopf for ElasticSearch spying
Unique Relic for machine / infrastructure wellness monitoring
Different 3rd Party Treatments server-side:
Localytics for analytics and delivering forces
Mailchimp for giving email messages
Part for website link generation and attribution
Facebook for verification and shared pal calculations
Firebase for real-time chat
Jenkins for develops, deployments, and scheduled jobs
Imgix for image caching and in-the-cloud changes