What is DevOps?
DevOps stands for Development (Dev) and Operations (Ops). DevOps is a working culture that combines software development engineers (dev) with operators (system engineers, security personnel, network engineers, infrastructure engineers, …) shorten the product development life cycle (SDLC).
In DevOps, business and development teams are no longer “isolated”. Sometimes, these two groups are merged into a single team, where developers and software engineers work with the entire application life cycle, from development and testing to deployment and operations, while developing a range of features that are not limited to a single function.
Developer teams will use a set of technologies and tools that help them run and develop applications quickly and reliably. These tools help independent engineers complete tasks (such as deploying code or provisioning infrastructure) that often require help from other teams, further accelerating the team’s speed. .
Benefits of DevOps
Speed
Operating at high speed allows you to improve faster for your customers, better adapt to changing markets, and grow more efficiently with impressive business results. The DevOps model enables your developers and business teams to achieve these results. For example, Microservices and continuous delivery allow teams to master services and release updates faster.
Fast delivery
Increase the frequency and pace of releases so you can improve and upgrade your product faster. Being able to release new features and fix bugs faster means you can meet customer needs and build a competitive advantage sooner. Continuous integration and continuous delivery are practices that help automate the software release process, from build to deployment.
Reliability
Ensure quality for application updates and infrastructure changes so you can reliably deliver at faster speeds while maintaining a positive end-user experience. Use practices like continuous integration and continuous delivery to check that each change is working correctly and securely. Monitoring and logging practices help you stay informed about performance in real time.
Scale
Operate and manage infrastructure and development processes at scale. Automation and consistency help you effectively manage complex or ever-changing systems with minimal risk. For example, Infrastructure as Code helps you manage development, test, and production environments in a more efficient and repeatable way.
Improve collaboration
Build more effective teams according to the DevOps culture model, which emphasizes values such as ownership and accountability. Developers and business teams work closely together, shoulder many of the same responsibilities, and coordinate workflows. This helps to reduce inefficiencies and save time (e.g. reduce handover time between developers and business teams, write code that considers the operating environment).
Security
Move faster, while maintaining control and ensuring compliance. You can adopt the DevOps model without sacrificing security using automated compliance policies, fine-tuned controls, and configuration management techniques. For example, using infrastructure as code and policies as code, you can define and then monitor compliance at scale.
Some basic knowledge when starting DevOps
Learn one or several programming languages
For developers, to become a DevOps Engineer requires relatively good knowledge of a programming language. Back-end can be Python, Ruby, Node.js, C#, Java…
OS concepts
Knowledge of operating systems – OS Concepts: understand the difference between operating systems such as Linux, Window, Mac,…
Understand the components that make up the operating system such as memory management, multithreading – process management, Networking, Sockets, Virtualization,…
Server Administration
Server Administration (Managing Servers): install an operating system on the server (Example: Ubuntu, Fedora, LinuxMint, openSUSE, PCLinuxOS, Debian, Mandriva,…) and choose the appropriate operating system. Understand how to manage packages when installing in operating systems.
Learn how to interact with the system such as editing files, configuring the system through Terminal (manipulating the command line)
Networking, Security and Protocols: must understand the protocols and methods by which applications communicate with each other.
Understand ports, how to connect to servers, and secure connections. Need to understand basic protocols such as HTTP, HTTPS, FTP,… From the knowledge of networking, about protocols, it is possible to deploy specifically, for example, Caching Server (caching server is a server that stores data. has been calculated before and will not need to be recalculated next time, a typical example of applied caching server is Redis Server). In addition, there are settings for Load Balancer, Forward Proxy, …
Learn about Docker to apply Docker build on Linux because Docker can be understood as a Linux kernel.
Web server
Web Server: is a software to provide services like Nginx, Apache,…
About Nginx, this is a powerful open source web server. Nginx uses single-threaded, event-driven architecture so it is more efficient than Apache server. It can also do other important things, such as load balancing, HTTP caching, or use as a Reverse Proxy. Nginx is an indispensable knowledge for a Web Developer, System Administrator or DevOps.
Apache serves PHP, and some other examples such as Tomcat, Caddy serve Java, Python alone has WGSI.
Infrastructural
Learn the knowledge of Infrastructure: how to install the system, build the system with code. You may not need to use the AWS console, but use the code to build. Learn how to deploy apps using Containers (Docker, LXC) instead of manually.
In addition, it is necessary to understand the basic knowledge of Infra such as: Configuaration Management, Container Orchestration… And then it is necessary to deploy tools to support CI/CD (continuous integration and delivery – which are code files that run on CI/CD). server includes the process of building code and running automatically and continuously, it can be based on tools that are quite powerful at the present time such as Travis CI, Circle CI, Jenkins,… Source code management is possible through Gitlab CI, Github, Azure DevOps,…
Learn some Infrastructural services such as AWS service, Azure Cloud, Google Cloud,… including usage, cost management,…
Monitoring
Monitoring server is to monitor the server’s activity to see if there are dangerous problems such as high CPU, services used to the limit. Some monitoring tools like Kibana