DevOps

Learn Appropriate DevOps Process to Get Better Results

DevOps Process – The word ‘DevOps’ is a combination of ‘Development’ and ‘Operations’, but simply expresses the idea and method over combining the meaning of each word. DevOps involves a variety of things, including security, collaborative work style, data analysis and so on. The first appearance of this term was in one of the Agile Methodologies (2008). It is one of the methodologies that use the Lean principle more closely in development and programming.

DevOps Process

Plan – The process of deciding what kind of application to manufacture. In many cases, design of each process implementation such as infrastructure and surveillance/monitoring is done here as well.

Create – It is a so-called development process that performs coding etc.

Verify – It is primarily a testing process. We will verify that your application meets your requirements.

Package (Packing) – It is a process (packaging) process for gathering files and configuration files necessary for placing applications in the production environment.

Release – This is the process of placing the application in the production environment. It also includes settings to move applications such as infrastructure procurement and data entry.

Configure – It is the process of setting infrastructure and parameter tuning of application so that application can keep running stable in production environment.

Monitor – It is the process of collecting/saving the result of the application whether the application is running as expected. We will also collect performance indicators such as access count and response time.

Plan (Feedback) – At this time, we rework the requirement again based on feedback from the user, problems in each process, and indicators obtained from the Monitor process. It starts from the Plan, goes from development to test ~ deployment ~ operation ~ monitoring, goes back to the Plan again, and thereafter it is a cycle form which repeats this process. By turning this process quickly, one will be able to try and error trying to take measures for the time being, get feedback, improve/change direction.

Each process seems simple, but in fact it is not easy to introduce these processes. Considering that the process is promptly taken, it seems difficult for each process to take so much time, and it is also a matter of avoiding that quality falls to an unacceptable range by developing in a hurry.

Tool Overview in Each DevOps Process

Development Environment

Tools related to the development environment include IDE, editor, compiler, library management/task runner, etc.

  • Vagrant (Building development server on each machine of developer)
  • Docker (Application and execution environment packaging)

Version Control

  • git (version control system)
  • GitHub + GitHub Flow

Continuous Integration / Delivery

  • Jenkins (a form used by installing on on-premises server)
  • Travis CI (SaaS providing CI / CD)

Release / Deploy / Configuration Management

  • Packer (Creation of golden image)
  • Terraform (Infrastructure construction against cloud etc.)
  • Ansible (Server provisioning)

Shared Tools Indispensable for DevOps and Development Operation Process

Just by creating organizational culture, DevOps is not realized. It is necessary to introduce a sharing tool to embody it and develop development operation process.

  • Infrastructure Automation Tool – Automate infrastructure construction such as Ansible and Chef
  • Version Management Tool – Share same version management tool such as Git and Mercurial
  • Build & Deploy Automation Tool – Jenkins and Capistrano are tools to automate build & deploy
  • Metric Sharing Tool – Sharing results of acquired metrics such as New Relic and Application Insights on the dashboard
  • Chat Tool – Create bot to display build and deploy logs and alerts on Slack, HipChat, etc.

Not all of these tools are necessarily required, one can choose appropriate tools based on the situation of the development team and operations team.