The Tech Heap at Coffees Meets Bagel. The audience is a mobile-first and mobile-only team
Very common questions that meeting prospects inquire when they interview here at coffees suits Bagel was, “what’s your tech stack?” it is also one of the more usual issues I have around San Francisco while participating in technology meetups and meetings and such. Therefore for you personally interested candidates and others interesting how a premier tier internet dating providers has established their unique program, here you decide to go, I’ll make an effort to break it lower for you.
Initially, at a high-level:
The Android os application is local (Java)
Our iOS app is actually native (Swift + Objective C)
All of our backend application covering was Python & Scala
We make use of Golang for most data pipeline tasks
All of our backend is certainly caused by in AWS with some in Bing Cloud
We try for fully computerized testing
Today, let’s enter some nitty-gritty, shall we?
Exactly why are we mobile only?
We have a splash page (and several promotion internet sites here and there), although sole accessibility things in regards to our application tend to be our mobile Android and iOS clients. We in fact started out with merely a web site in 2012, but the moment we established our very own iOS app in 2013, the site traffic fallen to something such as 40per cent of one’s total site visitors. Next, when we launched our very own Android software in 2014, web site traffic plummeted to significantly less than 5per cent of overall website traffic. At that time Spanking dating sites, we made the decision it gotn’t worth every penny to make use of all of our limited manufacturing means to support website, therefore we dropped it and transformed it into simply a landing page that directs browsers to either the App shop or Gamble shop.
I’ll leave the specifics of our own cellular architecture for the next article, hopefully is written by one of the excellent cellular engineers, but at a high-level our mobile development approach is actually:
The cellular programs are “dumb” customers. Their own biggest job is present the data sent by our backend in an engaging, performant, stable, and delightful trend. We accomplish this by adhering semi-strictly to RESTful online service axioms.
Separation of questions is essential for maintainability, reliability, and testability. Brand new code written should stay glued to a VIPER routine (for apple’s ios) or MVVM (for Android os).
We’re in relation to automating UI examination on apple’s ios making use of XCTest.
We’re at this time automating the majority of our very own UI evaluating, and useful evaluation, on Android making use of Appium.
3rd Party knowledge on mobile side:
iOS teams uses Bitrise for CI
Android teams utilizes Jenkins for CI
Firebase for real time chat
Localytics for statistics
Textile (Crashlytics) for collision revealing and beta group administration
Fb for verification
As I’ve mentioned before, the audience is around completely in AWS, for much better or bad, and in addition we are almost entirely a Python shop. I’ll create the particulars of your backend design for hopefully another article from one of one’s exemplary backend designers, however for right here’s some more info.
We incorporate a number of AWS service:
Cloudfront provide you rapid worldwide entry to cached sources
S3 for photograph space, facts copies, and hosting fixed the internet sites
SQS (straightforward Queuing services) for queuing upwards numerous asynchronous activities
ALB (Application weight Balancer) for balancing load and routing visitors to the appropriate services
Cloudwatch for spying and worrying
Redshift for facts warehousing
ElasticCache for managed Redis for our formula team
VPC (Virtual personal Cloud) to protect our servers from the external industry and from one another
Kinesis to supply happenings throughout our bodies
We also use several different database technologies:
Redis (Monolith — master / slave set-up) w/ HAProxy for heritage in storage databases
Redis (group) for horizontally scalable in mind databases
Postgres w/ HAProxy for purchase databases
Cassandra divide over 2 datacenters
ElasticSearch for looking / blocking sort facts necessities
Sentry for mistake reporting
Grafana for higher level dashboards and graphs
Cloudwatch for tracking and worrying things AWS associated
Pagerduty for controlling the on-call plan and waking you right up in the night time
Opscenter for monitoring Cassandra
Kibana for sign aggregation
Kopf for ElasticSearch spying
Brand new Relic for servers / system wellness tracking
Some other third party Providers server-side:
Localytics for statistics and sending pushes
Mailchimp for sending emails
Department for hyperlink generation and attribution
Fb for verification and shared pal computations
Firebase for real-time talk
Jenkins for builds, deployments, and planned work
Imgix for image caching and in-the-cloud transformations