Knowing DevOps

Knowing DevOps

Actually, I am not DevOps Developer, but I learned several days ago about it and now I want to share what I learned.?So, I don't share how DevOps works technically like how to use and operate Git, show the result of monitoring, or even tutorial container and Kubernetes. I just share the fundamentals of DevOps development that you must know before you pay for cloud facilities.

Deployment

Based on Codecademy, Deployment is the general process of making a piece of software available to its users. Today, developers don't need to worry about how to produce code from the start to create variables until used by users. As long as there is an internet developer can deploy with greater ease and speed of delivery than ever before, which is before the invention of the internet, deployment meant storing software on disk and you know these are very slow and cheap exactly. There are four common components that make up this deployment process.?

  • Infrastructure Management

You know, software code stored and executed on servers and accessed by many stakeholders via their devices. Trust among teams is needed to prevent cheating and misuse of access. Sometimes server needs maintenance and updates. Also, they need to be purchased and have an operating system and various software installed on them. Mainly having a responsibility to manage the server is important. Infrastructure has many components like hardware components, configurations, and applications that need to be maintained periodly.

  • Version Control System

Version Control System (VCS) is a tool that is used to design and manage different of version our code. They track every file change and manage if happened conflicts and bugs. Many tracking like file changes, new or deleted files, renamed or moved files until the author and date of the changes. VCS can reduce the risk cause bugs and other issues. If a new version has an issue when released, we can revert to the stable or previous version.

  • Testing

Testing is an essential component of the deployment process. Testing ensures our features are expected, have zero bugs, and run smoothly. Failures during testing can reduce any mistakes and developers can update soon. Then, success by testing can make developers feel confident. There are four testing types that often used are Unit Test, Integration Test, Acceptance Test, and End-To-End Test.

  • Deployment Environment

The environment is support for infrastructure resources used to execute a program. An example of the set environment is the local development environment which is the first code written and tested on developers' computers. The other is a staging environment is software can be performed to users for test features that are expected and stable before releasing on the production environment. Each environment has different configurations and settings.??

Infrastructure Management

Imagine we released the web e-commerce with amazing features and hope users will enjoy shopping after we give an announcement via marketing. Unfortunately, the website is down, and users complain and forget about it. So, what do you feel and will you do as a developer??In these cases, we need a practical method called Infrastructure Management. We need to prepare for unexpected issues. so, the question is what is prepared before we go public?

  • Scalability

We need to keep the performance of our web after the release goes public either the traffic full or little traffic. There are types of scalability, which are Vertical and Horizontal Scaling. Vertical is mean adding computing resources, such as increasing storage or RAM. Whereas Horizontal is mean adding more servers or nodes to each run the application called "load balancer". The inference is Vertical type is relatively simple and affordable that it only upgrades the machine. But, we need to think about which are can reduce the cost. It's about choices.

  • Virtualization

Virtualization is a virtual machine (VMs). If we need to keep scaling performance and don't need practical vertical or horizontal we can turn to virtualization. VMs would reduce the number of servers. Using VMs tools is more efficient than installing and managing pieces of hardware.?

  • Containerization

Containerization is a section to create a virtual environment, dependencies, and configuration and then we can call with the container. Imagine we have three environments and then we should have three containers too with a shared operating system. Because each environment has a container and is a container. With containers, we can build blocks for modern pipelines and keep to consists to process deployment. In the development phase, developers build or update containers without worrying if and how they will work in a production environment. A familiar tool to create and manage container is Docker.

  • Orchestration

Orchestration automatically to manage, to configure, and to coordinate infrastructure with one config. We just config then the orchestra will handle it in the background and make sure the infrastructure works well. It performs tasks like deploying containers across servers, restarting failed containers, and upscaling horizontally. A popular tool to use is Kubernetes.?

  • Infrastructure as Code (IaC)

IaC is the manual configuration as a text file and immutable infrastructure. It is stored and tracked in the version control system. Once a team has committed infrastructure configuration to version control, they can apply CI/CD practices to infrastructure changes.?IaC help to solve the problem "environment drift" or differences between environments. Commonly it is separated into development, staging, and production.?

  • In-House and Cloud Infrastructure

In-House is a traditional infrastructure that is acquired, configured, and maintained by physical infrastructure components themselves.?We provide a supply, hardware, and software to support development until production and setup themselves. Different from the cloud infrastructure. Cloud Infrastructure refers to infrastructure and computing resources that are available to users over the internet. DevOps recommend using Cloud because it gives benefits such as allowing a company to scale quickly and efficiently scaling by taking full advantage of virtualization.

Monitoring

Monitoring helps developers to understand the state based on the system on gathered data. Monitoring will show real-time reports about performance, health status, and scalability.?One of the monitoring is to measure of latency, traffic or connection, errors, and saturation using metrics. Tracking metrics can make developers overview system health and diagnose issues. So many tools we can use to monitor it like Zabbik, Prometheus, Sensu, and Monyog. Sometimes monitoring makes it easy by sending alerts via email, phone, messenger even phone calls. Alert is the best choice to monitor without disturbing our activities and keep focus.

Resiliency

Resiliency is a system's ability to keep applications performing despite happening problems. Which means the customers can access it as usual. The common types of problems are internal problems, external problems, and malicious actors. Internal Problems mean failure caused by internal components that are applied in a system like code crashes or bugs. Hardware damage also becomes an internal problem. An external problem like dependencies no longer being supported or being deprecated. And then a malicious actor is Cyber attack which is attempt to disrupt system services or steal an organization's data.

Conclusion

DevOps is not only about knowing about tech and then using it. However, it's about how to manage and give full responsibility to our system that running. It's about our caring to keep our system working properly, and efficiently, and keep giving satisfaction to the user ??

要查看或添加评论,请登录

Faridho .的更多文章

社区洞察

其他会员也浏览了