The Tech Heap at Coffees Meets Bagel. The audience is a mobile-first and mobile-only team

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
  • Regarding tracking:

  • 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
  • Leave a Reply