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 event 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…


In this article I will explain how to auto generate a free SSL certificate from let’s encrypt automatically for your k8s services

What is let ‘s Encrypt

Let’s Encrypt is an open and automated certificate authority that uses the ACME (Automatic Certificate Management Environment ) protocol to provide free TLS/SSL certificates to any compatible client. These certificates can be used to encrypt communication between your web server and your users.

How let ‘s Encrypt works

The objective of Let’s Encrypt and the ACME protocol is to make it possible to set up an HTTPS server and have it automatically obtain…


In this article, I will explain how to write Jenkins pipeline to automate the process to build your code as a docker image and upgrade your app in Rancher (The Kubernetes management platform)

First of all, I would to briefly explain what is Rancher

Rancher is an open-source software that combines everything an organization needs to adopt and run containers in production. Built on Kubernetes, Rancher makes it easy for DevOps teams to test, deploy, and manage their applications.

The following steps needed to upgrade your app in Rancher

1- Make your code change

2- Build a new Docker image…


In this article I will explain the following points

1- What is NOSQL?

2- The NOSQL types?

3- ACID and CAP theorems

4- Constancy between ACID and CAP theorems

What is NOSQL?

• When people use the term “NoSQL database”, they typically use it to refer to any non-relational database. Some say the term “NoSQL” stands for “NON-SQL” while others say it stands for “not only SQL.” Either way, most agree that NOSQL databases are databases that store data in a format other than relational tables

• The data structures used by NoSQL databases Differ from those used in relational…

Mohammed Ragab

Software engineer , SRE , father and problem solver

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