일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공부
- APM
- MySQL
- CloudWatch
- Elasticsearch
- kotlin querydsl
- 기록으로 실력을 쌓자
- minikube
- 정보처리기사 실기 기출문제
- aws
- IntelliJ
- Java
- kotlin coroutine
- Pinpoint
- 정보처리기사 실기
- Spring
- Linux
- 티스토리챌린지
- CKA 기출문제
- PETERICA
- 코틀린 코루틴의 정석
- kotlin spring
- mysql 튜닝
- kotlin
- 오블완
- CKA
- AI
- Kubernetes
- AWS EKS
- 정보처리기사실기 기출문제
- Today
- Total
피터의 개발이야기
[DevOps] DevOps란 무엇입니까? 본문
ㅁ 개요
ㅇ DevOps 개발자로 성장하기 위해 노력 중이다. DevOps의 개념을 정리하고 나의 생각을 정리하였다.
ㅁ DevOps란?
데브옵스(DevOps)에 대해 위키백과에서는 다음과 같이 정의하고 있다.
데브옵스(DevOps)는 소프트웨어의 개발(Development)과 운영(Operations)의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다. 데브옵스는 소프트웨어 개발조직과 운영조직간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다.
ㅁ DevOps 작동 방식
DevOps 모델에서는 개발팀과 운영팀이 더 이상 "사일로"에 묶여 있지 않다. 때로는 이 두 팀이 단일팀으로 병합되어 엔지니어가 개발에서 테스트, 배포, 운영에 이르기까지 전체 애플리케이션 수명 주기에 걸쳐 작업하고 단일 기능에 한정되지 않은 광범위한 기술을 개발한다.
일부 DevOps 모델에서 품질 보증팀과 보안팀 또한 애플리케이션 수명 주기에 걸쳐 개발 및 운영과 좀 더 긴밀하게 통합된다. DevOps 팀 전체가 보안을 중점으로 두는 경우 때때로 DevSecOps라고 불린다.
이러한 팀에서는 DevOps 방식을 사용하여 속도가 느리고 수동으로 수행되던 프로세스를 자동화한다. 또한, 애플리케이션을 안정적으로 빠르게 운영하고 개선하는 데 도움이 되는 기술 스택과 도구를 사용한다. 이러한 도구 덕분에 엔지니어는 이전 같았으면 다른 팀의 도움이 필요했을 코드 배포 또는 인프라 프로비저닝과 같이 작업을 독립적으로 수행할 수 있으며, 따라서 팀의 작업 속도가 더욱 빨라진다.
ㅁ 사일로란?
DevOps개념을 설명하면서 사일로에 대해서 언급되는 경우가 많다. 그래서 사일로에 대해서도 여기에 정리하였다.
ㅁ DevOps 문화 철학
DevOps로 전환하기 위해서는 문화와 사고방식의 변화가 필요하다. 간단하게 말하자면 DevOps는 기존에 사일로에 묶여 있던 개발과 운영이라는 두 팀 간의 장벽을 없애준다. 일부 조직에서는 개발팀과 운영팀이 나뉘어 있지 않고 엔지니어가 두 업무를 모두 수행할 수도 있다. DevOps에서는 두 팀이 함께 작업하여 개발자의 생산성과 운영의 안정성을 모두 최적화한다. 두 팀은 자주 소통하고, 효율성을 높이고, 고객에게 제공하는 서비스의 품질을 향상하기 위해 최선을 다한다. 최종 고객의 요구와 자신이 어떻게 이러한 요구를 해결하는 데 공헌할 수 있는지 생각함으로써 일반적으로 명시된 역할 또는 직책의 범위를 넘어 서비스에 대한 완전한 주인의식을 갖는다.
ㅁ DevOps 방식
지속적 통합은 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 데브옵스 소프트웨어 개발 방식입니다. 지속적 통합은 소프트웨어 릴리스 프로세스 중 빌드 또는 통합 단계를 주로 가리키며, 자동화 구성 요소(예: CI 또는 빌드 서비스)와 문화적 구성 요소(예: 빈번하게 통합하도록 학습) 모두를 포함합니다. 지속적 통합의 핵심 목표는 버그를 신속하게 찾아 해결하고, 소프트웨어 품질을 개선하고, 새로운 소프트웨어 업데이트를 검증 및 릴리스하는 데 걸리는 시간을 단축하는 것입니다.
지속적 전달(Continuous Delivery)은 프로덕션에 릴리스하기 위한 코드 변경이 자동으로 준비되는 소프트웨어 개발 방식입니다. 현대 애플리케이션 개발의 기반인 지속적 전달은 빌드 단계 이후의 모든 코드 변경을 테스트 환경 및/또는 프로덕션 환경에 배포함으로써 지속적 통합을 확장합니다. 적절하게 구현할 경우, 개발자는 언제나 즉시 배포할 수 있고 표준화된 테스트 프로세스를 통과한 빌드 아티팩트를 보유할 수 있습니다.
코드형 인프라는 버전 관리 및 지속적 통합과 같은 코드와 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리하는 방식입니다. 클라우드의 API 중심 모델을 사용하면 개발자와 시스템 관리자가 수동으로 리소스를 설정 및 구성할 필요 없이 프로그래밍 방식으로 대규모로 인프라와 상호 작용할 수 있습니다. 따라서 엔지니어는 코드 기반 도구를 사용하여 인프라와 인터페이스하고, 애플리케이션 코드를 다루는 방법과 유사한 방식으로 인프라를 다룰 수 있습니다. 인프라가 코드를 통해 정의되므로 인프라와 서버를 표준화된 패턴을 사용하여 배포하고, 최신 패치와 버전으로 업데이트하거나, 반복 가능한 방식으로 복제할 수 있습니다.
조직의 모든 구성원이 업무를 수행하는 데 필요한 데이터에 최대한 효과적이고 빠르게 액세스하는 것은 중요합니다. 팀원은 장애에 대한 알림을 받고 프로덕션 환경에서 실행되는 애플리케이션의 상태 및 성능에 대한 업데이트를 빠르게 받아야 합니다. 메트릭, 로그, 추적, 모니터링 및 알림은 모두 팀이 작업을 알리는 데 필요한 피드백 소스입니다.
조직은 지표와 로그를 모니터링하여 애플리케이션 및 인프라 성능이 제품의 최종 사용자 경험에 어떤 영향을 미치는지 확인합니다. 조직은 애플리케이션과 인프라에서 생성되는 데이터 및 로그를 캡처하고 분류한 다음 이를 분석함으로써 변경 또는 업데이트가 사용자에게 어떤 영향을 주는지 이해하고, 문제의 근본 원인 또는 예상치 못한 변경에 대한 통찰력을 확보합니다. 서비스는 연중무휴 24시간 사용할 수 있어야 하고 애플리케이션 및 인프라 업데이트 빈도가 증가함에 따라 적극적인 모니터링이 점점 더 중요해지고 있습니다. 이러한 데이터에 대한 실시간 분석을 수행하거나 알림을 생성하는 것도 조직이 좀 더 능동적으로 서비스를 모니터링하는 데 도움이 됩니다.
조직에서 커뮤니케이션과 협업이 증가하는 것도 DevOps의 주요 문화적 측면 중 하나입니다. DevOps 도구 및 소프트웨어 제공 프로세스 자동화를 사용하면 개발 및 운영의 워크플로와 책임을 물리적으로 합침으로써 협업이 이루어집니다. 해당 팀에서는 이 위에 채팅 애플리케이션, 문제 또는 프로젝트 추적 시스템, wiki를 사용하여 커뮤니케이션을 지원하고 정보를 공유하는 강력한 문화적 표준을 확립합니다. 이를 통해 개발자와 운영 그리고 마케팅이나 영업과 같은 다른 팀 간에도 커뮤니케이션이 활발해지면서 조직의 모든 부분에서 목표와 프로젝트에 좀 더 가깝게 다가갈 수 있습니다.
ㅁ 경험에 대한 소고
DevOps로 일해야 한다고 말하지만 정작 자신의 처지가 우선시 되는 경우가 많다. 현재 일하고 있는 서비스에 투입되면서 Silo Effect로 인해 적응이 쉽지 않았다. 실제로 기존 담당자들이 병이 나든, 다른 곳으로 이직 중인 상태에서 기존 조직원에게 문의를 하면, 담당이 아니다, 모른다, 다른 사람에게 물어봐라, 스스로 알아서 잘해라 등의 피드백을 받았었다. DevOps는 기술적 스팩만을 말하는 것이 아니라 기술을 어떻게 고객의 요구상황에 맞게 빠르고 안전하게 실현하는데 있다. DevOps는 일종의 문화와 철학이며, 이를 이루기 위해 기술적이고 인프라차원의 환경이 필요한 것이다. 실질적인 공유와 협업의 정신을 무시하고 우선적으로 자신의 처지에만 취중할 때에 전체 조직의 퍼포먼스를 줄어들 수 밖에 없다.
ㅁ 함께 보면 좋은 사이트
'DevTool' 카테고리의 다른 글
[Iterm2] autosuggestions, 자동제시 기능 설정 (0) | 2023.08.07 |
---|---|
[WireShark] WireShark를 통한 패킷 헤더 확인 (0) | 2022.10.09 |
빅서OS 맥북에서 안드로이드 USB 테터링 사용하기 (0) | 2021.12.17 |
SquidMan을 이용한 프록시 앱테스트 환경 만들기 (1) | 2021.01.23 |
VIM 명령어 정리 (0) | 2021.01.03 |