Image taken from

Engineers tend to love good stories, so hopefully our 5-year journey of moving towards API composition with GraphQL now in production (serving at peak 110 requests per second at 100ms latency) provides a good story.

[If you’re in a hurry, scroll down to Lessons learned and check out the open-sourced graphql-schema-registry.]


Pipedrive, like many startups, started with PHP-monolith which has since grown into legacy code that we are attempting to get rid of. It is harder to test & deploy on legacy code than with small node/go services and it’s more difficult to grasp, because of so many features that were written more than 5 years ago. Because of this, we have an informal agreement to not add any new functionality to this repo anymore.

Despite its faults, the PHP-monolith still serves the biggest chunk of public API traffic (>80%) and more than 20 internal services depend on it, making it…

If you’ve got a web app that you want to perfectly cover with tests, here is what you should have:

  • backend unit-tests — mostly models and isolated classes are covered — code gets isolated (also single responsibility principle is maintained)
  • frontend unit-tests — karma + phantomjs will check all of your angular-services or backbone-models
  • e2e (scenario, system) tests — most likely based on selenium (protractor, selenide). Slowly, entire functionality of working system with UI gets tested, so you tend to think about use cases
  • db/entity tests with migrations — your DB changes are added to base “from zero” dump and…

Трагические новости и эмоционально окрашенные статьи по-моему надо как-то отмечать, что-бы подбор материалов по-контексту не работал. И это не только касается рекламы, но и автоподборки сопутствующих статей. Только вручную добавленные материалы.

unfortunate ad placement.
— Tom Gara (@tomgara)
24 Март 2014

Конечно на этот счёт социопат либо George Carlin могли бы поспорить что смерть — полезна, смех — тем более, а дополнительные ссылки увеличивают аудиторию сайта. Но я бы поспорил что такое расположение наоборот, вредит рекламодателю и тем более вредит сайту, делая его непрофессиональным

В своём блоге я уже давно добавил возможность прятать рекламу на конкретной странице, но видимо…

Artjom Kurapov

Software Engineer, Core Team at Pipedrive. I like bees, cats and complex spaghetti-systems

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store