DevOps

Yun·2024년 10월 5일
0

DevOps

DevOps는 소프트웨어 개발(Dev)와 운영(Ops)을 결합한 개념이다. Dev와 Ops는 초기 소프트웨어 계획에서 개발, 빌드, 테스트, 릴리즈, 운영에 이르기까지 모든 라이프사이클에 긴밀한 관계를 맺고 있다. DevOps는 두 팀 간의 협업과 소통을 강화해 소프트웨어 개발과 개발 과정을 자동화하고 최적화하는 방법론이다.

주요 개념

  • CI/CD : 코드의 변경 사항을 빠르고 자동으로 배포할 수 있는 환경을 구축한다.
  • Infrastructure as Code : 인프라를 코드로 정의하고 자동화하여 일관적으로 관리한다.
  • Monitoring & Logging : 애플리케이션의 성능을 모니터링하고, 로그를 분석하여 문제를 찾아내고 대응한다.

장점

  • 자동화된 프로세스를 통해 변경 사항을 더 자주, 더 빠르게 릴리스할 수 있다.
  • 통합된 시스템을 통해 소프트웨어의 품질을 유지하면서 빠르게 개선할 수 있다.
  • 개발과 운영이 협력하여 시스템 관리와 배포가 더 효율적이다.

CI/CD

CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment(지속적 배포)를 의미한다. 소프트웨어 개발에서 자동화와 효율성을 높이기 위한 방법론이다. 소프트웨어 배포에 일관된 프로세스를 유지해 오류를 최소화한다.

CI

CI는 Continuous Integration, 지속적인 통합을 의미한다. 개발자가 변경한 코드를 자주 통합하는 과정이다. 개발자가 코드를 레포지토리에 push하면 CI 시스템이 자동으로 빌드하고 테스트하여 통합 과정에서 발생할 수 있는 문제를 빠르게 확인하고 해결할 수 있도록 한다.

CD

CD는 Continuous Deployment, 지속적인 배포를 의미한다. 배포 프로세스가 자동화되어 즉시 프로덕션 환경에 배포된다.


Infrastructure as Code

Infrastructure as Code(IaC)는 코드로 인프라를 관리하는 개념이다.

인프라?
애플리케이션이 실행되는 기반 시스템과 환경을 의미한다. 물리적이거나 가상화된 하드웨어로 구성될 수 있다. 서버, 네트워크 장비, 데이터베이스, 스토리지, 보안 설정 등이 해당된다.

IaC는 코드로 구성되어 수작업을 줄일 수 있다. 텍스트 파일로 저장되어 버전을 관리할 수 있고, 코드를 통해 일관성 있는 인프라를 구현할 수 있다.

어떤 환경에서도 동일한 인프라 구성을 복사해서 사용할 수 있기 때문에, 개발, 테스트, 운영 환경에서 동일한 설정을 유지할 수 있다.

주요 도구

  • Terraform
  • AWS CloudFormation
  • Ansible

Monitoring & Logging

Monitoring

모니터링은 성능과 가용성을 실시간으로 추적한다. 시스템의 상태를 시각화하고, 성능 저하나 오류가 발생했을 때 신속하게 대응할 수 있다.

  • 리소스 사용 : CPU, 메모리, 대역폭, 디스크 사용량 등 리소스 과부화를 감지한다.
  • 성능 : 응답 시간, 쿼리 속도 등 성능을 추적하여 병목 현상을 파악한다.
  • 장애 감지 : 서버가 다운되거나 성능에 문제가 발생했을 때 알림을 보내 문제를 즉시 파악하게 한다.
  • 추세 분석 : 장기간의 모니터링 데이터를 바탕으로 성능을 최적화하고 향후 계획에 도움을 준다.

Logging

로깅은 애플리케이션이 실행되는 동안 발생한 이벤트나 트랜잭션 기록을 남기는 것이다. 로그 파일에는 동작 기록, 에러 메시지, 사용자 활동 내역 등이 포함된다. 문제 해결 및 분석에 데이터를 제공하여 시스템을 파악하는데 도움을 준다.

  • 오류 기록 : 오류 내용을 기록해 원인을 파악한다.
  • 활동 추적 : 사용자가 어떤 요청을 보냈는지 기록해 문제를 찾아낸다.
  • 성능 탐지 : 응답 시간과 오류를 분석해 성능 저하 원인을 찾는다.
  • 보안 감사 : 시스템 접근 기록과 작업을 기록해 보안 사고에 대응한다.

Reference

0개의 댓글