The Tech Pile at Coffee Matches Bagel. We have been a mobile-first and mobile-only team
Probably the most typical concerns that interview prospects inquire whenever they interview here at java matches Bagel is actually, “what exactly is your own technical pile?” It’s furthermore probably the most typical concerns I get around San Francisco while participating in tech meetups and meetings and this type of. Thus for your family interested applicants and anybody else inquisitive just how a high level dating company has built their platform, here you go, I’ll attempt to split it lower individually.
1st, at a high-level:
Our Android software are local (coffee)
All of our iOS app was native (Swift + unbiased C)
Our very own backend software layer was Python & Scala
We use Golang for most data pipeline tasks
Our very own backend is generally in AWS with a little in yahoo affect
We strive for completely automated testing
Today, let’s get into some nitty-gritty, shall we?
What makes we mobile best?
We have a squeeze page (and a few promotion internet every now and then), nevertheless the best access points for our application are all of our mobile Android and iOS clients. We actually began with merely an internet site in 2012, but the moment we established our iOS app in 2013, our very own web traffic fell to something like 40per cent of our own full traffic. Next, whenever we founded the Android os application in 2014, site traffic plummeted to less than 5percent of total website traffic. At that point, we decided it just had beenn’t beneficial to utilize our very own restricted manufacturing methods to support website, so we fell it and transformed they into merely a landing web page that directs browsers to either the App shop or Enjoy shop.
I am going to create the details of your cellular design for the next blog post, ideally is penned by one of the exceptional cellular engineers, but at a high-level your mobile development strategy are:
The cellular programs become “dumb” consumers. Her main work occurs the info delivered by our very own backend in an engaging, performant, secure, and beautiful style. We attempt by adhering semi-strictly to RESTful web provider principles.
Divorce of issues is important for maintainability, stability, and testability. New code written should stick to a VIPER routine (for iOS) or MVVM (for Android).
We’re on the way to automating UI examination on iOS making use of XCTest.
We’re currently automating the majority of our UI tests, and functional evaluating, on Android making use of Appium.
third party knowledge from the mobile area:
apple’s ios staff uses Bitrise for CI
Android os team utilizes Jenkins for CI
Firebase for real-time speak
Localytics for statistics
Textile (Crashlytics) for collision reporting and beta people management
Facebook for authentication
As I’ve discussed earlier, we have been about completely in AWS, for best or tough, and then we are practically completely a Python store. I’ll keep the specifics your backend buildings for hopefully the next post from a single of your excellent backend designers, but for right here’s some more information.
We make use of many AWS providers:
Cloudfront to provide united states fast global access to cached information
S3 for image storage space, data backups, and hosting fixed the internet sites
SQS (Simple Queuing Service) for queuing upwards various asynchronous activities
ALB (program Load Balancer) for balancing load and routing people to the best solutions
Cloudwatch for monitoring and alarming
Redshift for information warehousing
ElasticCache for handled Redis for the algorithm employees
VPC (internet exclusive affect) to protect our very own servers from the outdoors industry and from just one another
Kinesis to flow occasions throughout our bodies
We additionally use a number of different databases technologies:
Redis (Monolith — master / slave build) w/ HAProxy for heritage in memory space database
Redis (Cluster) for horizontally scalable in memory space databases
Postgres w/ HAProxy for deal database
Cassandra divide over 2 datacenters
ElasticSearch for looking / blocking kind data Spanking dating necessities
With respect to monitoring:
Sentry for mistake stating
Grafana for advanced level dashboards and graphs
Cloudwatch for monitoring and worrying all things AWS connected
Pagerduty for handling all of our on-call plan and waking you right up in the center of the night time
Opscenter for tracking Cassandra
Kibana for log aggregation
Kopf for ElasticSearch spying
Brand-new Relic for host / system wellness spying
Additional third party Treatments server-side:
Localytics for analytics and sending pushes
Mailchimp for sending email messages
Department for back link generation and attribution
Facebook for authentication and mutual buddy data
Firebase for real time speak
Jenkins for builds, deployments, and planned jobs
Imgix for image caching and in-the-cloud transformations