"애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법"

 

"애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공" ⇒ "CI/CD 파이프라인"

 

출처 : REDHAT

CI(Continuous Integration)

  • 개발자를 위한 자동화 프로세스
  • 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합
  • 여러 개발자들이 동시에 작업할 때 충돌 방지

CD(Continuous Delivery)

  • 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되어 운영팀이 실시간 프로덕션 환경으로 배포
  • 최소한의 노력으로 새로운 코드를 배포

CD(Continuous Deployment)

  • 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스
  • 운영팀의 프로세스 과부하 문제를 해결

'Computer Science > DevOps' 카테고리의 다른 글

[Jenkins] Jenkins 다뤄보기  (0) 2023.06.27
[OS] OS 모음집  (0) 2021.08.12
[CI/CD] Tool  (0) 2021.08.11
[배경] DevOps 공부  (0) 2021.08.11
[배경] DevOps?  (0) 2021.08.11
  • AWS 기반 대규모 아키텍트 설계
  • 코드를 통한 인프라 관리
    • terraform
    • ansible
    • packer
  • Docker와 Kubernetes를 활용한 운영
  • Kubernetes on AWS EKS
  • CI/CD 구현
    • terraform CI/Cd 파이프라인
    • Jenkins CI/CD 파이프라인
    • CodePipeline, CodeBuild, CodeDeploy CI/CD 파이프라인
    • Github Action CI/CD
    • Circle CI CI/CD
    • ArgoCD EKS배포
  • 모니터링 서비스 구축 및 운영
    • AWS CloudWatch 모니터링 구축
    • Prometheus & Grafana 모니터링 구축
    • ELK stack을 활용한 웹서비스 로그 확인
    • AWS VPC Flow 로그 수집
  • AWS 기반 보안
    • AWS IAM 관련

'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

DevOps

  • Development + Operations
  • 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화
  • 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합
  • 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 함 → "프로세스 자동화"
  • 이점 (AWS기준)
    • 속도 : 작업 속도가 빨라진다, 업데이트를 좀 더 빠르게 릴리스할 수 있다
    • 신속한 제공 : 릴리스의 빈도와 속도를 개선, 고객의 요구에 더 빠르게 대응
    • 안정성 : 변경사항이 제대로 작동하며 안전한지 테스트
    • 확장 : 규모에 따라 인프라와 개발 프로세스를 운영 및 관리(자동화와 일관성 지원)
    • 협업 강화 : 개발자와 운영팀 
    • 보안 : 제어를 유지하고 규정을 준수하면서 신속하게 진행 가능
  • 방식 (AWS기준)
    • 지속적 통합(CI, Continuous Integration) : 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 소프트웨어 개발 방식
    • 지속적 전달(CD, Continuous Delivery) : 프로덕션에 릴리스 하기 위한 코드 변경이 자동으로 빌드, 테스트 및 준비되는 소프트웨어 개발 방식
    • 마이크로 서비스 : 단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 접근 방식
    • 코드형 인프라 : 버전 관리 및 지속적 통합과 같은 코드와 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리하는 방식
    • 모니터링 및 로깅 : 지표와 로그를 모니터링하여 애플리케이션 및 인프라 성능이 제품의 사용자 경험에 어떤 영향을 미치는지 확인
    • 커뮤니케이션 및 협업 : 개발 및 운영의 워크플로와 책임을 물리적으로 합침

CI/CD

 

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

+ Recent posts