DevOps
- Development + Operations
- 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화
- 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합
- 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 함 → "프로세스 자동화"
- 이점 (AWS기준)
- 속도 : 작업 속도가 빨라진다, 업데이트를 좀 더 빠르게 릴리스할 수 있다
- 신속한 제공 : 릴리스의 빈도와 속도를 개선, 고객의 요구에 더 빠르게 대응
- 안정성 : 변경사항이 제대로 작동하며 안전한지 테스트
- 확장 : 규모에 따라 인프라와 개발 프로세스를 운영 및 관리(자동화와 일관성 지원)
- 협업 강화 : 개발자와 운영팀
- 보안 : 제어를 유지하고 규정을 준수하면서 신속하게 진행 가능
- 방식 (AWS기준)
- 지속적 통합(CI, Continuous Integration) : 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 소프트웨어 개발 방식
- 지속적 전달(CD, Continuous Delivery) : 프로덕션에 릴리스 하기 위한 코드 변경이 자동으로 빌드, 테스트 및 준비되는 소프트웨어 개발 방식
- 마이크로 서비스 : 단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 접근 방식
- 코드형 인프라 : 버전 관리 및 지속적 통합과 같은 코드와 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리하는 방식
- 모니터링 및 로깅 : 지표와 로그를 모니터링하여 애플리케이션 및 인프라 성능이 제품의 사용자 경험에 어떤 영향을 미치는지 확인
- 커뮤니케이션 및 협업 : 개발 및 운영의 워크플로와 책임을 물리적으로 합침
DevOps 사례
https://chloe-codes1.gitbook.io/til/aws/aws_builders/06_devops_-_-_-_-_-_ : AWS DevOps
https://m.blog.naver.com/infopub/222059275874 : facebook DevOps
DevOps 엔지니어
DevOps Manager | sw개발의 일부로 프로젝트의 효과적인 계획 및 인프라 자원을 제공하고 클라우드 기반의 숙련된 지식을 가지고 리드하는 역할(sw개발 프로세스 수립, 운영 / 품질과 효율성, 생산성, 적기 릴리즈) |
Principal DevOps Engineer | 숙련된 클라우드 기술 경험을 바탕으로 프로젝트 관리에 뛰어난 통찰력과 다양한 인프라에 대한 기술을 갖추고 리딩하는 역할(sw릴리스 및 인프라 자동화를 위해 CI/CD 파이프 라인을 자동화 / 클라우드 네트워킹 구성요소의 아키텍처 설계 및 운영) |
DevOps Engineer | 완전 자동화 된 CI/CD 프로세스 구축을 위해 sw 개발 및 인프라 지원팀과 긴밀히 협력할 수 있는 역할(sw개발 전체흐름 파악 / 배포, 테스트 및 프로덕션 시스템의 유지 관리 시간 및 품질을 향상) |
- 업무 영역
DevOps Manager | - 지속적인 개선에 중점을 둔 운영 및 지침을 제공하는 DevOps 팀을 리드/관리 - sw개발 운영의 로드맵 / 비전 수립 및 계획 - CI/CD 자동화 시스템 구축 및 배포에 대한 가이드, 모범 사례 발굴 및 전개 - 운영 절차와 실무를 정의하고 문서화하여 일관성있게 적용되도록 보장 - 새로운 서비스를 제공할 수 있도록 팀 내에서 변경 사항을 정리하고 의사결정 - 모든 절차 및 개발 인프라 계약에 대해 최신의 문서가 있는지 확인 - 고객 에스컬레이션에 대한 책임을 지고 필요에 따라 즉각적인 대응 및 계획 수립 |
Principal DevOps Engineer | - sw 개발 인프라 아키텍처 설계 및 cost 산정 - DevOps 솔루션을 정의, 설계 및 구현에 있어 주도적인 관리 - CI/CD 환경 구현, 유지 보수 및 개선을 총괄하고 이를 고객에게 presentation - 고객, 서비스 엔지니어링 팀 및 지원 간의 기술 연락 역할 - 기술 문서 및 절차 작성 - 클라우드 환경에 대한 VPN 및 연결 구현, 네트워크와 통합 - sw개발, 인프라 지원팀과 문제를 해결하는 역할 |
DevOps Engineer | - CI/CD 프로세스 및 자동화 시스템을 구축하기 위한 개발 업무 - sw 개발 흐름을 이해하고 배포, 테스트 및 시스템의 유지 관리 및 개선활동 |
- 필요한 기술들
DevOps Manager | - 엔지니어링 리더 경험 10년 이상 - 다양한 클라우드 환경의 devops 프로젝트에서 5년 이상의 경험 - 클라우드 및 Linux 숙련자 - DevOps, 테스트 및 개발에 대한 전문 지식 - 클라우드 플랫폼 기술 관리자 / 아키텍트 - 프로젝트 및 개발 리소스 관리 경험 -네트워크 및 IT 인프라에 대한 이해 - 고급 스크립트 언어 스킬(Python, Bash, JavaScript, Perl) - Jenkins, Ansible 및 Artifactory와 같은 도구를 사용한 CI/CD 시스템을 개발하고 테스트 및 구성하여 DevOps 환경을 개발한 경험 - 효율성, 비용 절감 및 지속적인 개선 기회를 주도하고 기획 |
Principal DevOps Engineer | - DevOps 엔지니어 또는 설계자로서 최소 5년 이상의 경험 - 성과 평가 책임을 가진 팀 리딩 역할 능력 - Linux 기반 환경에서 sw개발 및 sw 테스트 방법론과 변경 및 구성 관리 실무에 대한 이해 - 클라우드 환경에 대한 AWS, Azure 및 Google Cloud 및 오케스트레이션 도구에 대한 구축 경험 및 이해 - CI/CD 환경 구축 및 운영 경험 - 컨테이너 기반 환경에 대한 전문 지식(Docker) - 인프라 자동화 도구에 대한 전문 지식(Puppet, Chef, Ansible) - 고급 스크립트 언어 스킬(Python, Ruby, Perl) - 디자인 패턴 및 리팩토링 개념의 이해 - VPN, CIDR, 서브넷, 인증서 관련 사운드 네트워크 지식 |
DevOps Engineer | - 개발 및 생산을 위한 CI/CD 파이프 라인 구축에 대한 이해 및 경험 - 클라우드 서비스에 대한 이해 및 경험 - Docker와 같은 컨테이너 기반 기술 이해 및 경험 - 리눅스 환경에 대한 전문 지식 - 기본 스크립트 언어 능력 : Pyhton/Bash/Perl 등 - Ansible과 같은 구성 관리 도구 사용 경험 - Jenkins 이해 및 경험 - 소스제어(Bitbucket, Gerrit, Gitlab 등)에 대한 깊은 이해 - 모니터링(Grafana, Prometheus) 서비스 구축 경험 |
❗ DevOps가 나온 이유가 사용자의 피드백을 받아서 빠르게 릴리스를 하기 위해 나온듯하다...? 개인적인 생각일 뿐.. 막 새로운 테스트에 대해 고민하고 하다 보니 여러 테스트 방법들이 나왔고 이 과정을 자동화하면 더 빠르게 서비스를 업데이트할 수 있다..! ❗
❗ 개발을 하면서 어떻게 하면 효율적, 반복적인 일을 줄일까? 인프라 담당자, CI/CD를 주로 하는 형상관리업무, 개발 프로세스를 담당하는 위치에 있는 사람들이 조금씩 확장시켜 나가면 DevOps 엔지니어의 길로 갈듯..? ❗
'Computer Science > DevOps' 카테고리의 다른 글
[Jenkins] Jenkins 다뤄보기 (0) | 2023.06.27 |
---|---|
[OS] OS 모음집 (0) | 2021.08.12 |
[CI/CD] Tool (0) | 2021.08.11 |
[CI/CD] 정의 (0) | 2021.08.11 |
[배경] DevOps 공부 (0) | 2021.08.11 |