Development(개발)과 Operation(운영)을 단일화하여 운용하는 방법론
application 및 service 개발 및 유지 방법론 중 하나로, 개발과 서비스 제공을 빠른 속도로 완료하고 제공할 수 있도록 조직 내부적인 유지/보수방법 및 문화, 철학 등을 일컫는다.
Devops 모델에서는 개발팀과 운영팀이 단일화되어, application의 개발에서 배포까지의 과정 및 lifecycle이 단축된다.
Devops의 핵심은 개발 프로세스의 자동화이다.
이를 좁은 범위에서 말하면 server 운용의 자동화, server 개선이 단기간 내 이루어지는 환경을 의미한다.
또한 독립적으로 프로세스를 수정하고 반영할 수 있어야 하며, 다른 팀의 도움없이 자체적인 개발환경이 구성되어야 한다는 점도 기억해야 한다.
Cross functional Team
Widely Shared Metrics
서비스 개발을 위해 필요한 정량적 운용 지표, 사용자의 반응 등을 체크할 기준이 필요하고 이는 모든 팀원들에게 공유되어야 한다.
Automating repetitive tasks
Post Mortems
서비스 및 서버운용간 이슈가 생겼을때 모든 팀원들과 공유하고 협력해야 한다.
Regular Release
주기적인 배포를 통해 고객의 피드백을 정기적으로 반영해나가야 한다.
서버운용의 자동화에 있어 Docker는, 개발 및 프로그래밍한 application이나 server를 image화하여 자체적인 운영체제로 실행 및 배포할 수 있다는 장점을 지닌다.
이는 개발 프로세스의 자동화에 있어 매우 강력한 특징으로 활용할 수 있다.
이와 유사하게, CI/CD는 Devops를 실현하기위해 반드시 필요한 항목이다.
Continuous Integration
지속적 통합
이는 개념으로 이해하기 보단 과정으로 이해하는 것이 더 수월하다.
case : 10명의 개발자가 동일한 git 환경에서 코드를 받아 각자 개발을 진행 중인데, 이러한 10명의 개발자가 개발한 과정을 한꺼번에 통합해야 하는 경우
CI : 모두 만들어 놓고 확인하는 것이 아니라, 단계적으로 one term씩(혹은 주기적으로) 개발의 진행을 확인한다.
CI적용 : 개발자는 1주에 한번씩 자신의 개발과정을 정리하고 공유하며, Docker 환경에서 test 운용을 하여 어떤 점이 변화하고 반영되었는지 테스트한다
→ 이를 전체 팀원들과 공유하고(git에 올리고), 2주에 한번씩 개발자들의 개발과정을 통합하기전 Preview를 진행하며 3주에 한번씩 전체통합을 진행한다.
Continuous Delivery
지속적 배포(관리)
CI프로세스를 통해 진행한 관리를 기반으로 application을 개발한다는 전제가 있어야 한다.
즉 지속적인 리뷰와 통합, 관리, 테스트를 기본으로 지속적인 배포가 가능해야 하다는 것이 CD의 핵심 개념이다.
이 CI, CD를 자동화하는 tool이 따로 존재하며, 이 tool을 이용하거나 Docker 등을 활용하여 개발 프로세스를 최대한 합리적이고 효율적으로 진행하는 것이 중요하다.
Devops 개념
https://aws.amazon.com/ko/devops/what-is-devops/
Devops 특징
https://simsimjae.medium.com/devops%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-c50f4d86666b
Docker와 Devops의 연관성
https://www.leafcats.com/228