Pinterest Visual Signals Infrastructure: Evolution from Lambda to Kappa Architecture

2,376
Pinterest
Pinterest's profile on StackShare is not actively maintained, so the information here may be out of date.

By Ankit Patel | Software engineer, Content Acquisition and Media Platform


With the growing need for machine learning signals from Pinterest’s huge visual dataset, we decided to take a closer look at our infrastructure that produces and serves these signals. A few parameters we were particularly interested in were signal availability, infra complexity and cost optimization, tech integration, developer velocity, and monitoring. In this post, we will describe our journey from a Lambda architecture to the new real-time signals infrastructure inspired by Kappa architecture.

Background

In order to understand the existing visual signals infrastructure, we need to understand some of the basic content processing systems at Pinterest. Pinterest’s Content Acquisition and Media Platform, formerly known as Video and Image Platform (VIP), is responsible for ingesting, processing, and serving all of Pinterest’s content on every surface of the application. We ingest media at a massive scale every single day. This post will not go into details about the ingestion and serving part, and it will mostly focus on the processing part, as that is where most of the magic happens.

Media is ingested through 50 different pipelines. Pipelines are namespaces in VIP systems, e.g. Pinner uploaded content, crawled images, shopping images, video keyframes, user profile images, etc. Each pipeline maps to custom media processing configurations tailored for the use case it serves.

When we started building our visual signals processing infrastructure, we utilized this existing namespace philosophy and also partitioned our visual signals around pipelines. Pinterest’s homegrown signal processing and serving tech stack is called Galaxy. Namespaces keyed by different entity IDs in Galaxy are called Joins or Galaxies. Each VIP pipeline is mapped to their equivalent Galaxy. Sometimes we combine multiple similar pipelines into a single galaxy, as they are closely related.

Lambda Architecture

Until recently, we used the Lambda architecture illustrated below to compute visual signals from our media content.

As you can see in the diagram above, there are 2 modes to this architecture: online and offline. Let’s discuss the offline architecture first.

  1. A nightly workflow (Hadoop based map-reduce job) is scheduled to run. We calculate the delta unique image signatures from that particular day and create a new partition.
  2. We then create batches of image signatures and enqueue PinLater jobs for processing these batches.
  3. We spin up a GPU cluster with the ML models needed for the signal computation and then start processing the PinLater Jobs. This is an expensive cluster.
  4. We download the image from Amazon S3, run the model inference on them, and then store the output in S3. We would then spin down the GPU cluster to optimize EC2 spend.
  5. The signal is generated in a delimited bytes format with Protobuf encoded values.
  6. We kickoff a Workflow which transforms this output into equivalent Apache Thrift encoding because Pinterest heavily uses Thrift as its wire format and storage for data.
  7. Thrift output is stored in a Parquet columnar Hive table. Downstream batch clients consume this output.
  8. In order to support real time RPC clients, we have a final workflow that uploads the Hive partition to a Rockstore key value pair database.
  9. Galaxy Signal Service provides an RPC API to look up these signals from Rockstore for our online clients.

As you can see, there are a lot of moving pieces in the above design. Even though these processes matured over time and became more stable, VIP team engineers faced frequent issues while on call. Some of the biggest concerns were:

  • Workflows depending on other workflow
  • Consumers have to wait 24 hours for the signals to be available
  • Application logic issues are extremely hard to debug
  • Granular retries don’t exist, it’s all or nothing
  • Delays due to the nature of these systems

As we continued to build additional features that are powered by these machine learning signals, the need for producing these signals faster became a priority across the company. That is where the online mode comes into picture:

  1. We create a PinLater job for each image signature in real time.
  2. In this Job, we call a GPU cluster running the machine learning model inference service to calculate a signal and directly store its result into the key value pair based Rockstore database. GSS (Galaxy Signal Service) would then serve this signal.
  3. We then publish an event through Kafka to notify the downstream consumers about the signal availability.
  4. Downstream clients consume this event and fetch the signal from GSS in real time.

VIP wasn’t the only team in Pinterest that was getting attracted to this new paradigm of signal processing. Other teams became excited about the idea of having their signals calculated in real time. It provided more visibility into the signal generation compared to the black box that is hadoop based workflows. This approach came with multiple benefits like:

  • Better developer experience
  • Easier to debug, test, and deploy changes
  • Granular retries
  • Low latency signals

However, it came with its share of cons as well. The main ones being:

  • Complex operations, like group bys and signal joins, are not possible with a simple event-driven processing framework like Pinlater. We needed a robust stream processing framework like Apache Flink.
  • The extra cost of running a duplicate GPU cluster that processes the same pins as the batch pipeline on a continuous basis.
  • There was no shared infrastructure to address common needs.

Kappa Architecture

Finally, the Signal Platform team at Pinterest saw an opportunity to address this concern for all signal developers and build the next version of signal development infrastructure called “Near-real-time Galaxy,” or simply NRTG. The technologies of choice were Apache Kafka and Apache Flink. Flink seemed like it was specifically designed to address the concerns mentioned above. Given that the Signal Platform team already had a framework in place to build signals on a batch technology using Galaxy Dataflow APIs, extending it to also work on a stream technology was arguably the best way forward without causing massive amounts of refactoring, rewriting, or just reinventing.

The VIP team decided to be among the early adopters of this initiative as our media signals are some of the most upstream in the whole tree of signals at Pinterest, so it would naturally be the easiest to onboard a platform while it is still being built. We scoped out the signals we wanted to experiment with and got started on this mission.

The gist of it is very simple: you would write a simple flink job that computes the signal in streaming (on Apache Flink). NRTG would make this process easy and quick by leveraging standard design patterns and annotations.

Based on the annotations, the NRTG framework mentioned above does most of the heavy lifting away hidden from the signal developers. The configs and the mapping to underlying native Flink is managed by this middleware layer. This makes signal development extremely fast because the developers do not need to learn Flink in detail as they are already familiar with these annotations. Xenon (Flink) platform team at Pinterest provides the infrastructure capabilities to deploy and maintain Flink applications.

Once we onboarded to NRTG, we wanted to turn down our existing batch workflows setup. There are a number of consumers who consume these signals in batch. We had to provide a solution that would work for them from our streaming pipelines. In order to simulate a daily Hive table for our signals, we wrote a simplified workflow that takes a daily dump of our KVStore and transforms it into existing Hive output. No GPU computations were required to recompute the signal values — the data was simply computed in streaming, moved to S3 via a daily dump, and filtered to the correct format. This not only allowed us to save on the GPU cost but also trim down chained complex workflows design into a simple data transformation job. With the FlinkSQL being in active development, we will be able to completely migrate the offline portion from Spark/Hadoop to Flink.

Conclusion

Migration to this new fast-signals infrastructure is the beginning of a great future for Pinterest in signal generation. It allows the signal developers to quickly build signals with a lot less learning curve. Underlying Flink capabilities also support advanced signals design. Even though batch backfill support is a work in progress in NRTG and the signal producers need to adapt outputs to avoid disruption to their consumers, the benefits still outweigh the costs of duplication in the existing lambda infrastructure. NRTG team already has this in the roadmap to offer end to end support by providing Hive integration as part of the framework. Bringing the end to end lifecycle of a signal under one platform would massively benefit the innovation and productizing ideas across different teams at Pinterest. It has reduced the infra complexity, and we are able to leverage cost optimization on GPU and other compute resources. We expect other teams at Pinterest to follow in the same footsteps and boost their developer velocity by moving to a more simple and robust architecture as outlined in this blog.

This project is a joint effort across multiple teams at Pinterest: Video & Image Platform (VIP), Near-real time Galaxy (NRTG), Xenon, Hermes, Rockstore, and Visual Search.

Pinterest
Pinterest's profile on StackShare is not actively maintained, so the information here may be out of date.
Tools mentioned in article
Open jobs at Pinterest
Software Engineer
Warsaw, POL
<div class="content-intro"><p><strong>About Pinterest</strong><span style="font-weight: 400;">:&nbsp;&nbsp;</span></p> <p>Millions of people across the world come to Pinterest to find new ideas every day. It’s where they get inspiration, dream about new possibilities and plan for what matters most. Our mission is to help those people find their inspiration and create a life they love.&nbsp;In your role, you’ll be challenged to take on work that upholds this mission and pushes Pinterest forward. You’ll grow as a person and leader in your field, all the while helping&nbsp;Pinners&nbsp;make their lives better in the positive corner of the internet.</p> <p><em>Our new progressive work model is called PinFlex, a term that’s uniquely Pinterest to describe our flexible approach to living and working. Visit our </em><a href="https://www.pinterestcareers.com/pinflex/" target="_blank"><em><u>PinFlex</u></em></a><em> landing page to learn more.&nbsp;</em></p></div><p><strong>What you’ll do</strong></p> <ul> <li style="font-weight: 400;"><strong>Impact &amp; Mission. </strong><span style="font-weight: 400;">Join a small team that works to implement a wide range of techniques to deliver value for Pinners and Creators&nbsp;</span></li> <li style="font-weight: 400;"><strong>Fast iterations</strong><span style="font-weight: 400;">. Prototype through fast iteration to explore various opportunities for all of Pinterest’s global Pinners and Creators.</span></li> <li style="font-weight: 400;"><strong>Collaboration</strong><span style="font-weight: 400;">. Integrate with many other internal engineering teams across Pinterest to support the end-to-end user journeys. Work in dynamic and diverse environments alongside engineering (closely with iOS/Android teams), products and designers. Evangelization across engineering to implement and adopt best practices to simplify our codebase and promote growth</span></li> <li style="font-weight: 400;"><strong>Ownership</strong><span style="font-weight: 400;">. Take ownership of product quality and release processes to deliver high quality user experiences.</span></li> <li style="font-weight: 400;"><strong>Feature Development. </strong><span style="font-weight: 400;">Work across all parts of the stack and be flexible working with different technologies. Adding a new functionality on both the backend and Web sides to bring the value for millions of users</span></li> <li style="font-weight: 400;"><strong>Pinterest Video Actionability. </strong><span style="font-weight: 400;">To bring the maximum contribution by developing features that increase our video actionability for Pinners around the world</span></li> </ul> <p>&nbsp;</p> <p><strong>What we’re looking for</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">3+ years of full stack development (Web/Mobile Web) building successful products and/or systems, preferably on customer-facing products.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Proficiency in common backend tech stacks for RESTful API, storage, caching and data processing.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience/familiarity with Javascript, Python, React, GraphQL, mysql, bash/scripting or similar</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong command of SQL-like query languages to be used for processing data and automated workflows</span><span style="font-weight: 400;">.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Self-driven and openness to learn quickly, explore, flexibility without being afraid to dig deep</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong communication skills and great product intuition</span><span style="font-weight: 400;">.</span></li> </ul> <p>This position is not eligible for relocation assistance.</p> <p>&nbsp;</p> <p>#LI-HYBRID</p> <p>#LI-DL2</p><div class="content-conclusion"><p><strong>Our Commitment to Diversity:</strong></p> <p>At Pinterest, our mission is to bring everyone the inspiration to create a life they love—and that includes our employees. We’re taking on the most exciting challenges of our working lives, and we succeed with a team that represents an inclusive and diverse set of identities and backgrounds.</p></div>
Machine Learning Engineer, Tech Lead ...
San Francisco, CA, US; , CA, US
<div class="content-intro"><p><strong>About Pinterest</strong><span style="font-weight: 400;">:&nbsp;&nbsp;</span></p> <p>Millions of people across the world come to Pinterest to find new ideas every day. It’s where they get inspiration, dream about new possibilities and plan for what matters most. Our mission is to help those people find their inspiration and create a life they love.&nbsp;In your role, you’ll be challenged to take on work that upholds this mission and pushes Pinterest forward. You’ll grow as a person and leader in your field, all the while helping&nbsp;Pinners&nbsp;make their lives better in the positive corner of the internet.</p> <p><em>Our new progressive work model is called PinFlex, a term that’s uniquely Pinterest to describe our flexible approach to living and working. Visit our </em><a href="https://www.pinterestcareers.com/pinflex/" target="_blank"><em><u>PinFlex</u></em></a><em> landing page to learn more.&nbsp;</em></p></div><p><span style="font-weight: 400;">The Advanced Technologies Group (ATG) is Pinterest’s advanced machine learning team. It keeps Pinterest at the forefront of machine learning technology across multiple application areas including recommendations, ranking, content understanding, and more. It is a high impact applied team that works horizontally across the company on state of the art AI and ML and works on directly bringing that technology to the product in collaboration with product engineering teams. The team publishes its work in applied research conferences, but the main contribution of the team's work is to drive top line metric impact across the company for our 400M+ monthly active users.</span></p> <p><strong>What you'll do:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Lead projects that involve developing and deploying state of the art (and beyond) ML models in production systems across the company at scale for hundreds of millions of users.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Help to define and drive forward looking ML strategy for the team and across the company.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Collaborate with other engineering teams (infrastructure, user modeling, content understanding) to leverage their platforms and signals and work with them to collaborate on the adoption and evaluation of new technologies.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Mentor junior engineers on the ATG and partner teams and help to uplevel ML talent across the company.</span></li> </ul> <p><strong>What we're looking for:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with state of the art ML modeling techniques and approaches like transformers, self supervised pre-training, generative modeling, LLMs, etc.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with large scale data processing (e.g. Hive, Scalding, Spark, Hadoop, Map-reduce)</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Hands-on experience training and applying models at scale using deep learning frameworks like PyTorch or Tensorflow. Successful candidates in this role need to be able to build bridge state of the art approaches to real world impact.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">8+ years working experience in the engineering teams that build large-scale ML-driven user-facing products</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">3+ years experience leading cross-team engineering efforts.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong execution skills in project management</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Masters or PhD in Comp Sci or related fields</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Understanding of an object-oriented programming language (Java, C++, Python)&nbsp;</span></li> </ul> <p><strong>Desired skills:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience in working on, backend and ML systems for large-scale user-facing products, and have a good understanding of how they all work.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience in closely collaborating with other engineering teams to ship new ML technologies to improve recommendation, content understanding, and ranking systems at scale.</span></li> </ul> <p>This position is not eligible for relocation assistance.</p> <p><span style="font-weight: 400;">#LI-SA1</span></p> <p><span style="font-weight: 400;">#LI-REMOTE</span></p><div class="content-pay-transparency"><div class="pay-input"><div class="description"><p>At Pinterest we believe the workplace should be equitable, inclusive, and inspiring for every employee. In an effort to provide greater transparency, we are sharing the base salary range for this position. The position is also eligible for equity. Final salary is based on a number of factors including location, travel, relevant prior experience, or particular skills and expertise.</p> <p><em><span style="font-weight: 400;">Information regarding the culture at Pinterest and benefits available for this position can be found <a href="https://www.pinterestcareers.com/pinterest-life/" target="_blank" rel="noopener">here</a>.</span></em></p></div><div class="title">US based applicants only</div><div class="pay-range"><span>$296,400</span><span class="divider">&mdash;</span><span>$459,400 USD</span></div></div></div><div class="content-conclusion"><p><strong>Our Commitment to Diversity:</strong></p> <p>Pinterest is an equal opportunity employer and makes employment decisions on the basis of merit. We want to have the best qualified people in every job. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, protected veteran status, or any other characteristic under federal, state, or local law. We also consider qualified applicants regardless of criminal histories, consistent with legal requirements. If you require an accommodation during the job application process, please notify&nbsp;<a href="mailto:accessibility@pinterest.com">accessibility@pinterest.com</a>&nbsp;for support.</p></div>
Staff Software Engineer, Ads ML Infra...
Palo Alto, CA, US; , CA, US
<div class="content-intro"><p><strong>About Pinterest</strong><span style="font-weight: 400;">:&nbsp;&nbsp;</span></p> <p>Millions of people across the world come to Pinterest to find new ideas every day. It’s where they get inspiration, dream about new possibilities and plan for what matters most. Our mission is to help those people find their inspiration and create a life they love.&nbsp;In your role, you’ll be challenged to take on work that upholds this mission and pushes Pinterest forward. You’ll grow as a person and leader in your field, all the while helping&nbsp;Pinners&nbsp;make their lives better in the positive corner of the internet.</p> <p><em>Our new progressive work model is called PinFlex, a term that’s uniquely Pinterest to describe our flexible approach to living and working. Visit our </em><a href="https://www.pinterestcareers.com/pinflex/" target="_blank"><em><u>PinFlex</u></em></a><em> landing page to learn more.&nbsp;</em></p></div><p><span style="font-weight: 400;">Pinterest is one of the fastest growing online advertising platforms. Continued success depends on the machine-learning systems, which crunch thousands of signals in a few hundred milliseconds, to identify the most relevant ads to show to Pinners. You’ll join a small team with high impact, which designs high-performance and efficient ML systems, in order to power the most critical, revenue-generating algorithms and models at Pinterest. </span><span style="font-weight: 400;">Ads ML Infra team</span><span style="font-weight: 400;"> holds a mission of accelerating machine learning velocity and quality for Pinterest Ads by providing simple, efficient and performant infrastructure, which includes:&nbsp;</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Ads ML Feature Systems - Streaming &amp; batch feature engineering infrastructure, to efficient&nbsp; feature governance systems and high quality signal for Pinterest ads.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Ads ML Serving Systems - Building highly efficient, scalable and performant ads online inference systems on top of most advanced technologies including GPU and model quantization.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Ads ML Training systems - Use the principles of </span><a href="https://www.youtube.com/watch?v=06-AZXmwHjo"><span style="font-weight: 400;">data-centric AI </span></a><span style="font-weight: 400;">to speed up developer velocity and tackle the most challenging problem in the online advertising industry - privacy preserve ML.&nbsp;</span></li> </ul> <p><strong>What you’ll do:</strong></p> <ul> <li><span style="font-weight: 400;">Build ML system solutions (training, inference and feature infra) that directly power new machine learning models to uplevel Pinterest monetization business to 100X+ scale.</span></li> <li><span style="font-weight: 400;">Tackle unique challenges in the online advertising industry including ML data privacy, conversion/clickthrough modelling systems and high performance ML training and serving.</span></li> <li><span style="font-weight: 400;">Work closely with Ads quality teams, build ML ecosystem solutions and tools to improve Ads machine learning innovation velocity.&nbsp;</span></li> <li><span style="font-weight: 400;">Partner with data and infrastructure teams, to up-level the deployment and ML monitoring tools for all Ads Serving engineers.</span></li> </ul> <p><strong>What we’re looking for:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">7+ years of relevant industry experience in leading the design of large scale &amp; production ML infra systems.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong communicator and collaborative team player.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Expertise with at least one state-of-art programming language (Java, C++, Python).&nbsp;</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with building distributed systems or recommendation infrastructure</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with at least one ML dev framework (Tensorflow, Pytorch)&nbsp;&nbsp;</span></li> </ul> <p>This position is not eligible for relocation assistance.</p> <p>#LI-REMOTE <span data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;#LI-CL5&quot;}" data-sheets-userformat="{&quot;2&quot;:8705,&quot;3&quot;:{&quot;1&quot;:0},&quot;12&quot;:0,&quot;16&quot;:12}">#LI-CL5</span></p><div class="content-pay-transparency"><div class="pay-input"><div class="description"><p>At Pinterest we believe the workplace should be equitable, inclusive, and inspiring for every employee. In an effort to provide greater transparency, we are sharing the base salary range for this position. The position is also eligible for equity. Final salary is based on a number of factors including location, travel, relevant prior experience, or particular skills and expertise.</p> <p><em><span style="font-weight: 400;">Information regarding the culture at Pinterest and benefits available for this position can be found <a href="https://www.pinterestcareers.com/pinterest-life/" target="_blank" rel="noopener">here</a>.</span></em></p></div><div class="title">US based applicants only</div><div class="pay-range"><span>$207,500</span><span class="divider">&mdash;</span><span>$311,200 USD</span></div></div></div><div class="content-conclusion"><p><strong>Our Commitment to Diversity:</strong></p> <p>Pinterest is an equal opportunity employer and makes employment decisions on the basis of merit. We want to have the best qualified people in every job. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, protected veteran status, or any other characteristic under federal, state, or local law. We also consider qualified applicants regardless of criminal histories, consistent with legal requirements. If you require an accommodation during the job application process, please notify&nbsp;<a href="mailto:accessibility@pinterest.com">accessibility@pinterest.com</a>&nbsp;for support.</p></div>
Backend Engineer
Mexico City, MX; , MX
<div class="content-intro"><p><strong>About Pinterest</strong><span style="font-weight: 400;">:&nbsp;&nbsp;</span></p> <p>Millions of people across the world come to Pinterest to find new ideas every day. It’s where they get inspiration, dream about new possibilities and plan for what matters most. Our mission is to help those people find their inspiration and create a life they love.&nbsp;In your role, you’ll be challenged to take on work that upholds this mission and pushes Pinterest forward. You’ll grow as a person and leader in your field, all the while helping&nbsp;Pinners&nbsp;make their lives better in the positive corner of the internet.</p> <p><em>Our new progressive work model is called PinFlex, a term that’s uniquely Pinterest to describe our flexible approach to living and working. Visit our </em><a href="https://www.pinterestcareers.com/pinflex/" target="_blank"><em><u>PinFlex</u></em></a><em> landing page to learn more.&nbsp;</em></p></div><p><span style="font-weight: 400;">We are looking for inquisitive, well-rounded Backend engineers to join our Core Engineering teams. Working closely with product managers, designers, and backend engineers, you’ll play an important role in enabling the newest technologies and experiences. You will build robust frameworks &amp; features. You will empower both developers and Pinners alike. You’ll have the opportunity to find creative solutions to thought-provoking problems. Even better, because we covet the kind of courageous thinking that’s required in order for big bets and smart risks to pay off, you’ll be invited to create and drive new initiatives, seeing them from inception through to technical design, implementation, and release.</span></p> <p>&nbsp;</p> <p><strong>What you’ll do:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Write high-quality, performant Python/Java code to build out workflows leveraging API’s that enable our systems that maintain Pinner trust from a Privacy and regulatory compliance perspective</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Contribute to and lead each step of the product development process, from ideation to implementation to release; from rapidly prototyping, running A/B tests, to architecting and building solutions that leverage large-scale data</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Partner with design, product, and backend teams to build end-to-end functionality</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Put on your Pinner hat to suggest new product ideas and features</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Employ automated testing to build features with a high degree of technical quality, taking responsibility for the components and features you develop</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Grow as an engineer by working with world-class peers on varied and high-impact projects</span></li> </ul> <p>&nbsp;</p> <p><strong>What we’re looking for:</strong></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Deep understanding of API/workflow&nbsp; development and best practices in Python or Java</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">3+ years of industry API and backend development experience, building API endpoints for consumer or business-facing products</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Proficiency in common backend tech stacks for RESTful API, storage, caching, and data processing</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience in following best practices in writing reliable and maintainable code that may be used by many other engineers</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Ability to keep up-to-date with new technologies to understand what should be incorporated</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong collaboration and communication skills</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with GraphQL large data processing is a plus</span></li> </ul> <p>&nbsp;</p> <p><span style="font-weight: 400;">This position is not eligible for relocation assistance.</span></p> <p>#LI-REMOTE</p> <p><span data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;#LI-MM&quot;}" data-sheets-userformat="{&quot;2&quot;:8705,&quot;3&quot;:{&quot;1&quot;:0},&quot;12&quot;:0,&quot;16&quot;:12}">#LI-MM</span></p><div class="content-conclusion"><p><strong>Our Commitment to Diversity:</strong></p> <p>Pinterest is an equal opportunity employer and makes employment decisions on the basis of merit. We want to have the best qualified people in every job. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, protected veteran status, or any other characteristic under federal, state, or local law. We also consider qualified applicants regardless of criminal histories, consistent with legal requirements. If you require an accommodation during the job application process, please notify&nbsp;<a href="mailto:accessibility@pinterest.com">accessibility@pinterest.com</a>&nbsp;for support.</p></div>
You may also like