Devops Introduction

One: What is DevOps

DevOps (Development and Operations combination of words) is a set of processes, methods and systems collectively, to facilitate the development (application / software engineering), communication between technical operations and quality assurance (QA) department, collaboration and integration. It is an emphasis on "software developer (Dev)" culture of communication and cooperation between the "IT operation and maintenance technicians (Ops)", sports or practice. Through Automation "software delivery" and "schema changes" in the process, to make the build, test, distribute software to be more fast, frequent and reliable. Its appearance is increasingly clear understanding of the software industry due to: In order to timely delivery of software products and services, development and operations must work closely together.

DevOps trying to develop partnerships between development and operations teams, to bridge this gap. DevOps activities emphasize communication, collaboration and integration between software developers and IT operations.

DevOps promote cooperation, facilitate collaborative process improvement through automation and orchestration. In other words, nature will continue to develop target DevOps agility activities extended to the continuous integration and release. DevOps is to take advantage of cloud solutions, Agile practices and processes will be combined. Agile development and test methods help us to achieve continuous integration applications, develop, build, deploy, test and distribution objectives.

Building automation

Building automation use Gradle, Apache Ant and Apache Maven build automation and other tools to help us to create application builds.

Automated build process comprises compiling the source code into class files or binary files, third-party libraries reference path for a profile, the class files are packaged into a package file or binary file, perform automated test, deployed on a local or remote machine package files and reduce manual work and other activities in the package file to create.

Continuous Integration

In short, continuous integration (CI) is a software engineering practice, in this method, developers of every check in (Check-in) use any of these methods to verify.

"Pull" mechanism: the implementation of automated build at the scheduled time point.

"Push" mechanism: the implementation of automated build when you save the changes in the repository.

After this step, the source code for the latest changes to the library execution of a unit test. Continuous integration is a popular DevOps approach, which requires developers to integrate the code several times a day such as Git and SVN code repository, to verify the integrity of the code.

Then, the automated build verification check every time, so that the team can identify problems early.

CI (even CD) is the company simultaneously DevOps archived baseline. If the organization is not well implemented CI and CD, you can not implement DevOps.

Cloud rationing

Earlier in this chapter, we've covered the basics of cloud computing. That code is assigned to a cloud architecture (Infrastructure as Code, IAC) opened its doors, so that the whole process is extremely efficient, because we are in the process involves human intervention will to a large extent automated.

PAYG billing model to make it easier to bear the resources needed, not only for large organizations to small and medium sized organizations and individuals as well.

Cloud rationing will help improve and innovate, because the previous resource constraints hindered the further development of the organization from a cost and maintenance perspective. Once we have the agility in infrastructure resources, you can consider the applications needed to run automated installation and configuration of the package.

Configuration Management

Configuration Management (CM) system changes, more specifically, is the server runtime environment. We can use many tools on the market for configuration management. Popular tools include Chef, Puppet, Ansible, Salt and so on.

Let's consider an example of a similar configuration to manage multiple servers.

For example, we need to install Tomcat on each server. If you need to change the port on all servers, updating some packages or give permission for some users, how to do? Any changes in this situation is artificial, that is a kind of error-prone process. Because all servers use the same configuration, you can use automated means.

Continuous Delivery

Continuous Delivery and Continuous Deployment is a term used interchangeably. However, there are some small differences between the two.

Continuous Delivery is an automated way to deploy an application in any environment and provide continuous feedback to improve their quality process. Automated method to deliver sustained and continuous deployment will not change. But the approval process and other small details may change.

Continued testing and deployment

Continuous testing end to end application lifecycle management process is a very important stage, including functional testing, performance testing, security testing and so on.

Selenium, Appium, Apache JMeter and many other tools can be used for the same purpose. On the other hand, the continued deployment of the deployment of applications, including the latest changes to the production environment.

Continuous monitoring

Continuous monitoring is the backbone of end-to-delivery pipeline, open source monitoring tools like the head of the ice cream scoop.

We must understand that this is a phased approach, you do not have to complete automation of all stages at once. Each choose a DevOps practices, implement and understand its benefits, then the implementation of the other, which is more effective approach.

In this way, we can safely assess organizational culture change brought improvement, elimination of the application life cycle management manual labor.

Two: DevOps common tools

  1. Code Management (SCM): GitHub, GitLab, BitBucket, SubVersion
  2. Build tools: Ant, Gradle, maven
  3. Automatic deployment: Capistrano, CodeDeploy
  4. Continuous Integration (CI): Bamboo, Hudson, Jenkins
  5. Configuration Management: Ansible, Chef, Puppet, SaltStack, ScriptRock GuardRail
  6. Container: Docker, LXC, third-party vendors such as AWS
  7. Arrangement: Kubernetes, Core, Apache Mesos, DC / OS
  8. Service registration and discovery: Zookeeper, etcd, Consul
  9. Scripting language: python, ruby, shell
  10. Log management: ELK, Logentries
  11. System monitoring: Datadog, Graphite, Icinga, Nagios
  12. Performance Monitoring: AppDynamics, New Relic, Splunk
  13. Stress Test: JMeter, Blaze Meter, loader.io
  14. Warning: PagerDuty, pingdom, manufacturers comes as AWS SNS
  15. HTTP accelerator: Varnish
  16. Message Bus: ActiveMQ, SQS
  17. Application servers: Tomcat, JBoss
  18. Web server: Apache, Nginx, IIS
  19. Database: MySQL, Oracle, PostgreSQL and other relational databases; cassandra, mongoDB, redis and other NoSQL database
  20. Project Management (PM): Jira, Asana, Taiga, Trello, Basecamp, Pivotal Tracker

Other tools for self-inspection, is in line with the best

Three: the demand perspective, the difference between agile and waterfall

Falls : One-time demand to mention the finish, so that the development process will be kept in some places probably did not think the customers in the process there will be a lot of bad feeling with the development of software not produce the desired effect.

Agility : a small part is completed, put into use, the effect and estimated earnings. With bit platform, for example, to carry out the taxi business (look at the market reaction and income effect) in carrying out the ride, about cars and other network services, allow customers to slowly accept the product, if one-time to carry out all operations, to make users feel chaos, do not know how to use.

NOTE: Agile Model, and the clerk will ask developers to communicate and work together.

Published 169 original articles · won praise 136 · Views 9215

Guess you like

Origin blog.csdn.net/weixin_41181778/article/details/103986548