일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- EC2
- EBS 최적화
- AWS EBS
- xfs_quota
- 리눅스 시간대
- ebs 마운트
- MFA 인증
- docker 상태
- 테라폼 맥
- 테라폼 설치
- /etc/fstab 뜻
- AWS
- 컨테이너 터미널 로그아웃
- Mac Terraform
- epxress-generator
- /etc/fstab 설정
- 리눅스
- 볼륨 연결
- 컨테이너 터미널
- 디스크 성능테스트
- 텔레메트리란
- 테라폼 자동완성
- ebs 재부팅
- 볼륨추가
- MFA 분실
- Authenticator
- EBS
- Terrafrom
- docker -i -t
- 테라폼 캐시
- Today
- Total
I got IT
DevOps 처음 이라면 본문
Intro: DevOps의 탄생 배경
IT 중심의 산업화
IT 종사자라면 DevOps에 대해서 한 번쯤은 들어봤을 것입니다. 국내 시장에서 근 5년간 개발자에 대한 이목만 집중되어 DevOps는 최근에서야 주목받고 있는 영역이지만 IT 선진국인 미국에서는 2009년 처음 등장해 오랫동안 연구, 개발되고 있는 분야입니다.
(O'Relly Velocity Conference의 <하루에 10회 이상 배포하기: Flicker에서 Dev와 Ops의 협업>)
3차 산업혁명 이후 대부분의 모든 비즈니스에서의 IT는 사업의 핵심 동인이 되었습니다.
현대에 들어서는, IT는 더 이상 하나의 산업군으로 독립적으로 분류되지 않고 모든 기업과 산업에서는 IT를 핵심 역량으로 인식하고 내재화 시키고 있습니다. 이를 흔히 요즘 말하는 DT(Digital Transformation) 라고도 합니다.
IT 기술이 점점 발전하고 고도화 되면서 이에 따라 소비자들의 요구사항도 빠르게 바뀌고 다변화하기 시작했고 기업의 핵심 성공 전략은 이에 맞는 다양한 기능을 개발하고 빠르게 배포하는 것이 되었습니다.
컨테이너의 등장
새로운 기능을 개발하는 것 만큼 소스코드를 빌드하고 배포하는 것 또한 상당한 시간이 걸립니다.
이 때, 배포시간을 획기적으로 단축하는데 등장한 기술이 바로 컨테이너 입니다.
컨테이너의 사전적 정의는 ‘코드와 모든 의존 정보가 포함된 독립 실행가능한 소프트웨어의 표준 격리 단위’ 입니다. 간단히 말하면 앱을 배포하는데 라이브러리, 종속성, 실행환경 설정파일만 있으면 어느 환경에서든 앱을 쉽게 실행하고 배포할 수 있습니다.
이러한 컨테이너의 등장으로 앱 배포시간이 크게 단축되었으나 이로 인해서 각각의 운영 환경에 대한 관리포인트와 복잡성이 늘어났으며 개발 또한 기존의 모놀리식 아키텍처에서 기능 별로 환경을 분리하여 개발하는 MSA 개발방법론이 도입됐습니다.
즉 개발부터 배포까지의 시간 단축과 개발 및 운영의 복잡성 증가의 트레이드오프가 생겨난 것입니다.
하지만 이렇게 빨라진 소프트웨어 개발 라이프사이클의 이점은 명확하고 뛰어나기 때문에 최대한 복잡성을 줄이고 안정적으로 환경을 구축하기위해 고안 된 것이 DevOps의 개념입니다.
DevOps 의 정의
DevOps라는 개념이 도입된지는 앞서 말씀드린 것처럼 꽤 오래되었지만 아직까지 명확한 정의를 내리기란 어려울 것 같습니다.
DevOps의 이름에서 유추할 수 있듯이 Development(개발) + 운영(Operations) 을 내재하는 말인 것 같은데 개발과 운영을 같이 하는 할 줄 아는 사람을 말하는 것일까요?
AWS가 제시하는 DevOps의 정의는 다음과 같았습니다.
“ 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 더 빠른 속도로 제품(products)을 발전시키고 개선하여 조직의 애플리케이션 및 서비스 제공 능력을 향상시키는 문화적 철학(cultural philosophies), 방식(practices) 및 도구(tools)의 조합(combination) “
사람에 따라서 누군가는 문화, 누군가는 방법론, 누군가는 철학, 누군가는 공학 모델 이라고 하여 처음 듣는 사람에게는 너무 모호하게 들리기 마련입니다. 또한 이해관계자에 따라서 DevOps는 다르게 정의내려질 수 있습니다.
하지만 DevOps의 근본적인 목표만은 하나로 귀결됩니다. 따라서 DevOps 가 ‘무엇인지’ 에 초점을 두는 것 보다 ‘어떻게 하는건지’에 초점을 두는 것이 중요합니다.
DevOps 의 실천적 가치
DevOps의 근본적인 목표를 함축하여 말하면 다음과 같습니다.
“개발 속도는 높이고 + 통합 및 배포는 자동으로 + 운영은 안정적으로 하자”
말은 쉽지만 참으로 이상적이고 비현실적이기 그지 없습니다. 이 원대한 목표를 실현하기 위해서는 개인, 소수의 인원 만으로는 절대 불가능 합니다. DevOps는 IT 사업부는 기본이고 C-level 의 의사결졍권자 등 모든 조직원의 협력을 통해서 실현가능 합니다.
DevOps 실현을 위한 핵심 요소에는 다음 세가지가 있습니다.
1️⃣ people
그 중에서도 제일먼저 선행될 것은 올바른 문화 형성 입니다. 올바른 문화 형성의 핵심주체는 결국 사람입니다. 사람은 조직을 형성하며 조직에는 조직만의 문화가 있습니다. 이 때 올바른 문화형성을 위한 방안은 다음과 같습니다.
▪️ 숨김 없는 대화: DevOps 문화는 많은 논쟁과 토론을 통해서 나옵니다.
▪️ 보상과 책임의 적절한 조화
▪️ 얼마나 좋은 코드를 개발하고 어떻게 운영 프로세스를 개선하였는지 보상과 책임이 주어질 수 있는 경우, 조직은 보다 빠르게 DevOps 문화가 정착될 수 있습니다.
▪️ 명확한 기대치: Role and responsibilities를 확실히 파악하는 것으로, Development team과 Operation team 간의 명확한 업무 범위 파악 및 조직 간의 기술적인 차이(gap)를 인식하는 것이 중요
▪️ 심리적 안정감을 줄 수 있는 환경:
실패에 관대한 문화. 조직의 과제가 실패할 수 있다는 경우의 수에 대한 오픈마인드와 비난하지 않는 문화의 형성이 중요합니다.
2️⃣ Process
소프트웨어 개발 라이프사이클에서 체계화 되고 명확한 프로세스 수립이 필요합니다.
▪️ 업무 시각화하기
▪️ 배치 작업의 크기 줄이기
▪️ 핸드오프 횟수 줄이기
▪️ 진행중인 작업에 대한 제한 (WIP limit)
▪️ 가치 흐름에서 어려움과 낭비 제거
▪️ 배포 파이프라인의 기반 생성
▪️ 빠르고 신뢰할 수 있는 테스팅 자동화
▪️ 낮은 위험도의 출시 자동화
▪️ 위험도가 낮은 출시를 위한 아키텍처 전환
▪️ 복잡한 시스템에서 안전하게 작업 가능
▪️ 문제 발생 시점에 확인
▪️ Swarming 으로 문제 해결 및 지식 축적
▪️ 품질 활동을 작업 단계에 더 가깝게 유지
▪️ Downstream work center 최적화
▪️ 문제 확인 및 해결을 가능하기 위한 Telemetry
▪️ 더 나은 문제 예측과 목표 달성을 위한 Telemetry
▪️ 가설 주도 개발과 A/B 테스팅을 작업에 통합
▪️ 작업 품질 증가를 위한 리뷰 및 조정 프로세스
▪️ 조직적 학습과 안전한 문화 활성화
▪️ 일상 업무 개선을 제도화
▪️ 지역적인 발견을 조직 전체의 개선으로 전환
▪️ 일상 업무에 탄력성 패턴 적용
▪️ 리더가 학습 문화를 강화
3️⃣ Velocity
마지막으로 속력입니다. DevOps의 핵심 기술기반은 자동화된 CICD 파이프라인 입니다. 하지만 고도화된 CICD를 구축하는일은 쉽지 않습니다. 따라서 이때 필요한 것이 적절한 도구의 사용입니다. 도구의 도움을 받으면 DevOps의 목표에 더 쉽고 빠르게 다가갈 수 있습니다.
아래는 소프트웨어 개발주기의 각 단계별로 필요한 도구들에 대한 이미지 입니다.
이 외에도 CNCF에서 지정한 CloudNative Tools의 모음은 다음을 참고하시길 바랍니다. https://landscape.cncf.io/
AWS에서 지원하는 DevOps 서비스 및 도구는 다음과 같습니다.
DevOps 의 미래
한계점
글의 서론에서 이야기 한 것 처럼 DevOps를 실현하는데는 분명 장단점이 존재합니다. SDLC의 시간은 줄어들 수 있으나 그만큼 관리 운영 복잡성이 증가하고 기존의 조직문화 및 업무프로세스를 뜯어 고치고 비용 투자에 대한 부담이 있기 때문에 이에대한 리스크와 진입장벽이 존재합니다. 따라서 DevOps 대한 부정적 견해도 존재합니다. ex) https://www.itworld.co.kr/news/137874
따라서 기업의 조직문화와 서비스 워크로드의 특성을 제대로 이해하고 DevOps를 도입하는 것이 중요하다고 느껴졌습니다.
전망
그럼에도 불구하고 DevOps의 장점이 극대화될 수 있는 환경이라면 그 장점이 매우 크기때문에 많은 기업에서 DevOps를 도입하려 시도하고 있습니다.
실제로 다양한 기업에서 DevOps 및 앱 현대화를 통해 배포시간을 극단적으로 단축시키고 소비자의 니즈에 더 빠르게 대응하고 우수한 사용자경험을 제공하는 성공사례가 점점 늘어가고 있습니다.
아래는 Atlassian에서 500명의 실무자들을 대상으로 조사한 DevOps 설문조사의 통계자료 입니다. 🔗
대부분의 대상자들이 DevOps 도입을 긍정적으로 받아들이고 있으며 업무가 개선됨을 느꼈다고 합니다.
이러한 긍정적 측면과 MSA 앱 현대화가 앞으로도 계속 진행될 것으로 보아 DevOps 분야는 꾸준히 성장할 것으로 보입니다.
'DevOps' 카테고리의 다른 글
Telemetry 란? (0) | 2023.06.22 |
---|---|
ELK 스택이란 ? (0) | 2023.05.13 |
DevOps 엔지니어의 역할 (1) | 2023.05.09 |
DevOps란 ? (0) | 2023.05.08 |