<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhinav Yadav</title>
    <description>The latest articles on DEV Community by Abhinav Yadav (@codecafe).</description>
    <link>https://dev.to/codecafe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F908257%2F57120418-9399-4aa6-981b-934d91ff6bb8.jpeg</url>
      <title>DEV Community: Abhinav Yadav</title>
      <link>https://dev.to/codecafe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codecafe"/>
    <language>en</language>
    <item>
      <title>What is DevOps?</title>
      <dc:creator>Abhinav Yadav</dc:creator>
      <pubDate>Mon, 31 Oct 2022 10:49:18 +0000</pubDate>
      <link>https://dev.to/codecafe/what-is-devops-57ib</link>
      <guid>https://dev.to/codecafe/what-is-devops-57ib</guid>
      <description>&lt;p&gt;You might have heard about this term before since the advent of cloud computing. So let’s delve deeper into what exactly is DevOps&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Sj85Aqv6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5y79emlj32j7uz43cy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sj85Aqv6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5y79emlj32j7uz43cy5.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  1. What was it like before DevOps?
&lt;/h1&gt;

&lt;p&gt;So that’s a great question. Back in the day operators and developers had a lot of contention. Developers used to throw their code over the metaphorical wall and operators were responsible for keeping that code running in production.&lt;/p&gt;

&lt;p&gt;Operators had little understanding of the code bases and developers had little understanding of operational practices but developers were concerned with shipping code and operators were concerned with reliability. This misalignment often caused tension within the organization. In a nutshell, developers wanted to move faster to get new features out faster and the operators wanted to move slower to keep things stable and one can easily see how this would cause a lot of tension.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. DevOps As a Solution
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;DevOps = Development + Operations&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In comes DevOps, which is a set of practices and a culture designed to break down those barriers between developers operators, and other parts of the organization. I break DevOps down into five key areas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sXFKNWio--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or7u71urd8cgmp1rp44m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sXFKNWio--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or7u71urd8cgmp1rp44m.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Reduce organizational silos:&lt;/em&gt;&lt;/strong&gt; By breaking down barriers across teams we can increase collaboration and throughput.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Accept failure as normal:&lt;/em&gt;&lt;/strong&gt; Computers are inherently unreliable so we can’t expect perfection and when we introduce humans into the system we get even more imperfection.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Implement gradual change:&lt;/em&gt;&lt;/strong&gt; Not only are small incremental changes easier to review but in the event that a gradual change does make a bug in production it allows us to reduce our mean time to recover and make it simple to rollback incase of a failure.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Leveraging tooling and automation&lt;/em&gt;&lt;/strong&gt;: Automation is a key aspect of DevOps. It is always better to automate stuff when dealing with heavy loads.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Measuring everything&lt;/em&gt;&lt;/strong&gt;: Measurement is a critical gauge for success and without a way to measure if our first four pillars were successful or not, we would have no way of knowing if they were.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The five key areas essentially encompass the field of DevOps.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Overview/Roadmap
&lt;/h1&gt;

&lt;p&gt;As we have discussed DevOps is just a set of practices that combine software development and IT operations. There are so many steps when it comes to making software and deploying software and collecting all these sets of practices together is called DevOps&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;— What does a DevOps Engineer actually do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Their role is to introduce some tools and processes to make the life cycle of the entire software development and deployment easy from coding to deployment to maintenance and updates.&lt;/p&gt;

&lt;p&gt;the cycle looks like this :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1ZcPUhot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xckwxqk606h0l2e5cwi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1ZcPUhot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xckwxqk606h0l2e5cwi.png" alt="Image description" width="880" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the cycle moves from planning -&amp;gt; coding -&amp;gt; build -&amp;gt; test -&amp;gt; release -&amp;gt; deployment -&amp;gt; operations -&amp;gt; monitoring and the process keeps on continuing itself.&lt;/p&gt;

&lt;p&gt;The roadmap looks something like this :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Coding Language&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Python or Golang you can learn either of them. But If you want to master DevOps, you should definitely know how to use &lt;strong&gt;&lt;em&gt;Bash&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Server Administration&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s one of the most important steps. Linux and Unix would always be your dearest friends in DevOps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Networking and Security&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How do your applications talk to each other and if the application is secure or not?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The most significant thing to learn&lt;/em&gt;&lt;/strong&gt;: TCP/IP fundamentals&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How the internet works:&lt;/em&gt;&lt;/strong&gt; Learn different Protocols (DNS, SSL, FTP, HTTP, HTTPS, etc)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Servers&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Starting and maintaining servers is key for a DevOps Engineer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Web Servers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Learn about &lt;strong&gt;&lt;em&gt;Apache&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Nginx,&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Tomcat&lt;/em&gt;&lt;/strong&gt; (Optional)&lt;/p&gt;

&lt;p&gt;2. &lt;strong&gt;_Caching&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redis (Most Important)&lt;/strong&gt; and Memcached&lt;/p&gt;

&lt;p&gt;3. &lt;strong&gt;Databases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;databases are of two types &lt;strong&gt;&lt;em&gt;SQL&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;NoSQL&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;&lt;em&gt;SQL&lt;/em&gt;&lt;/strong&gt; you can learn about &lt;strong&gt;&lt;em&gt;MySQL&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;PostgreSQL.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;NoSQL,&lt;/strong&gt; you can learn about &lt;strong&gt;&lt;em&gt;MongoDB&lt;/em&gt;&lt;/strong&gt;, and some cloud databases like &lt;strong&gt;&lt;em&gt;Amazon dynamo DB, and Google Cloud Datastore; depending upon the cloud service provider you choose to follow.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Infrastructure As Code&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Simple terms, you are defining what your infrastructure which runs the website looks like in a file.&lt;/p&gt;

&lt;p&gt;It will take that file/recipe from you and create the infrastructure according to the specification that you have thrown in that file.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; In &lt;strong&gt;&lt;em&gt;Infrastructure as code&lt;/em&gt;&lt;/strong&gt; first, you have to look into &lt;strong&gt;&lt;em&gt;configuration management&lt;/em&gt;&lt;/strong&gt; and then you can use tools like &lt;strong&gt;&lt;em&gt;Ansible by RedHat and Terraform.&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Containers&lt;/em&gt;&lt;/strong&gt;: A DevOps Engineer should know the ins and outs of Docker.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Container Orchestration&lt;/em&gt;:&lt;/strong&gt; let’s say that you have lots of containers running and after some time it becomes difficult for you to manage it manually so you need to automate the task. Basically you have to scale up your container, if your container dies you have to restart those containers, etc. For all these things you can learn &lt;strong&gt;&lt;em&gt;kubernetes&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;K8s or DockerSwarm.&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Infrastructure provisioning:&lt;/em&gt;&lt;/strong&gt; There is a tool for this called &lt;strong&gt;&lt;em&gt;terraform.&lt;/em&gt;&lt;/strong&gt; It’s a tool for implementing infrastructure as code. Some other options include &lt;strong&gt;&lt;em&gt;Google Deployment Manager and AWS Cloudformation.&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;CI/CD&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They are abbreviations for Continous Integration and Continous Delivery.&lt;/p&gt;

&lt;p&gt;Popular tools for this are &lt;strong&gt;&lt;em&gt;Jenkins&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Circle CI&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Travis CI,&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;and&lt;/em&gt; &lt;strong&gt;&lt;em&gt;GitHub Action help you maintain your code. T&lt;/em&gt;&lt;/strong&gt;here are also tools like &lt;strong&gt;&lt;em&gt;GitLab CI, Big Bucket Pipelines,&lt;/em&gt;&lt;/strong&gt; and there is also &lt;strong&gt;&lt;em&gt;AWS Coding Pipeline&lt;/em&gt;&lt;/strong&gt; other than that there is &lt;strong&gt;&lt;em&gt;Google Cloud Built.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Monitoring and Logging&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If there is some bug or something that is not working correctly then we need to see what went wrong, how it went wrong, and which place it went wrong. We need some kind of way to monitor and log your application. For this, we need to learn tools like P*&lt;em&gt;&lt;em&gt;rometheus, grafana&lt;/em&gt;&lt;/em&gt;* or Elasticsearch logstash, and Kibana stack (ELK Stack)&lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cloud&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Google Cloud Provider (GCP)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Amazon Web Services (AWS)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Microsoft Azure&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This concludes over overview/Roadmap. Hope it helps the budding engineers.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Benefits of DevOps
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Faster&lt;/strong&gt; time to market.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Increase Productivity&lt;/em&gt;&lt;/strong&gt;. As most of the parts are automated team focuses more on innovation and improvement.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;em&gt;Continuous Feedback Loop&lt;/em&gt;&lt;/strong&gt; from customers keeps running, which results in continuous improvement of the product quality.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Thanks For Reading!
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Docker Images and Containers</title>
      <dc:creator>Abhinav Yadav</dc:creator>
      <pubDate>Sat, 13 Aug 2022 23:00:34 +0000</pubDate>
      <link>https://dev.to/codecafe/docker-images-and-containers-417l</link>
      <guid>https://dev.to/codecafe/docker-images-and-containers-417l</guid>
      <description>&lt;p&gt;Docker has revolutionised software development by allowing developers to share an isolated environment that allows the whole team (or set of users) to create, test, and deploy apps in a highly consistent and straightforward manner.&lt;/p&gt;

&lt;p&gt;Since the technology has been around for a -relatively- long time, I'm sure you've heard phrases like image, container, volumes, or even Dockerfile. Docker images and containers are two of the most essential ideas in this technology, and many newcomers struggle to discern between the two.&lt;/p&gt;

&lt;p&gt;The next sections will explain what Docker images and containers are, as well as the fundamental distinctions between them.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Docker Images&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
A docker image is an immutable file with numerous layers, each of which corresponds to a filesystem and might include dependencies, scripts, or other settings.&lt;/p&gt;

&lt;p&gt;Because each phase may be cached, this stacking improves reusability and speeds up picture creation. Unless it has been updated since the previous build, the following build will now load a step from the cache.&lt;/p&gt;

&lt;p&gt;The docker build command is now used to construct an image from a Dockerfile – a text file containing instructions that a user may run on the command line to produce the desired image.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Docker images are the basis of containers. An image is an&lt;br&gt;
ordered collection of root filesystem changes and the &lt;br&gt;
corresponding execution parameters for use within a container &lt;br&gt;
runtime. An image typically contains a union of layered &lt;br&gt;
filesystems stacked on top of each other.&lt;/p&gt;

&lt;p&gt;- Docker Documentation&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;Images are saved in a Docker Registry – the default is Docker Hub, but you may also host your own Docker Registry that only your organisation can access.&lt;/p&gt;

&lt;p&gt;You can view all the images on the host machine by running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Docker Container&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
A Docker Container is now an instance of a Docker image that runs in a totally isolated environment (that is, it is separated from any other process running on the computer) and can be executed on any operating system (portability!).&lt;/p&gt;

&lt;p&gt;Containers are portable and lightweight run-time environments that allow users to execute programmes in isolation from the underlying host computer.&lt;/p&gt;

&lt;p&gt;A operating container may be halted while retaining its settings and any filesystem modifications so that they can be reused when it is resumed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A container is a runtime instance of a docker image.&lt;br&gt;
A Docker container consists of&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;A docker image&lt;/li&gt;
&lt;li&gt;An execution environment&lt;/li&gt;
&lt;li&gt;A standard set of instructions
The concept is borrowed from shipping containers, which define a &amp;gt; standard to ship goods globally. Docker defines a standard to 
ship software.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;- &lt;u&gt;&lt;em&gt;Docker Documentation&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;Some useful commands for docker containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# check the running containers
$ docker ps
# check all the containers running or stopped
$ docker ps -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Closing Remarks
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Docker is a platform that allows developers to create, execute, and ship programmes. Understanding how to utilise Docker efficiently will undoubtedly benefit you throughout your software development path and career.&lt;/p&gt;

&lt;p&gt;As a result, it's essential to first grasp the fundamental ideas and components of the technology, which will allow you to utilise Docker more easily. And this trip begins with your ability to discern between a Docker Image and a Docker Container.&lt;/p&gt;

&lt;p&gt;In a word, a Docker Image is a construct made up of several layers as stated in Dockerfile, while a Docker Container is a (running) instance of a Docker Image (and probably the reason why you should use Docker!).&lt;/p&gt;




</description>
      <category>docker</category>
      <category>linux</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
