text: When designing modern applications on microservices architecture and systems based on cloud solutions such as AWS, Azure, or Google Cloud imply the need to handle expected failures.
  We can represent the simplest retry in runtime as a rescue block and variable with a count of executed retries.
  Also Ruby has built-in
  retry keyword, an example can be changed in the next way:
  StandardError, for e.g.
  ApiError = Class.new(StandardError)
  rescue StandardError =>…
  There are two most popular ways to manage secrets in your application. …
  In the early stages of development, it may be useful to identify slow queries in time (when you don’t have a paid APM). QueryTrack helps to get notified about slow queries with related data: duration and backtrace.
  Add this line to your application’s
  Gemfile and then execute
  bundle install:
  gem 'query_track'
  To start receiving information about requests you need to create
  config/initializers/query_track.rb where there is a time limit that is specified in seconds and an output channel (for example console logs):
  QueryTrack::Settings.configure do |config|
  config.duration = 0.5
  config.logs = true
  end
  You won't get any notifications without setting the max duration of an SQL query. These settings will show at what point requests are considered to be slow. …
  One of the tools that are rarely covered in the Ruby/Rails world are the message brokers (probably because they mostly written in Java). Everyone are familiar mostly with background jobs processing, but message brokers offer a more flexible approach to asynchronous execution. For example, you can create a message from one application and process it in another and continue executing without waiting for the response.
  Some benefits that you get at the architectural level:
  Fault Tolerance, Guaranteed delivery, Asynchronous communication(through Publish/Subscribe pattern), Loosely coupling, etc.
  One of the messaging brokers that I used is ActiveMQ. ActiveMQ provides most of these features and I will consider building communication using this broker as an example. …
  Rails 5.2 introduced built-in Redis cache store, which allows you to store cache entries in Redis.
  To use Redis as a Rails cache store, use a dedicated cache instance that’s set up as an LRU (Last Recently Used) cache instead of pointing the store at your existing Redis server, to make sure entries are dropped from the store when it reaches its maximum size.
  The Redis store works with the Redis gem and hiredis, as well as providing support for a number of configuration options, like setting one or multiple remote servers.
  To get started, add the redis gem to your…
  Sucker Punch — a single-process Ruby asynchronous processing library that runs with your existing app’s process.
  Gem is built on top of concurrent-ruby and have no dependencies with any data storage, what is both an advantage and a disadvantage.
  Running in the application process really simplifies the deployment process, but If the web processes are restarted with jobs remaining in the queue, they will be lost. …
  Webpack is a module bundler for modern JavaScript applications. The
  import and
  export statements have been standardized in ES2015. They are not supported in browsers yet, but webpack does support them out of the box. But actually it’s more powerful tool which can help us build whole our front-end.
  Let’s start with initializing
  package.json by using
  npm init command.
  Installing globally locks you down to a specific version of webpack and could fail in projects that use a different version. Therefore, we will install it locally.
  npm install --save-dev webpack
  Webpack will be added to
  devDependencies
  Because we are installing webpack locally we have to run it through
  npm….
  There are many reasons to lint the code:
  Git hooks are scripts that execute before or after actions such as: commit, push, and receive. …
  Developers often save time on automation of the deployment process at the beginning of a project. Therefore, some of developers manually start the deployment. As the project becomes larger and the team grows, more features and fixes are released every day. Deployment takes a huge amount of precious time and distracts developers from working on important tasks like reviewing new versions or showing new features or fixes for clients.
  Continuous Delivery is a software development practice that allows for building software in such a way that the new update can be released any time.
  The best practice is to automatically run the command for deployment after successful build passing. CircleCI makes it easy to configure your workflow and push the project to the deployment host. With CircleCI, each successful build of your code is automatically delivered to staging, production or any other stage you require to deliver your application. After the successful (or failed) build passing and deployment you receive an email notification. …. …
  About