All of our Tech Heap at Coffee Meets Bagel. We have been a mobile-first and mobile-only providers
Probably one of the most typical questions that interview candidates inquire if they interview only at java touches Bagel try, something your technology stack? Its also one of the most common concerns I get around san francisco bay area while going to technical meetups and meetings and these types of. Thus individually interested candidates and other people fascinated just how a premier tier dating providers has built their own program, right here you go, Ill attempt to break it all the way down available.
1st, at a high-level:
The Android application was indigenous (Java)
All of our apple’s ios app is actually local (Swift + unbiased C)
All of our backend software coating are Python & Scala
We use Golang for most information pipeline jobs
All of our backend is certainly caused by in AWS with a little in Google Cloud
We try for completely computerized testing
Today, lets enter some nitty-gritty, shall we?
Why are we cellular only?
We have a website landing page (and a couple of promotion websites here and there), but the only access guidelines for the app include our mobile iOS & Android customers. We really launched with merely web site in 2012, but once we launched our very own apple’s ios app in 2013, our web traffic fell to something like 40per cent of our own total visitors. Next, whenever we founded the Android app in 2014, web site traffic plummeted to below 5% of overall website traffic. When this occurs, we determined it really ended up beingnt worth every https://datingmentor.org/nl/fcn-chat-overzicht/ penny to use our very own restricted technology budget to support the website, so we dropped they and turned it into simply a landing page that directs browsers to either the software shop or Play shop.
I will create the specifics of one’s mobile structure for another article, hopefully to get penned by one of the exemplary cellular designers, but at a high-level your mobile development strategy are:
The mobile software are dumb clients. Their particular major job occurs the info delivered by all of our backend in an appealing, performant, secure, and beautiful trend. We make this happen by sticking semi-strictly to RESTful internet solution rules.
Split of problems is important for maintainability, stability, and testability. Brand new laws composed should comply with a VIPER structure (for iOS) or MVVM (for Android os).
Were on the way to automating UI screening on iOS using XCTest.
Were at this time automating the majority of all of our UI assessment, and practical examination, on Android os using Appium.
3rd Party methods on the cellular side:
iOS group utilizes Bitrise for CI
Android os group utilizes Jenkins for CI
Firebase for real time chat
Localytics for statistics
Materials (Crashlytics) for collision revealing and beta people administration
Twitter for authentication
As Ive discussed earlier, our company is about completely in AWS, for best or tough, therefore we are practically completely a Python shop. Ill leave the specifics of your backend design for ideally a future post from a single your exemplary backend engineers, but for right heres some more facts.
We need some AWS treatments:
Cloudfront supply us rapid global accessibility cached info
S3 for picture storing, facts copies, and holding fixed the web sites
SQS (straightforward Queuing provider) for queuing right up various asynchronous jobs
ALB (software weight Balancer) for balancing burden and routing visitors to the appropriate providers
Cloudwatch for spying and worrying
Redshift for facts warehousing
ElasticCache for was able Redis for our algorithm staff
VPC (digital personal Cloud) to guard all of our servers from the outdoors community and from one another
Kinesis to flow events throughout our bodies
We also use a number of different databases technology:
Redis (Monolith master / servant setup) w/ HAProxy for heritage in memory databases
Redis (Cluster) for horizontally scalable in mind databases
Postgres w/ HAProxy for purchase databases
Cassandra split over 2 datacenters
ElasticSearch for looking / blocking sort facts necessities
With respect to monitoring:
Sentry for mistake stating
Grafana for high-level dashboards and graphs
Cloudwatch for monitoring and alarming everything AWS associated
Pagerduty for managing our on-call schedule and waking united states right up in the middle of the night time
Opscenter for spying Cassandra
Kibana for record aggregation
Kopf for ElasticSearch spying
Unique Relic for host / system fitness spying
Other third party Service server-side:
Localytics for statistics and giving pushes
Mailchimp for giving e-mail
Department for link generation and attribution
Facebook for verification and common friend data
Firebase for real time chat
Jenkins for develops, deployments, and booked activities
Imgix for picture caching and in-the-cloud transformations