DevOps

일반적으로 '개발'이라는 단어가 모두에게 다르게 쓰인다. 

보통 이제야 시작하는 스타트업은 기획 - 설계 - 코딩, 개발 - 배포 - 운영 등의 일련의 긴 과정에서 기획 후의 모든 부분을 하는 것을 (슈퍼풀스택)개발자로 퉁 치고 운영한다. 사실 기획도 결국 같이 하게 된다.

규모가 있는 서비스가 되면 점점 복잡해 지기 때문에 인프라 담당자가 따로 있고 (설계)

갖춰진 인프라 위에 개발하는 개발자가 (프론트 / 백엔드 등등..으로 나뉜다)

또 여러명이서 개발을 하게 되면 협업을 위해 협업툴 활용 (git, gitlab...)을 하면서 서로의 소스를 지속적으로 통합(CI)해야 하고

여러 테스트를 거쳐야 하고

또 해당 프로젝트를 빌드해야 하고

이를 빠른 주기로 사용자들에게 배포를 해줘서 애자일하게 개발을 해야 한다.

또 서비스가 잘 운영되고 있는지, 서버는 잘 돌아가고 있는지 모니터링 해주고 적절하게 대응도 해 줘야 한다.

 

 이렇게 많은 일들을 일반적으로 개발 / 운영 으로 나눴었는데 이렇게 두개를 나누면서 생기는 문제점들이 많았다. 예를들면 개발자들은 요건사항에 맞춰서 개발만하고 이를 운영쪽으로 넘겨버리는데, 사실 요구조건은 처음부터 완벽한 것이 아니라 사용자들의 여러 피드백을 받으면서 완벽해 지기 때문이다.

 그래서 이를 나누지말고 협업을 중시하는 하나의 팀을 만들며 문화를 바꾸자! 라고 얘기하는 것이 Dev(개발)+Ops(운영) DevOps이다. (라고 이해했다 사실 추상적인 개념인 것 같다)

 

 DevOps가 추상적인 개념이라면 그래도 구체적으로 함께 따라오는 특징, 키워드들이 있다.

영국정부에서 제공하는 "Good Habit for Devops"의 내용이다.

Cross Functional Team - 개발~배포,테스트를 할 수 있는 역량을 팀내에 채워라.

Widely Shared Metrics - 서비스 현황을 파악할 수 있는 지표를 만들어라

Automating repetitive tasks - CI/CD를 이용하여 빌드배포테스팅 프로세스를 자동화해라

PostMortems - 팀원들과 장애를 함께 공유해라

Regular Release - 짧은 주기로 배포하면서 VOC를 반영해라

 

결국 DevOps란 Dev + Ops로 서비스를 개발에서 부터 운영까지 할 수 있게 노력하는 문화라고 할 수 있다.

 

CI (Continuous Integration)

여러명의 개발자가 하나의 프로젝트에 함께하면 코드 충돌이 일어나기도 하고, 서로 영향을 줄 수 있는데 이를 지속적으로 통합하고 빌드하고 테스트 하는 과정이다. (사실 CI라고 하면 이를 지속적으로 통합하는 과정이기도 하지만 그 과정을 자동화 시키는 것을 얘기한다)

 

CD(Continuous Delivery/Deployment)

여러 개발자들의 코드 변경사항을 버그 테스트를 거쳐 저장소에 업로드 되고, 이를 프로덕션 환경으로 릴리스 하는 것이다.

 

 

 

 

참고 : bcho.tistory.com/817

 

개발과 운영의 조화 - Devops #2/2

1편 글 링크 - http://bcho.tistory.com/815 Devops의 정의  이러한 개념들을 적극적으로 적용한 기업들이 Netflix, Flicker와 같은 인터넷 서비스 기업이다. 기존 개발 프로세스에 비해서 훨씬 빠르게 고객의

bcho.tistory.com

 

+ Recent posts