All of our Technical Pile at Coffee Touches Bagel. Our company is a mobile-first and mobile-only company
Probably one of the most usual questions that meeting candidates ask whenever they interview only at coffees matches Bagel is actually, “what’s their tech stack?” it is also one of the more common concerns I get around San Francisco while going to technology meetups and seminars and such. Very for your needs curious candidates and anyone else curious exactly how a top level matchmaking providers has built their particular platform, here you go, I’ll try to break it down available.
Initially, at a high-level:
The Android os app try indigenous (Java)
Our very own apple’s ios app was native (Swift + unbiased C)
Our backend program coating was Python & Scala
We incorporate Golang for some data pipeline tasks
All of our backend is usually in AWS with a little in yahoo Cloud
We strive for totally automated evaluating
Now, let’s enter some nitty-gritty, shall we?
Exactly why are we cellular just?
We have a splash page (and a couple of advertisements web sites in some places), nevertheless only access points for the app tend to be all of our cellular Android and iOS customers. We in fact launched with best a webpage in 2012, but once we launched our iOS app in 2013, our very own website traffic dropped to something such as 40percent of your total visitors. Then, once we established our very own Android os software in 2014, site traffic plummeted to below 5percent of total traffic. When this occurs, we decided it simply was actuallyn’t worth every penny to utilize the restricted manufacturing information to compliment the internet site, therefore we fallen it and switched they into just a landing page that directs browsers to either the software shop or Play shop.
I’ll leave the specifics of our own mobile architecture for another article, hopefully as written by one of our excellent mobile engineers, but at a high-level our cellular developing philosophy is actually:
The mobile apps become “dumb” people. Their primary task occurs the data delivered by the backend in an engaging, performant, steady, and beautiful fashion. We achieve this by adhering semi-strictly to RESTful web services basics.
Divorce of problems is essential for maintainability, stability, and testability. New code written should abide by a VIPER structure (for iOS) or MVVM (for Android os).
We’re on the way to automating UI evaluating on iOS using XCTest.
We’re currently automating a lot of the UI testing, and useful screening, on Android using Appium.
third party gear in the cellular area:
apple’s ios employees makes use of Bitrise for CI
Android os teams makes use of Jenkins for CI
Firebase for real time speak
Localytics for analytics
Materials (Crashlytics) for accident reporting and beta group government
Myspace for verification
As I’ve discussed earlier, we have been about completely in AWS, for much better or bad, and we are practically completely a Python store. I’ll allow the details of your backend structure for ideally the next article from 1 your exemplary backend designers, but also for here’s a few more information.
We incorporate a number of AWS solutions:
Cloudfront to give us rapid international entry to cached tools
S3 for photograph space, facts copies, and hosting static the internet sites
SQS (straightforward Queuing solution) for queuing up numerous asynchronous work
ALB (program burden Balancer) for balancing weight and routing visitors to the appropriate service
Cloudwatch for tracking and alarming
Redshift for information warehousing
ElasticCache for maintained Redis for our algorithm group
VPC (digital personal affect) to guard our very own computers from outside community and from just one another
Kinesis to flow occasions throughout our system
We also use several different databases technologies:
Redis (Monolith — master / servant set-up) w/ HAProxy for legacy in memory space databases
Redis (Cluster) for horizontally scalable in memory space databases
Postgres w/ HAProxy for deal databases
Cassandra divide over 2 datacenters
ElasticSearch for looking / blocking means information necessities
With respect to tracking:
Sentry for error reporting
Grafana for higher level dashboards and graphs
Cloudwatch for spying and worrying everything AWS relating
Pagerduty for controlling the on-call schedule and awakening you right https://datingmentor.org/spiritual-dating-sites/ up in the middle of the night time
Opscenter for monitoring Cassandra
Kibana for record aggregation
Kopf for ElasticSearch tracking
New Relic for servers / system wellness tracking
Other 3rd Party Treatments server-side:
Localytics for statistics and giving pushes
Mailchimp for giving emails
Branch for connect generation and attribution
Myspace for verification and shared pal computations
Firebase for real-time talk
Jenkins for creates, deployments, and scheduled activities
Imgix for picture caching and in-the-cloud changes