Avatar of StackShare Editors
Shared insights
on
ReduxReduxReactReact
at

By early 2017, Airbnb was seeing around 75 million searches each day. In the midst of that growth, the team decided to rearchitect the web experience.

In the prior architecture, each page of the user’s journey, from searching, to viewing listings, to booking, was delivered standalone via Rails. The goal of the redesign was to maximize speed and fluidity.

In the new configuration, Hypernova is used to server-render React, and Redux is used for all API data and “globals,” like authentication state and experiment configurations.

READ MORE
Rearchitecting Airbnb’s Frontend - Airbnb Engineering & Data Science - Medium (medium.com)
22 upvotes·1.7M views

Around the time of their Series A, Pinterest’s stack included Python and Django, with Tornado and Node.js as web servers. Memcached / Membase and Redis handled caching, with RabbitMQ handling queueing. Nginx, HAproxy and Varnish managed static-delivery and load-balancing, with persistent data storage handled by MySQL.

READ MORE
What is the technology stack behind Pinterest? - Quora (quora.com)
15 upvotes·1.6M views
Shared insights
on
SolrSolrPHPPHPJavaJavaMySQLMySQL
at

One of the earliest public references to Slack’s stack comes from a Twitter conversation. The Slack account states that “the messaging server is java, the app is php, db is mysql and solr for search,” and that uploaded files are “Stored on S3, but private files require authentication so requests go through the app.”

READ MORE
Slack on Twitter: "@markpapadakis No posts yet, but: messaging server is java, the app is php, db is mysql and solr for search. Tried n true." (twitter.com)
14 upvotes·275.8K views

In 2014, PagerDuty struggled with safely releasing reliable mobile applications to users due to some issues with how the code was being packaged and handled.

PagerDuty’s mobile apps are hybrid and used Cordova to share code between platforms. Coding was straightforward but packaging was not, as a separated Gulp-based build process was also being used. The PagerDuty team took a page from Java and started creating software artifacts.

Rather than checking in transformed code or publishing modules to NPM, the team started creating zipped-up build artifacts, which coincided perfectly with GitHub's Releases feature which arrived in 2013. So despite JavaScript lacking a standard packaged app format like a JAR, PagerDuty was still able to improve the build times and sizes of their mobile apps.

READ MORE
Lessons Learned from Creating a Reliable Mobile Build | PagerDuty (pagerduty.com)
13 upvotes·102.4K views
Shared insights
on
KafkaKafkaHadoopHadoop
at

The early data ingestion pipeline at Pinterest used Kafka as the central message transporter, with the app servers writing messages directly to Kafka, which then uploaded log files to S3.

For databases, a custom Hadoop streamer pulled database data and wrote it to S3.

Challenges cited for this infrastructure included high operational overhead, as well as potential data loss occurring when Kafka broker outages led to an overflow of in-memory message buffering.

READ MORE
Scalable and reliable data ingestion at Pinterest - Pinterest Engineering - Medium (medium.com)
11 upvotes·511.6K views
Needs advice
on
TypeScriptTypeScript
and
Flow (JS)Flow (JS)

From a StackShare community member: "We are looking to rewrite our outdated front-end with TypeScript. Right now we have a mix of CoffeeScript and vanilla JavaScript. I have read that adopting TypeScript can help enforce better code quality, and best practices. I also heard good things about Flow (JS). Which one would you recommend and why?"

READ MORE
7 upvotes·317.7K views
Replies (14)
Recommends
on
TypeScript

I use TypeScript because:

  • incredible developer tooling and community support
  • actively developed and supported by Microsoft (yes, I like Microsoft) ;)
  • easier to make sense of a TS codebase because the annotations provide so much more context than plain JS
  • refactors become easier (VSCode has superb support for TS)

I've switched back and forth between TS and Flow and decided a year ago to abandon Flow completely in favor of TS. I don't want to bash Flow, however, my main grievances are very poor tooling (editor integration leaves much to be desired), a slower release cycle, and subpar docs and community support.

READ MORE
18 upvotes·125.2K views
Recommends
on
TypeScript

I use TypeScript because it isn't just about validating the types I'm expecting to receive though that is a huge part of it too. Flow (JS) seems to be a type system only. TypeScript also allows you to use the latest features of JavaScript while also providing the type checking. To be fair to Flow (JS), I have not used it, but likely wouldn't have due to the additional features I get from TypeScript.

READ MORE
11 upvotes·158.8K views
View all (14)
Needs advice
on
npmnpm
and
YarnYarn

From a StackShare Community member: “I’m a freelance web developer (I mostly use Node.js) and for future projects I’m debating between npm or Yarn as my default package manager. I’m a minimalist so I hate installing software if I don’t need to- in this case that would be Yarn. For those who made the switch from npm to Yarn, what benefits have you noticed? For those who stuck with npm, are you happy you with it?"

READ MORE
7 upvotes·265.1K views
Replies (14)
Lead Developer at Chore Champion·

We use Yarn because it allows us to more simply manage our node_modules. It also simplifies commands and increases speed when installing modules. Our teams module download time was cut in half after switching from NPM to Yarn. We now require all employees to use Yarn (to prevent errors with package-lock.json and yarn.lock).

READ MORE
11 upvotes·1 comment·240.6K views
Damian Esteban
Damian Esteban
·
February 15th 2020 at 1:04AM

We recently made the switch to Yarn mostly because of workspaces, speed, and the features in the Yarn v2 release. It has been great.

·
Reply
Recommends
on
npm

I use npm since new version is pretty fast as well (Yarn may be still faster a bit but the difference isn't huge). No need for other dependency and mainly Yarn sometimes do not work. Sometimes when I want to install project dependencies I got error using Yarn but with npm everything is installed correctly.

READ MORE
8 upvotes·230.8K views
View all (14)
Needs advice
on
SlackSlackDiscordDiscord
and
GitterGitter

From a StackShare Community member: “We’re about to start a chat group for our open source project (over 5K stars on GitHub) so we can let our community collaborate more closely. The obvious choice would be Slack (k8s and a ton of major projects use it), but we’ve seen Gitter (webpack uses it) for a lot of open source projects, Discord (Vue.js moved to them), and as of late I’m seeing Spectrum more and more often. Does anyone have experience with these or other alternatives? Is it even worth assessing all these options, or should we just go with Slack? Some things that are important to us: free, all the regular integrations (GitHub, Heroku, etc), mobile & desktop apps, and open source is of course a plus."

READ MORE
6 upvotes·1.2M views
Replies (4)
Head of HR at Rawnet·

We use Slack to increase productivity by simplifying communication and putting Slack in the middle of our communication workflow #Communications #Collaboration

READ MORE
4 upvotes·115.9K views
Expert En Dveloppement Web Et Systmes Dinformations, Designer UX, UI, Co-grant at Wixiweb·

We use Discord to tracking some action and errors (logs / alerting / assertion). it's free and simple to use with mobile application et notifications

READ MORE
4 upvotes·193.2K views
View all (4)

The Slack desktop app was originally written us the MacGap framework, which used Apple’s WebView to host web content inside of a native app frame. As this approach continued to present product limitations, Slack decided to migrate the desktop app to Electron. Electron is a platform that combines the rendering engine from Chromium and the Node.js runtime and module system. The desktop app is written as a modern ES6 + async/await React application.

For the desktop app, Slack takes a hybrid approach, wherein some of the assets ship as part of the app, but most of their assets and code are loaded remotely.

READ MORE
Building Hybrid Applications with Electron – Several People Are Coding (slack.engineering)
6 upvotes·668.1K views

Data science and engineering teams at Lyft maintain several big data pipelines that serve as the foundation for various types of analysis throughout the business.

Apache Airflow sits at the center of this big data infrastructure, allowing users to “programmatically author, schedule, and monitor data pipelines.” Airflow is an open source tool, and “Lyft is the very first Airflow adopter in production since the project was open sourced around three years ago.”

There are several key components of the architecture. A web UI allows users to view the status of their queries, along with an audit trail of any modifications the query. A metadata database stores things like job status and task instance status. A multi-process scheduler handles job requests, and triggers the executor to execute those tasks.

Airflow supports several executors, though Lyft uses CeleryExecutor to scale task execution in production. Airflow is deployed to three Amazon Auto Scaling Groups, with each associated with a celery queue.

Audit logs supplied to the web UI are powered by the existing Airflow audit logs as well as Flask signal.

Datadog, Statsd, Grafana, and PagerDuty are all used to monitor the Airflow system.

READ MORE
Running Apache Airflow At Lyft – Lyft Engineering (eng.lyft.com)
6 upvotes·527.3K views