START UP & QUANT/devops

많은 기업들이 Devops 엔지니어를 뽑는 이유는 무엇일까

나해진 2020. 12. 29. 23:09

 

 

 

 

 

 

왜 기업들이 DevOPS전문가를 뽑고 있을까 

 

 

DevOPS가 무엇이길래

 

 

Devops는 Development(개발)/Operation(운영)엣 따왔다 

 

 

누군가는 여기에다 QA(품질보증)까지 더한 용어라 지칭한다

 

 

 

 

 

 

 

 

하지만 실질적으로 DEVOPS는 문화라 할수있다 기존 개발운영방법에 있었던 

한계를 해결하기 위해 나온 조직운영방법이라 할수있다

 

 

 

 

DEVOPS의 강점은 무엇일까

 

                                   많은  IT기업들이 말한 강점은 속도(VELOCITY)와 질(QUALITY)이다 

현대의 IT기업들은 자기와 다른 부서의 많은 사람들과 툴을 이용하여 협업을 하며일을 하는데 

중요한것은 CI(Continuous Intergration)  지속적인 통합

, CD(Continuous Deployment) 지속적인 베포가 가능한 환경이 개발환경 필수적 요소로 자리매김하게 되었다

그것을 유지한 상태에서 Operation팀과의 협업또한 개발자들이 고려해야 하게되었는데 

개발자들이 프레임워크를 늘리려 할때 마다 운영팀은 여러가지 것들을 고려하여 

이것을 막을수밖게 없는데 이러한 간극을 메꿀수있는 방법이 DEVOPS라는 방법이다 

 

 

 

 

 

일단 다음의 유명한 사진을 보자

 

 

데브옵스의 유명한 무한대 사진

 

 

이들이 무한대 고리를 갖는다는 것은 끝임없이 일을 수행한다는 의미이기도 하다 

데브옵스와 더블어 최근에 조직운영에 유명한 말이 애자일(agile)이라는 방법이 있는데

만일 필요한기능이 100이라치고 기존에 이것을 만들기 위해 걸렸던 시간을 1년이라고 치면

애자일방법론은 그 중 가장 중요한 2,3개의 기능을 선별하여 빠르게 개발하고 피드백을 

받는 구조이다 기존의 폭포수모델은 필요한 기능에 대한 모든계획을 선별하고 

단계별로 차근차근 개발하는 느낌이였다면 애잘은 조직구성자체가 

특별한 기술개발을 위해 모인 구성이기때문에 단계별처리는 빠르게 진행될수있다

최근에 toss,배민등의 한국스타트업기업에서도 많이 이용하는 조직구성이다

 

 

IT기술은 특정서비스에 대한 빠른 선정이 중요하기 때문에 결국 사용자에게 필요한

수요를 알수있게 될 뿐만 아니라 조직이 정체되는것을 막는 역할을 한다

 

 

[데브옵스 순서]

 

계획 -> 코딩 -> 빌드 -> 테스트 -> 공개 -> 배포 -> 운영 -> 모니터링 -> 계획

일반 기업에서 이러한 순서를 차례대로 진행하는데 꽤나 오랜시간이 걸린다는 것을 알고있다

그래서 조직문화 자체를 개선시켜서 

 

사실 그래서 데브옵스를 문화라고 이야기 했던 것도 바로 다음에서고

S/W LifeCycle에서 여러 툴들을 활용하여  반복적인 일들을 자동화시키고 개발팀과 운영팀간의 상황과 

모습들을 해결시키기 이해 만든 구조이다

 

 

기본적으로 데브옵스를 이해하기 위해 클라우드 환경을 잘 숙지를 해야하는데 

 

AWS, GOOGLE CLOUD 플랫폼들이 제공하는 많은 서비스들이 이러한 환경을 조성하는데

 

많은 역할을 하기 때문이다.

 

 

 

DEVOPS의 자동화 환경

 

 

데브옵스의 또다르 핵심은 '자동화'이다 

구성원들이 최대한 개발과 운영에 본질적인 부분에만 집중할수있게

통합환경을 조성해주고 자동화된 시스템을 도입을 한다 리눅스 관리시스템인

ANSIBLE과 같은 툴들을 활용해 시간을 줄이고 효율적인 관리가 가능하게 한다

 

 

또한 컨테이너를 활용한 서버에 배포를 하기위해 필요한 도커와 같은 툴을이용하며

 

쿠버네티스를 활용해 효율적인 관리가 가능하다

 

그리고 마지막으로 젠킨스를 이용해 CI환경을 조성하는법을 알아본다

 

 

 

 

 

 

 

패스트캠퍼스의 DEVOPS의 7단계 법칙을 참고했다

[개발자 필독 추천] 올바른 데브옵스 구축을 위한 7가지 고려사항 (Feat.툴 선택을 잘하자) - 패스트캠퍼스 미디어 (fastcampus.co.kr)

 

 

결국  DEVOPS 목표는 모든 것을 자동화하는 것이다:

개발자는 모든 팀원의 프로세스를 방해하지 않고도 새로운 소프트웨어를 배포하고 운영할 수 있어야 한다.

 

 

 

또한 DEVOPS의 모든 개발 환경은 공유되어야 한다

DevOps 프로세스 외부에서 임시 작업이나 변경이 발생해서는 안 된다. DevOps 프로세스 내부에서 툴을 사용할 때 새로운 소프트웨어와 변경된 소프트웨어에 대한 모든 요청은 기록되어야 한다. (공유되어야한다) 소프트웨어 진행 상황을 프로세스를 거치는 중에 발생하는 모든 의사결정은 기록되어야 한다는 말이다.

 

 

테스트 자동화 및 데이터 프로비저닝 도구 선택

테스트 자동화는는 단순히 ‘자동화’ 만을 의미하는 것은 아니다. 코드와 데이터를 취하여 보편적인 테스트를 꾸준히 실행하여 코드의 품질, 데이터 및 전체 솔루션를 보장할 수 있어야하는 기능이다. DevOps의 경우 테스트는 연속적으로 끊임없어야 한다. 

 

 

팀 간의 지속적인 피드백을 통해 정보 격차 최소화하기

수동 또는 자동화된 매커니즘을 사용하여 문제를 식별하고 있는가?

개발자나 운영자가 무엇이 발생했는지, 왜 발생했는지, 그리고 어디에서 발생했는지 이해할 수 있도록 태그를 적절하게 사용하고 있는가? 툴 사용이 협업 및 피드백 루프 내의 모든 커뮤니케이션을 정보격차가 없도록 도움을 주고 있는가?를

고려해야 한다

 

 

다음과 같은 DEVOPS의 규칙들을 참고하면 좀 더 유용하게 이해할수 있을것이다.

 

 

 

 

타이트한 일정안에서

결국 팀원 모두가 정보간극을 줄이고 지속적인 개발상황을

여러 툴들을 활용해 공유할수있는 상태가 되어야 하고

실시간으로 배포환경에서 테스트할수있는 환경을 조성시켜야 한다

 

 

이것을 이해할수있는 문화가 바로 DEVOPS이다

 

 

 

 

 

 

DEVOPS엔지니어가 되기 위해 )

 

 

 

 

2020년 DEVOPS LOADMAP을 첨부해보면

 

 

 

 

 

 

DEVOPS엔지니어는 전반적인 프로그래밍 능력뿐만 아니라 CLOUD,

SYSTEM MONITORS,SERVER,NETWORK까지 모든 능력이 요구된다 

아무래도 계획부터 피드백까지 전과정에 관여하다 보니 다양한 능력이 필요한것 같다

 

링크드인이나 구인구직사이트에서 필요한 능력이 대략적으로 

 

 

위의 작성한 대로 어느정도 정해져 있다

그래서 항상 Cloud System을 잘 숙지하고 있고 CI CD 툴의 활용도가 높으면 충분히 도전해 볼만하다고 

생각한다