Hello everyone, if you are looking to learn about DevOps then please start with me!
What is DevOps?
DevOps is not a tool, software or a programming language. If you search google you can see it is defined like this:
*DevOps is a set of practices that combines software development and IT operations.*
DevOps là một tập hợp các hoạt động để kết hợp software development và IT operations.
*It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.*
Nó nhằm mục đích rút ngắn vòng đời phát triển phần mềm và cho phép phân phối phần mềm liên tục với chất lượng cao.
*DevOps is complementary with Agile software development; several DevOps aspects came from the Agile way of working*
DevOps bổ sung cho phương pháp Agile; một số khía cạnh DevOps đến từ cách làm việc Agile
In a nutshell DevOps is the way to do things in a smarter way when it comes to software development. Here is a specific example so that we can visualize the role of DevOps in the software development process:
A software manufacturing company has 2 divisions:
- Team Development: (Developer, Designer, BrSe, BA, QC,…) is responsible for planning, designing and building products from scratch.
- Team Operation: (System Administrator, System Engineer, Network Engineer, Security Engineer, ..) is responsible for testing, evaluating and deploying the product (developed from the Development team) to users. In addition, the Operation team will also send feedback (bugs, features) to the Development team to continue to fix or improve the product. Issue: There will be a waiting period for the Development team to receive feedback from the Operation team. This will interrupt the product development process and take more time. This is where the DevOps concept comes in to solve the above problem.
As mentioned above, DevOps complements the Agile approach, several DevOps aspects come from the Agile way of working:
- Plan: Plan and design the feature that will develop in the sprint
- Code: coding functions/fixing bugs as planned above
- Build: encapsulates the output of the coding process by building
- Test: test on build on development environment (dev)
- Release (Integrate): after the build is passed in the dev environment, the release will be sent to the Operation team to build and test again.
- Deploy: deploying code to STG/PRD environments
- Operate: maintain and operate the product
- Monitor: measure and track the product to get feedback for the sprint after the end of the sprint. Starting a new sprint…
One real case study is Netflix. In 2007, Netflix launched a video streaming service. At the time of 2014, they estimated that every time the system crashed for about 1 hour, it would cost about 200,000 USD. But now Netflix has been able to solve that problem by choosing to apply DevOps to product development. Specifically, they develop a tool called Simian Army, which will continuously create bugs in a Dev environment. This gives Netflix developers an incentive to build a system that won’t break when anything happens.
The above is what I have drawn in the way I understand in the process of self-studying DevOps. If there is something wrong, I hope you will comment below to help me learn better. Thanks for watching!