In this article, I will explain the term in distributed computing called Partitioning so I will explain the following points

What is Partitioning meaning?

The term Partitioning simply coming from away that every part of our data such as records is owned by one partition so…


In this article, I will explain Redis in system design as I experienced a lot of issues in a legacy system that depends on Redis as a major part of the design and after reading and understanding Redis I understood the issues

What is Redis?

Redis is an open-source, in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. …


What is Kafkana ?

Kafkana is an open-source multiple Kafka clusters dashboard management

What are the features offered by kafkana ?

Dashboard :


In this article, I will explain an idea to have a semi-mirror repoistory feature without a premium version from GitLab as the mirror with pull mode is a premium

What is a mirror repository feature first?

If you have for example a codebase on a repository on GitHub or azure-DevOps and you want to have a mirror on GitLab to use for example the GitLab CI/CD feature or to have a backup repository and so on. GitLab offers a mirror repository feature with pull/push mode but only push available as free also the CI/CD repository is a premium.

We can…


In distributed system world nothing 100 % reliable so we always consider faults so when designing a distributed system model is how we designate our premises about faults.

In general, we can categorize models into three

1- Network behavior

2- Node behavior

3- Timing behavior

Network behavior

As no network is reliable in the real-world even if we designed systems with replicated network links because maybe someone easily unplugs the network cable wrongly, the network may be overloaded or network may be attacked, and so on. …


In this article I will explain some data pipeline use cases and how can Kafka be useful there with a prof of concpt how to build data streaming pipeline.

In many large/medium scale project you need to use some sort of data system that can be valid in different cases for example you need SQLDB to handle transaction and grantee data consistency in your software and you need a different model for reporting, user events, and CDC (change data capture) and so on and you can do this job in many different ways such as some SQLDB systems support Real-time…


First of all, this article for the people who use Kafka nowadays or potentially will use Kafka in the coming projects so you should know at least some basic knowledge about kafka and CAP theorem.

If you know well the CAP theorem so of course, you know which states we can either move towards Consistency (CP) or High Availability (AP) in a distributed system, we can’t have both of them at the same time but actually, we can tune our system to have as much as possible some consistency (eventual consistency) without losing the high availability and this is our…


What is the Kubernetes

Kubernetes is a container orchestration system so we need first to know what does containerization mean

What does containerization mean?

Containerization is defined as a form of operating system virtualization, through which applications are run in isolated user spaces called containers, all using the same shared operating system (OS). A container is essentially a fully packaged and portable computing environment.

Everything an application needs to run — its binaries, libraries, configuration files, and dependencies — is encapsulated and isolated in its container.

The container itself is abstracted away from the host OS, with only limited access to underlying resources — much like a lightweight…


The problem that we are trying to solve in this article we need control, versioning, and tagging our apps semantically and automatically to reduce human mistakes

Our goal is to solve this problem using GitLab CI/CD and semantic-release

What is semantic-release?

semantic-release automates the whole package release workflow including determining the next version number, generating the release notes, and publishing the package.

How does it work?

The key here is your commit message format, semantic-release uses the commit messages to determine the type of changes in the codebase. …


In this article I will explain how to use GitLab CI/CD to build , test and deploy nodejs app to K8s (via rancher API)

What is GitLab?

GitLab is a complete DevOps platform. One application with endless possibilities. Organizations rely on GitLab’s source code management, CI/CD, security, and more to deliver software rapidly.

What is GitLab CI/CD?

Is a service being a part of GitLab that build and test the
software whenever the developer pushes code to the application.
GitLab CD (Continuous Deployment) is a software service
that places the changes of every code in the production
which results in everyday deployment of production.
•…

Mohammed Ragab

Software engineer

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