개발인생/etc

DevOps 알아보기(feat.docker)

forri 2025. 3. 19. 17:30
DevOps는 소프트웨어 개발(Development) 과 운영(Operation) 을 결합한 개념
단순히 Docker 같은 특정 도구만을 의미하는 게 아니라, 개발과 운영을 효율적으로 연결하는 문화, 프로세스, 그리고 도구를 모두 포함하는 개념이다.

 

DevOps의 주요 개념

  1. 자동화(Automation)
    • 반복적인 수작업을 줄이고, 개발과 배포를 자동화하는 것이 핵심.
    • CI/CD(Continuous Integration & Continuous Deployment) 파이프라인을 구축해서 코드가 변경될 때 자동으로 테스트하고 배포하는 방식.
  2. 협업(Collaboration)
    • 개발자(Dev)와 운영팀(Ops)이 긴밀하게 협력하여 빠르고 안정적인 배포를 가능하게 함.
    • 예전에는 개발과 운영이 따로따로 일했지만, DevOps에서는 함께 작업하면서 문제를 해결하는 문화를 가짐.
  3. 모니터링 및 피드백(Monitoring & Feedback)
    • 배포된 애플리케이션이 안정적으로 동작하는지 실시간으로 모니터링.
    • 로그 분석, 장애 감지 등을 통해 지속적으로 개선.

DevOps에서 자주 쓰이는 도구들

  1. 컨테이너화(Containerization)
    • Docker, Kubernetes(K8s) → 애플리케이션을 가상 환경에서 실행하도록 만들어줌.
  2. CI/CD(지속적 통합 & 지속적 배포)
    • Jenkins, GitHub Actions, GitLab CI/CD, CircleCI → 코드가 변경될 때 자동으로 빌드, 테스트, 배포 진행.
  3. 버전 관리
    • Git, GitHub, GitLab, Bitbucket → 코드 변경 사항을 추적하고 협업을 가능하게 함.
  4. 구성 관리(Configuration Management)
    • Ansible, Terraform, Chef, Puppet → 서버 설정 및 관리 자동화.
  5. 모니터링 & 로깅
    • Prometheus, Grafana, ELK Stack(Elasticsearch, Logstash, Kibana) → 시스템 성능 및 로그 모니터링.

Docker는 DevOps에서 어떤 역할을 할까?

Docker는 컨테이너를 이용해 애플리케이션을 어디서든 일관되게 실행할 수 있도록 만들어주는 도구임!

  • 개발 환경과 운영 환경의 차이를 없애고, "내 로컬에서는 잘 되는데 서버에서 안 돼!" 같은 문제를 해결함.
  • 여러 애플리케이션을 독립적으로 실행하고, Kubernetes 같은 오케스트레이션 도구와 함께 사용하면 대규모 시스템을 관리할 수 있음.