Our Tech Heap at Coffees Matches Bagel. We are a mobile-first and mobile-only providers
One of the more typical inquiries that meeting prospects inquire once they interview only at Coffee joins Bagel is, “what’s the tech stack?” it is furthermore one of the most typical concerns I get around bay area while attending tech meetups and conferences and these. Thus obtainable curious prospects and someone else wondering just how a leading tier online dating team has generated their own platform, right here you are going, I’ll you will need to split it lower for your needs.
Initial, at a high-level:
Our Android app was native (coffee)
All of our iOS app try indigenous (Swift + unbiased C)
All of our backend software coating is Python & Scala
We make use of Golang for many information pipeline work
All of our backend is mainly in AWS with a bit of in Google Cloud
We try for totally automatic evaluating
Today, let’s enter into some nitty-gritty, shall we?
What makes we cellular best?
We have a squeeze page (and a few promotion web sites in some places), but the just accessibility factors in regards to our software include the https://datingmentor.org/spdate-review/ mobile iOS & Android clients. We really launched with best a web page in 2012, but as soon as we founded the iOS app in 2013, the web traffic fallen to something like 40per cent of one’s complete site visitors. Then, as soon as we founded our very own Android os app in 2014, web site traffic plummeted to under 5% of complete traffic. At that point, we chose it simply was actuallyn’t worthwhile to utilize our minimal manufacturing budget to guide the web site, so we fell it and transformed it into simply a landing webpage that directs browsers to either the App Store or Play Store.
I’ll leave the particulars in our cellular structure for another article, ideally getting penned by one of our outstanding mobile engineers, but at a high-level the mobile developing strategy is:
The mobile programs become “dumb” consumers. Their particular major task is present the info sent by our very own backend in an engaging, performant, stable, and delightful trends. We achieve this by adhering semi-strictly to RESTful internet services concepts.
Split of issues is very important for maintainability, reliability, and testability. Brand new rule composed should adhere to a VIPER pattern (for iOS) or MVVM (for Android).
We’re on the path to automating UI evaluation on apple’s ios making use of XCTest.
We’re presently automating a lot of our UI evaluation, and functional testing, on Android os utilizing Appium.
third party Tools on the mobile side:
apple’s ios group makes use of Bitrise for CI
Android personnel utilizes Jenkins for CI
Firebase for real time chat
Localytics for statistics
Textile (Crashlytics) for collision reporting and beta class administration
Fb for verification
As I’ve discussed earlier, the audience is almost completely in AWS, for better or worse, therefore are nearly completely a Python shop. I’ll keep the specifics of our backend buildings for ideally the next article from a single of our own exemplary backend engineers, but for right here’s a few more details.
We make use of several AWS treatments:
Cloudfront to provide you fast worldwide access to cached means
S3 for photo storage, data backups, and holding static websites
SQS (Easy Queuing services) for queuing up various asynchronous jobs
ALB (Application burden Balancer) for managing burden and routing visitors to the appropriate treatments
Cloudwatch for tracking and alarming
Redshift for data warehousing
ElasticCache for maintained Redis in regards to our formula professionals
VPC (digital Private Cloud) to guard our very own computers from the external globe and from just one another
Kinesis to flow activities throughout our bodies
We additionally use several different databases systems:
Redis (Monolith — master / slave set-up) w/ HAProxy for legacy in memory database
Redis (group) for horizontally scalable in storage database
Postgres w/ HAProxy for exchange databases
Cassandra split over 2 datacenters
ElasticSearch for looking around / blocking kind information necessities
With respect to monitoring:
Sentry for error revealing
Grafana for higher level dashboards and graphs
Cloudwatch for tracking and alarming things AWS associated
Pagerduty for managing our very own on-call schedule and awakening you right up in the night
Opscenter for spying Cassandra
Kibana for record aggregation
Kopf for ElasticSearch spying
Brand-new Relic for machine / system wellness tracking
Different third party Providers server-side:
Localytics for analytics and delivering forces
Mailchimp for sending e-mails
Department for link generation and attribution
Fb for authentication and common friend data
Firebase for real-time talk
Jenkins for develops, deployments, and scheduled activities
Imgix for image caching and in-the-cloud changes