circleci   539

« earlier    

How to Design Services for Continuous Deployment: 3 Best Practices - CircleCI
Any service that we run in production might be terminated at any time, and the danger is that a service might consume a message from a message queue, and be shut down before it has a chance to take the required action. This has the same effect as the message being lost. To account for this, we defer acknowledging the receipt of messages until we have performed the required action.

In the case of running a build, this means that we dequeue a message, create a record in a database to represent the build, and then acknowledge receipt of the message. The danger now is that the service might be terminated after creating the record in the database, but before acknowledging the message. If this occurs, RabbitMQ will re-enqueue the message and attempt delivery again, to a different consumer of the queue.

We use the following patterns when consuming from RabbitMQ:

1. We make sure that all exchanges and queues are declared as durable and we disable auto-delete.
2. We ensure that messages as marked as persistent.
3. We disable auto-acknowledgement of messages in our queue consumers, and instead opt to manually ack or nack messages.
4. We add a unique ID or idempotency key to messages, so that the consumer can de-dupe messages where required.
5. Passing the responsibility for de-duping messages as far downstream as possible keeps our services as simple as possible.
rabbitmq  circleci  ci  kubernetes  k8s  architecture  idempotency  microservices 
6 weeks ago by hellsten
Pre-Built CircleCI Docker Images - CircleCI
Listing of available images maintained by CircleCI
circleci  docker 
7 weeks ago by seannui

« earlier    

related tags

(popular  -  appraisals  approve  arc  architecture  article  autobuild  aws  blog  book  bookmarks)  business  cakephp  capybara  careerdevelopment  ci/cd  ci  cicd  classmethod  codecov  codepipeline  conferences  config  configuration  continuous  continuous_delivery  continuous_deployment  continuous_integration  continuousdelivery  continuousintegration  csfixcer  cypress  datadog  ddd  delivery  deploy  deployment  development  devops  docker  drupal  ecs  elixir  engineering  environment  example  feed  gatsby  getting-started  git-pr-release  git  gitbucket  github  golang  growth  heroku  hiring  hugo  idempotency  ifttt  image  important  integration  jenkins  k8s  kayac  kubernetes  ladders  leadership  lighthouse  linode  lolipop  management  mercari  microservices  migration  netlify  orb  people  performance  phoenix  pocket  postgres  postgresql  prh  public  rabbitmq  rails  re:view  react  recruitment  redmine  redpen  reg-suit  repo2docker  reviewdog  rspec  ruby  s3  sample  serverless  slack  slide  software  speaking  sre  ssh  storybook  template  terraform  test  testing  textlint  the  tips  todo  tutorial  validator  vim  web  work  youtube  zozo 

Copy this bookmark: