[AWS/Docker] 서버운용의 자동화(Devops / CI·CD) 및 Docker 개념과의 연관성

Hyo Kyun Lee·2021년 8월 1일
0

AWS/Docker

목록 보기
1/20

1. Devops 개념

Development(개발)과 Operation(운영)을 단일화하여 운용하는 방법론

application 및 service 개발 및 유지 방법론 중 하나로, 개발과 서비스 제공을 빠른 속도로 완료하고 제공할 수 있도록 조직 내부적인 유지/보수방법 및 문화, 철학 등을 일컫는다.

Devops 모델에서는 개발팀과 운영팀이 단일화되어, application의 개발에서 배포까지의 과정 및 lifecycle이 단축된다.

Devops의 핵심은 개발 프로세스의 자동화이다.
이를 좁은 범위에서 말하면 server 운용의 자동화, server 개선이 단기간 내 이루어지는 환경을 의미한다.

또한 독립적으로 프로세스를 수정하고 반영할 수 있어야 하며, 다른 팀의 도움없이 자체적인 개발환경이 구성되어야 한다는 점도 기억해야 한다.

1-2. Devops의 특징

Cross functional Team

  • 개발, 배포, 테스트 등의 일련의 과정을 하나의 팀으로 단일화해야 한다.

Widely Shared Metrics

서비스 개발을 위해 필요한 정량적 운용 지표, 사용자의 반응 등을 체크할 기준이 필요하고 이는 모든 팀원들에게 공유되어야 한다.

Automating repetitive tasks

  • 개발프로세스의 자동화, 좁은 범위에서는 build- test - production의 과정을 자동화해야 한다.
  • 여기서 CI, CD의 개념이 활용되는데 쉽게 말해 자동화 tool을 구성이 필요하다는 Devops의 특징이다.

Post Mortems

서비스 및 서버운용간 이슈가 생겼을때 모든 팀원들과 공유하고 협력해야 한다.

Regular Release

주기적인 배포를 통해 고객의 피드백을 정기적으로 반영해나가야 한다.

2. Docker와의 연관성

서버운용의 자동화에 있어 Docker는, 개발 및 프로그래밍한 application이나 server를 image화하여 자체적인 운영체제로 실행 및 배포할 수 있다는 장점을 지닌다.

이는 개발 프로세스의 자동화에 있어 매우 강력한 특징으로 활용할 수 있다.

  • 개발자가 프로그래밍한 소스를 Docker image로 build
  • 이를 container로 생성하는 과정을 동일한 서버환경(container)에서 활용가능
  • 서버/application 배포의 과정을 자동화할 수 있음
  • 과정 자체가 간결하고 경량화되어있기 때문에 즉시 적용이 가능하다.

이와 유사하게, CI/CD는 Devops를 실현하기위해 반드시 필요한 항목이다.

3. CI/CD

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 등을 활용하여 개발 프로세스를 최대한 합리적이고 효율적으로 진행하는 것이 중요하다.

4. 참조링크

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

CI/CD
https://itholic.github.io/qa-cicd/

0개의 댓글